尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗Private Hebrew book library with discovery recommendations, for a small group of invited users. The web app is static HTML and ES modules; catalog and recommendation logic run in Supabase Edge Functions against a shared Postgres cache.
Product decisions live in docs/assignment.md. Technical design is in ARCHITECTURE.md and docs/architecture/.
| Source | Role |
|---|---|
| Simania (official MCP, no auth) | Hebrew catalog: search, details, covers, community rating. Shelves hold Simania books only. |
| Hardcover (GraphQL, server secret) | Canonical work identity, similarity lists, genres and moods for recommendations. |
| Wikidata, NLI (fallback) | Bridge Hebrew titles and original titles in both directions. |
Provider secrets (for example HARDCOVER_API_KEY) stay in a local env file and never reach the browser.
public/): talks to Supabase Auth and Postgres via supabase-js; no direct calls to Simania, Hardcover, Wikidata or NLI.supabase/functions/): add-book, book-details, recommendations, link-edition, invite-user, plus shared code in _shared/. Simania is called from the browser (public/js/simania.js) because its Cloudflare blocks Supabase server IPs.supabase/migrations/): shared catalog cache and per-user library tables with RLS.public/ web app (static files)
design/library.html approved visual design (reference)
prototype/test-page.html earlier test page (reference)
supabase/migrations/ SQL migrations
supabase/tests/ pgTAP database tests
supabase/functions/<name>/ one folder per Edge Function
supabase/functions/_shared/ shared Deno code; types.ts is the contract
tests/functions/ Deno unit tests (mocked fetch)
tests/web/ node --test for pure web modules
scripts/ verification and local serve helpers
docs/contract.md interface contract between lanes
tasks/ harness task briefs
harness.yaml settings for the agent harness (installed separately)
Requirements: Docker Desktop and Node.js (LTS).
Install dependencies:
npm ci
Start the local Supabase stack once (API on port 54321, Studio on 54323). All harness worktrees share this stack:
npm run supabase:start
Serve Edge Functions with your secrets file (must include HARDCOVER_API_KEY). By default the serve script looks for ../book-discovery-plan/.env.local; override with BOOKNOOK_ENV_FILE:
# bash
export BOOKNOOK_ENV_FILE=/path/to/.env.local
npm run functions:serve
# PowerShell
$env:BOOKNOOK_ENV_FILE = "C:\path\to\.env.local"
npm run functions:serve
See supabase/functions/.env.example for the expected variable names.
Serve the web app:
npm run web:serve
Open http://127.0.0.1:4175.
Inviting users and resetting the database locally are described in docs/setup.md.
| Command | What it does |
|---|---|
npm run check:functions | Deno type-check all Edge Functions |
npm run test:functions | Deno unit tests (tests/functions/, stubbed fetch) |
npm run test:web | node --test for pure web modules |
npm run test:db | supabase db reset then pgTAP tests (needs local stack) |
npm run check:contract | Contract presence check |
npm run verify:integration | Integration gate against local stack and live APIs |
Automated tests do not call Simania, Hardcover, Wikidata or NLI; only the integration gate does.
Development tasks are executed by the agent harness (the harness command, from the private agent-harness repo) from task briefs under tasks/. Typical commands:
harness status
harness run <SPRINT>
harness resume <SPRINT>
harness failure <SPRINT>
Full orchestration details, safety rules and CLI reference: README.md and HARNESS-OPERATOR.md in the agent-harness repo.