A Linktree-style app, but time-native. A single public page showing an immutable, chronological list of entries.
- Framework: Next.js (App Router)
- Language: TypeScript
- Styling: Tailwind CSS
- Database: SQLite via Prisma
- Icons: Lucide React
- Append-only: Entries can be created but never edited or deleted.
- Chronological: Ordered by date (newest first by default).
- Brutalist UI: Minimal, black/white, typographic.
Create a .env file in the root directory and add:
ADMIN_PASSWORD=your_secure_password_herenpm installInitialize the SQLite database and generate the Prisma client:
npx prisma db pushPopulate the timeline with sample entries:
npx prisma db seednpm run devOpen http://localhost:3000 to see the result.
To add new entries, navigate to /admin and enter the password configured in your .env file.
- Site Title/Subtitle: Change these in
src/app/page.tsxandsrc/app/layout.tsx. - Styling: Modify
tailwind.config.tsandsrc/app/globals.cssfor visual changes. - Constraints: Max title length (80 chars) and consequence length (160 chars) are enforced in the admin form and API.
GET /api/entries: Fetch all entries (public).POST /api/entries: Create a new entry (admin only, requiresx-admin-passwordheader).