尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Commonplace is a home for the lines that stay with you - quotes, poems, and passages worth keeping. Anyone can submit a line, and anyone can browse what others have kept. No accounts, no noise. Just words that mattered to someone once.
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗A public commonplace book: anyone can share a line, no account needed. Each line belongs to exactly one category and can name its source (an author, a book, or "Written by me"). Categories are created on the fly the first time someone uses a new name, and matching is case-insensitive, so "Poetry" and "poetry" are the same category. The home page shows a line of the day and the five categories with the most lines; Browse lists everything, with search by keyword or author.
The design follows the Commonplace Figma file; colors and fonts are tokens in
src/app/globals.css, and the logo is public/logo.svg.
pg, with attachDatabasePool for Vercel Fluid compute| Piece | Where |
|---|---|
| Schema (SQL migrations) | db/migrations/, applied by scripts/migrate.mjs |
| Posting a line (validation, honeypot, per-IP rate limit, category upsert) | src/app/actions.ts |
Cached reads, invalidated with the lines tag after every post | src/lib/queries.ts |
Share cards: rendered once with next/og, stored in the commonplace bucket, then served from storage | src/lib/cards.tsx, src/app/l/[id]/card/ |
| Live check of Postgres + storage | GET /api/health |
| Neon services for this branch (infrastructure as code) | neon.ts |
Routes: / (line of the day, top 5 categories), /browse (all lines; ?category=,
?q= search, ?before= paging), /submit (share a line), /about, /l/[id] (one
line, with its share card).
Requires Node 24 (nvm use).
npm install
neon env pull # writes DATABASE_URL, DATABASE_URL_UNPOOLED, AWS_* into .env.local
npm run db:migrate # applies any new db/migrations/*.sql
npm run dev
Optionally add IP_HASH_SALT (any random string) to .env.local to enable rate
limiting locally.
| Name | Purpose |
|---|---|
DATABASE_URL | Pooled Neon connection string (app traffic) |
DATABASE_URL_UNPOOLED | Direct connection, used only by npm run db:migrate |
AWS_ENDPOINT_URL_S3, AWS_REGION, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY | Neon Object Storage credentials |
IP_HASH_SALT | Secret for hashing poster IPs for rate limiting (5 lines per 10 minutes). Without it, rate limiting is off. |
On Vercel, set these for Production and Preview. The build prerenders pages from
the database, so DATABASE_URL must be available at build time.
Add a new numbered file such as db/migrations/002_something.sql (never edit one
that has already been applied), then run npm run db:migrate before deploying
code that depends on it. Test it on a Neon branch first: neon checkout dev --create.
Cards are cached forever by URL. After changing renderCard in
src/lib/cards.tsx, bump CARD_VERSION in src/lib/text.ts so every card is
regenerated under a new key and URL.