A small space for words that stay.
A minimal poetry sharing web app built with Next.js App Router. No database required — uses in-memory JSON storage with a clear upgrade path to Vercel KV.
- Framework — Next.js 14 (App Router)
- Styling — Tailwind CSS + CSS variables
- Storage — In-memory JSON (
lib/store.js) → drop-in Vercel KV upgrade - AI — Anthropic Claude API (optional "Inspire me" feature)
- Deploy — Vercel
poets-core/
├── app/
│ ├── layout.js # root layout + metadata
│ ├── page.js # feed page (server component)
│ ├── write/
│ │ └── page.js # create poem (client component)
│ ├── poem/[id]/
│ │ └── page.js # poem detail page
│ └── api/
│ └── poems/
│ └── route.js # GET + POST /api/poems
├── components/
│ ├── Navbar.js
│ └── PoemCard.js
├── lib/
│ └── store.js # storage layer (swap for Vercel KV here)
├── styles/
│ └── globals.css
├── next.config.js
├── tailwind.config.js
└── vercel.json
npm install
npm run devOpen http://localhost:3000.
git init
git add .
git commit -m "initial commit"
git push origin mainThen import the repo at vercel.com.
| Version | Storage |
|---|---|
| v0 (now) | In-memory JSON — resets on redeploy |
| v1 | Vercel KV — persistent, serverless |
| v2 | Postgres / PlanetScale — full relational |
To upgrade to Vercel KV, replace getPoems() and addPoem() in lib/store.js with KV calls — the API routes stay the same.
- Likes (persistent)
- Comments
- Auth (NextAuth)
- User profiles
- Vercel KV storage