Chainlog — Launch Checklist
Last Updated: 2026-02-21
Status: Pre-launch MVP
âś… Completed (This Session)
UI Polish
- Better empty states with icons and improved copy
- Loading skeletons for dashboard, changelog list, and entry detail pages
- SubscribeButton component with “coming soon” modal
- Entry cards with better typography, hover effects, relative dates
- Hero section on public changelog page
- Sticky headers with backdrop blur
- Consistent footer with feed links
- Mobile-responsive improvements
- Fixed back links to use /changelog route
- Settings page placeholder (shows “coming soon” sections)
đź”´ Blockers (Must Fix Before Launch)
Critical
- Demo tenant issue: Public changelog returns 404 if no “demo” tenant exists
- Fix: Add DEFAULT_TENANT_SLUG env var or seed demo tenant
- Location:
apps/web/src/app/changelog/page.tsxline ~35
High Priority
- Clerk configuration: App needs Clerk publishable key to work
- Without it, auth doesn’t work and dashboard is inaccessible
- Set
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEYandCLERK_SECRET_KEY
🟡 Should Have (Before Public Launch)
Functionality
- Email subscriptions (currently shows “coming soon”)
- Need: Email provider integration (Resend/SendGrid)
- Need: Confirmation flow
- Need: Unsubscribe handling
- Team management UI
- Mobile sidebar collapse (hamburger menu)
Data & Content
- Seed initial taxonomy values (What/Why/Impact)
- Create sample changelog entries for demo
- Add favicon/og-image
Polish
- Pagination for entries (currently hard limit of 50)
- Date range picker for filtering
- Sort options on public changelog
🟢 Nice to Have (Post-Launch)
Features from Spec
- Configurable taxonomy (5-axis system)
- Entry versioning / audit trail
- Full-text search (currently ILIKE)
- REST API for entries
- API key management
- Webhook delivery
- Custom domain verification
- Entry templates
- Bulk operations
- Entry analytics
Polish
- Markdown editor with preview (currently plain textarea)
- Custom branding (apply brand_colors)
- Dark mode toggle
- Keyboard shortcuts
🚀 Deployment Checklist
Environment Variables
DATABASE_URL=postgresql://...
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_...
CLERK_SECRET_KEY=sk_...
DEFAULT_TENANT_SLUG=demo # Optional: fallback tenant
Database
- Run migrations:
pnpm db:migrate - Seed demo tenant and sample entries
Vercel
- Set environment variables
- Deploy from main branch
- Test public changelog at
/changelog - Test dashboard at
/dashboard
Architecture Notes
Current Stack
- Framework: Next.js 14 (App Router)
- Database: PostgreSQL (Neon) + Drizzle ORM
- Auth: Clerk
- Styling: Tailwind CSS + shadcn/ui
- API: Server Actions (no REST API yet)
File Structure
apps/
web/ # Next.js frontend + dashboard
api/ # Standalone API (partial, uses new taxonomy)
packages/
database/ # Shared Prisma schema (not used by web)
Key Files
- Schema:
apps/web/src/lib/db/schema.ts - Public changelog:
apps/web/src/app/changelog/page.tsx - Dashboard:
apps/web/src/app/dashboard/page.tsx - Entry form:
apps/web/src/components/dashboard/entry-form.tsx
Git Status
Branch: vercel-fix
Commits added:
74e6dc2- UI polish: better empty states, loading skeletons, and visual improvements84cb75c- Add settings page placeholder with coming soon sections
Ready to merge to main and deploy.