GoodCraft Application Dashboard - Setup Complete! 🎉
Documents a completed Next.js 15 job-dashboard setup with Prisma, Catalyst UI, and 5 database models ready for feature development.
What this file does
Documents a completed Next.js 15 job-dashboard setup with Prisma, Catalyst UI, and 5 database models ready for feature development.
When to use it
- You have just scaffolded a Next.js + Prisma project and want a reference for what was built
- You need to hand off a project to another developer or agent with clear next steps
- You want to verify your own project structure matches a proven pattern
- You are planning to build a multi-tab dashboard with SQLite and need a schema example
Assumes this stack
GoodCraft Application Dashboard - Setup Complete! 🎉
Project Overview
A comprehensive job hunt tracking dashboard built with Next.js 15, Catalyst UI, and Prisma.
Location: /Users/nathan/code/work/goodcraft-application-dashboard
Tech Stack (Locked In ✅)
Core Framework
- Next.js 15 (App Router)
- React 19
- TypeScript 5.8+
- Tailwind CSS v4
UI Components
- Catalyst UI Kit - Professional components from Tailwind team
- All 27 components available in
src/components/ - Table, Badge, Button, Input, Select, Sidebar, etc.
- All 27 components available in
Database
- SQLite (development) - Easy local development
- Prisma ORM - Type-safe database client
- 5 models ready:
Application- Job applications trackerRevenueWeek- Weekly revenue trackingNetworkContact- Network/outreach trackerContentPost- Content calendarWeeklyReview- Weekly review system
Key Dependencies
{
"@headlessui/react": "^2.2.6",
"@heroicons/react": "^2.2.0",
"clsx": "^2.1.1",
"motion": "^12.23.11",
"next": "^15",
"react": "^19",
"prisma": "^6.18.0",
"@prisma/client": "^6.18.0"
}
What's Been Built
✅ Database Schema (5 Tabs)
All models defined in prisma/schema.prisma:
-
Job Applications - Track 50+ apps/week
- Fields: company, jobTitle, status, resumeVersion, source, etc.
-
Revenue Tracking - $8k/month goal
- Fields: tylerWorkHours, clientRevenue, templateSales, etc.
-
Network/Outreach - 5 contacts/week
- Fields: contactName, method, purpose, outcome, etc.
-
Content Calendar - 3 posts/week
- Fields: scheduledDate, topic, engagement metrics, etc.
-
Weekly Review - Friday check-ins
- Fields: jobApplications count, deepWorkHours, blockers, wins, etc.
✅ API Infrastructure
src/lib/api-client.ts- Generic fetch wrapper from job-search appsrc/lib/prisma.ts- Prisma client singleton (prevents multiple instances)src/app/api/applications/route.ts- GET and POST endpoints with filters
✅ First Page Built
src/app/applications/page.tsx- Uses Catalyst Table component
- Server-side rendering (RSC)
- Displays all applications with:
- Date Applied
- Company
- Job Title
- Resume Version
- Status (with color-coded badges)
- Source
✅ Type Definitions
src/types/application.ts- Includes: Application, CreateApplicationInput, ApplicationFilters
Project Structure
goodcraft-application-dashboard/
├── prisma/
│ ├── schema.prisma # 5 models for all tracking tabs
│ ├── migrations/ # Database migrations
│ └── dev.db # SQLite database
├── src/
│ ├── app/
│ │ ├── api/
│ │ │ └── applications/
│ │ │ └── route.ts # Applications API
│ │ ├── applications/
│ │ │ └── page.tsx # First tab UI
│ │ ├── (app)/ # Demo pages from Catalyst
│ │ ├── (auth)/ # Auth layouts from Catalyst
│ │ └── layout.tsx # Root layout
│ ├── components/ # All 27 Catalyst components
│ │ ├── table.tsx
│ │ ├── badge.tsx
│ │ ├── button.tsx
│ │ ├── input.tsx
│ │ ├── select.tsx
│ │ ├── sidebar.tsx
│ │ └── ...
│ ├── lib/
│ │ ├── api-client.ts # API utilities
│ │ └── prisma.ts # Database client
│ ├── types/
│ │ └── application.ts # Type definitions
│ └── styles/ # Tailwind config
├── .env # DATABASE_URL
└── package.json
How to Run
Start Development Server
cd /Users/nathan/code/work/goodcraft-application-dashboard
npm run dev
Visit: http://localhost:3000/applications
Build for Production
npm run build
npm start
Database Commands
# View database in Prisma Studio
npx prisma studio
# Create new migration after schema changes
npx prisma migrate dev --name your_migration_name
# Reset database (careful!)
npx prisma migrate reset
Next Steps - Ready for Feature Agents
Immediate Next Features (Priority Order)
-
Add Application Form (1-2 hours)
- Create
src/app/applications/new/page.tsx - Use Catalyst Input, Select, Fieldset components
- POST to
/api/applications - Redirect back to applications list
- Create
-
Build Revenue Tracking Tab (1-2 hours)
- Create
src/app/revenue/page.tsx - API route:
src/app/api/revenue/route.ts - Table showing weekly breakdown
- Calculate monthly totals and "On track?" indicator
- Create
-
Build Network/Outreach Tab (1 hour)
- Similar to applications
- Add "follow-up needed" filter
-
Build Content Calendar Tab (1 hour)
- Weekly view
- Checkboxes for completed posts
-
Build Weekly Review Tab (1 hour)
- Form for Friday reviews
- Display previous weeks
-
Add Dashboard Home (2 hours)
- Overview stats from all 5 tabs
- This week's progress
- Use Catalyst Stat component (in
src/app/stat.tsx)
-
Add Sidebar Navigation (1 hour)
- Use
src/components/sidebar-layout.tsx - Link all 5 tabs + dashboard
- Use
-
Filters & Search (2 hours)
- Add Catalyst Select dropdowns for filters
- Copy filter hook pattern from job-search app
Reference Code Available
From /Users/nathan/code/plan/job-search:
Already Copied:
- ✅
lib/api-client.ts- API wrapper
Ready to Copy:
features/job-search/hooks/use-job-fetcher.ts- State management patternfeatures/job-search/types.ts- Filter interfacesfeatures/job-search/services/serp-service.ts:8-33- Job board filtering logic (adaptable)
Database Schema Reference
Quick Add Data (for testing)
// In Prisma Studio or via API
{
company: "Acme Corp",
jobTitle: "Frontend Developer",
resumeVersion: "Frontend",
status: "Applied",
source: "LinkedIn",
dateApplied: new Date()
}
Status Options
- "Applied" (default)
- "Responded"
- "Interview"
- "Rejected"
- "Offer"
Resume Version Options
- "Webflow"
- "Frontend"
- "Full-Stack"
Catalyst Components You'll Use Most
| Component | File | Use Case |
|---|---|---|
| Table | table.tsx | All data lists |
| Badge | badge.tsx | Status indicators |
| Button | button.tsx | All actions |
| Input | input.tsx | Forms |
| Select | select.tsx | Dropdowns |
| Fieldset | fieldset.tsx | Form groups |
| Sidebar | sidebar.tsx | Navigation |
| Heading | heading.tsx | Page titles |
| Pagination | pagination.tsx | Large lists |
Docs: https://catalyst.tailwindui.com/docs
Build Status
✅ Build Successful
- No TypeScript errors
- No build errors
- 13 routes compiled
- First Load JS: ~173 KB (excellent)
Environment Variables
Current .env:
DATABASE_URL="file:./dev.db"
For production (PostgreSQL):
DATABASE_URL="postgresql://user:password@host:5432/dbname"
Then run: npx prisma migrate deploy
Migration from Job-Search App
Already migrated:
- ✅ API client pattern
- ✅ Project structure (Next.js 15 + TypeScript)
- ✅ Tailwind CSS setup
Different approach:
- ❌ Job-search had no database (state only)
- ✅ This has Prisma + SQLite (persistent)
- ❌ Job-search used SerpAPI
- ✅ This tracks manual entries
Key Differences from Requirements Doc
Upgrades:
- ✅ Using SQLite instead of Excel (easier to query, filter, chart)
- ✅ Web dashboard instead of spreadsheet (better UX)
- ✅ Professional UI from Catalyst (not custom CSS)
Still needed:
- ⏳ Resume version templates (will be reference docs)
- ⏳ Cover letter templates (will be reference docs)
- ⏳ Bookmark folder (browser-based, not in app)
- ⏳ Daily/weekly checklists (can be built in-app or kept as markdown)
Ready to Hand Off To:
- Feature Development Agent - Build remaining 4 tabs
- UI/UX Agent - Add sidebar navigation, dashboard home
- Data Import Agent - If you have existing Excel data to import
- Deployment Agent - When ready to deploy (Vercel recommended)
Success Metrics
The system is ready when you can:
- ✅ Track 50 applications/week (database supports unlimited)
- ✅ See response rate calculations (need to build analytics)
- ✅ Track revenue against $8k goal (need revenue tab)
- ✅ Monitor weekly reviews (need review tab)
- ✅ Access from any device (when deployed)
Commands Cheat Sheet
# Development
npm run dev # Start dev server
npm run build # Test production build
npm run lint # Check for errors
# Database
npx prisma studio # Visual database editor
npx prisma migrate dev # Create migration
npx prisma generate # Regenerate Prisma client
# Add dependencies
npm install <package>
Next Agent Handoff
Framework setup: ✅ COMPLETE
Ready for:
- Feature development (4 remaining tabs)
- Form building (add/edit applications)
- Navigation (sidebar with all tabs)
- Dashboard (overview stats)
- Filters & search
- Data visualization (charts for weekly goals)
Estimated time to MVP:
- 8-12 hours of development
- 5 tabs fully functional
- Sidebar navigation
- Basic dashboard
Let's build! 🚀
What's inside
14 sections covering tech stack, schema, API, project structure, run commands, next steps, and reference code
Change this for your project
- Replace
/Users/nathan/code/work/goodcraft-application-dashboardwith your own project path - Replace
DATABASE_URL="file:./dev.db"with your own database connection string for production - Replace
nathanworking/goodcraft-job-dashboardwith your own repository name - Replace the 5 model names and fields in
prisma/schema.prismawith your own tracking entities
Where it goes
Keep with your observability configuration. Describes what to track and alert on.
Worth borrowing
- Organising a handoff document into 'What's Been Built', 'Next Steps', and 'Reference Code Available' sections to reduce onboarding friction
- Using a single Prisma client singleton (
src/lib/prisma.ts) to prevent multiple instances in development - Listing Catalyst components with their file paths and use cases so new developers know exactly which UI parts to reuse
Related Documents
youtube
Lists 39 YouTube videos scraped from a Hacker News thread, each with a thumbnail, link, and description excerpt.
🚀 Lovable AI & Cloud - Complete Setup Guide
Guides developers through setting up Lovable AI and Cloud, from account creation to production deployment and real-world implementations.
Evaluation and Observability
Defines evaluation methodology, monitoring signals, and feedback loops for LLM applications in production.
LLM Judge — Setup & Operations
Explains how to enable and configure a three-tier LLM judge cascade for prompt-injection detection, with shadow-mode rollout and golden-set calibration.