- JWT-based auth with access tokens (15m) and refresh tokens (7d)
- User registration, login, logout, and /auth/me endpoints
- Three roles: admin, recruiter, hiring_manager with middleware enforcement
- users and refresh_tokens tables with bcrypt password hashing
- Login and Register pages with full form validation
- Protected routes — unauthenticated users redirect to /login
- Dashboard upgraded: real metrics, pipeline overview with progress bars,
recent activity feed with 30s polling, and quick-action cards
- Dashboard API endpoints: /api/dashboard/metrics, pipeline-summary, recent-activity
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- AI-powered CV parsing (regex extraction of skills, experience, education)
- Multi-channel job posting (LinkedIn, Indeed, Arbetsförmedlingen, Glassdoor, company site)
- Collaborative hiring scorecards with 5-criteria scoring system
- Dashboard with live stats (candidates, jobs, applications, scorecards)
- PostgreSQL schema for candidates, jobs, applications, scorecards
- REST API for all CRUD operations
- React UI with shadcn/ui components throughout
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
nodemon now watches both server.js and client/src/. On any change,
it rebuilds the React app and restarts Express — so git push makes
both backend AND frontend changes visible on the hot domain.
- dev script simplified to "nodemon" (reads nodemon.json config)
- dev:local added for human developers who want Vite HMR
- Node.js Express application with modern white UI
- PostgreSQL and Redis integration
- Docker Compose configuration without host port mappings
- Traefik-ready with proper labels
- Health check endpoint
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>