Join the Agent Deck Discord Server!
Discord에서 Agent Deck 커뮤니티 확인, 357명과 자유 음성·텍스트 채팅 이용
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기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.