Aether

poets-core

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.

Stack

Project Structure

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

Getting Started

npm install
npm run dev

Open http://localhost:3000.

Deploy to Vercel

git init
git add .
git commit -m "initial commit"
git push origin main

Then import the repo at vercel.com.

Upgrade Path

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.

Roadmap