A phased plan to take HireTrack from its current state (working login + dashboard + create/edit loop) to a complete product. Each item is tied to a concrete gap in the codebase. Phases are ordered by priority; items within a phase are roughly independent.
Working: Supabase auth (login, demo login, logout), protected dashboard with metric cards, create/edit applications via slide-over (Server Actions), recent-applications table, reusable UI kit.
Not yet built: delete flow, the /applications, /interviews, /settings, /signup routes (all linked in the UI today), interviews module, auth middleware, tests/CI, version-controlled DB schema.
Everything here is already linked or half-wired in the UI; finishing it removes all dead ends.
- Delete application — add
deleteApplicationActiontosrc/actions/applicationActions.ts, a confirm dialog, and wire the existingTABLE_ACTIONS.DELETEcase inRecentApplicationsTable.tsx(currently a no-op). /applicationspage — full list view backing the sidebar link and the table's "View all" link: pagination, status filter, text search, column sort. Reuse the table,StatusBadge, andDropdownprimitives.- Signup —
/signuproute reusing the login UI with a mode flag (per the TODO inlogin/page.tsx), viasupabase.auth.signUpwith email confirmation. - Auth hardening — add
middleware.tswith the standard@supabase/ssrsession-refresh pattern; redirect already-authenticated users from/loginto/dashboard(existing TODO). - Empty states & loading — empty state for the applications table, full-page loader for protected pages (existing TODOs in
dashboard/page.tsxandRecentApplicationsTable.tsx).
The second entity the product implies; the sidebar link and dashboard panel already reserve space for it.
- Data model —
interviewstable (FK →applications.id, RLS mirroringapplications): round/type,scheduled_at, location/link, notes, outcome. Types insrc/types/, CRUD Server Actions insrc/actions/, read helpers insrc/lib/db/. /interviewspage + dashboard panel — upcoming-interviews list replacing the placeholder text indashboard/page.tsx, full page with past/upcoming grouping.- Pipeline integration — surface an application's interviews in the edit slide-over; optionally prompt to schedule an interview when status moves to an interview stage.
/settingspage — profile (display name, avatar image —Avatar.tsxTODO), password change, sign out, and account deletion / data export.
Parallel-friendly; can be done alongside any feature phase.
- Version-controlled schema —
supabase/migrations/with DDL + RLS policies forapplications(andinterviews), plus a committed.env.example. - Tests — Vitest + React Testing Library for
src/lib/helpers and UI primitives; a Playwright smoke test covering login → create → edit → delete. - CI — GitHub Actions running lint, typecheck (
tsc --noEmit), build, and tests on PRs. - Cleanup — remove the stale
tailwind.config.ts, set proper metadata/favicon (app/layout.tsxTODO), move demo creds out of source into env.
- Responsive + accessible — mobile layout for sidebar/table/slide-over; keyboard navigation and ARIA pass (README goals).
- Kanban pipeline view — drag-and-drop board of applications by status; natural fit for the existing stage model.
- Insights — conversion funnel per stage, time-in-stage, applications-over-time chart.
- Follow-up nudges — highlight stale applications (no status change in N days) on the dashboard.
Calendar integration for interviews, resume/document manager, activity history per application, CSV/JSON export.