Back to .md Directory

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.

May 2, 2026
0 downloads
1 views
ai
View source

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

Next.js 15React 19TypeScript 5.8+Tailwind CSS v4Prisma ORMSQLite

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.

Database

  • SQLite (development) - Easy local development
  • Prisma ORM - Type-safe database client
  • 5 models ready:
    • Application - Job applications tracker
    • RevenueWeek - Weekly revenue tracking
    • NetworkContact - Network/outreach tracker
    • ContentPost - Content calendar
    • WeeklyReview - 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:

  1. Job Applications - Track 50+ apps/week

    • Fields: company, jobTitle, status, resumeVersion, source, etc.
  2. Revenue Tracking - $8k/month goal

    • Fields: tylerWorkHours, clientRevenue, templateSales, etc.
  3. Network/Outreach - 5 contacts/week

    • Fields: contactName, method, purpose, outcome, etc.
  4. Content Calendar - 3 posts/week

    • Fields: scheduledDate, topic, engagement metrics, etc.
  5. 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 app
  • src/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)

  1. 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
  2. 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
  3. Build Network/Outreach Tab (1 hour)

    • Similar to applications
    • Add "follow-up needed" filter
  4. Build Content Calendar Tab (1 hour)

    • Weekly view
    • Checkboxes for completed posts
  5. Build Weekly Review Tab (1 hour)

    • Form for Friday reviews
    • Display previous weeks
  6. Add Dashboard Home (2 hours)

    • Overview stats from all 5 tabs
    • This week's progress
    • Use Catalyst Stat component (in src/app/stat.tsx)
  7. Add Sidebar Navigation (1 hour)

    • Use src/components/sidebar-layout.tsx
    • Link all 5 tabs + dashboard
  8. 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 pattern
  • features/job-search/types.ts - Filter interfaces
  • features/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

ComponentFileUse Case
Tabletable.tsxAll data lists
Badgebadge.tsxStatus indicators
Buttonbutton.tsxAll actions
Inputinput.tsxForms
Selectselect.tsxDropdowns
Fieldsetfieldset.tsxForm groups
Sidebarsidebar.tsxNavigation
Headingheading.tsxPage titles
Paginationpagination.tsxLarge 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:

  1. Feature Development Agent - Build remaining 4 tabs
  2. UI/UX Agent - Add sidebar navigation, dashboard home
  3. Data Import Agent - If you have existing Excel data to import
  4. 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-dashboard with your own project path
  • Replace DATABASE_URL="file:./dev.db" with your own database connection string for production
  • Replace nathanworking/goodcraft-job-dashboard with your own repository name
  • Replace the 5 model names and fields in prisma/schema.prisma with 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