Personal developer project dashboard. Single-user, publicly readable.
- Next.js 15 — app router, ISR
- TypeScript
- Tailwind CSS + Geist Mono
- Turso (SQLite via
@libsql/client) - Vercel — deployment
npm install
cp .env.example .env.local # fill in your values
npm run dev| Variable | Description |
|---|---|
TURSO_DATABASE_URL |
Turso database URL |
TURSO_AUTH_TOKEN |
Turso auth token |
ADMIN_PASSWORD |
Admin login password |
SESSION_SECRET |
HMAC signing secret (≥32 chars) |
NEXT_PUBLIC_OWNER_NAME |
Your name (public) |
NEXT_PUBLIC_TAGLINE |
Site tagline (public) |
npm run dev # start dev server
npm run build # production build
npm run lint # lintapp/
page.tsx public dashboard
projects/[slug]/page.tsx project detail
admin/ protected admin UI
api/ REST API routes
components/
status-badge.tsx
tech-stack-list.tsx
project-card.tsx
admin/project-form.tsx
admin/project-table.tsx
lib/
db.ts, auth.ts, projects.ts, utils.ts
middleware.ts auth guard for /admin/*
types/index.ts
/admin/* is protected by middleware.ts. Login at /admin with ADMIN_PASSWORD. Session cookie is signed with HMAC-SHA256 (Edge-compatible).