A competitive resume review platform that gamifies professional feedback through head-to-head battles
Built by @tinbetee and @jonathan-imanu
Getting actionable, crowd-sourced feedback on resumes is hard. Discord servers and forums exist, but they lack a structured or engaging way to see how your resume actually stacks up against others.
CrackedOnPaper turns resume reviews into a head-to-head competition. Your resume is matched against another candidate's in a "battle," where users vote on which is more impressive ("cracked").
Resumes are anonymized and paired by industry and years of experience (YOE), ensuring fair matchups. After uploading, you'll unlock access to:
- Candid, community feedback on your resume
- Head-to-head comparisons that show how you perform against real candidates
- Statistics and leaderboards so you can track your progress and see where you stand
- ELO rating system for competitive ranking
- Framework:
Next.js - Language:
TypeScript - Styling:
Tailwind CSS - UI Components: ShadCN/ui · MagicUI · Radix UI
- Authentication: Supabase Auth with JWT tokens
- Database:
PostgreSQL with SQLC via Supabase - File Storage:
DigitalOcean Spaces with CDN - Deployment:
Docker Compose with
Nginx
- Client-side PDF rendering with zoom, pan, and rotation
- Server-side PDF to image conversion with quality optimization
- Interactive annotation system with coordinate mapping
- WebP conversion for optimal performance
- ELO rating system for fair matchups
- Industry and experience-based pairing algorithms
- Real-time battle statistics and leaderboards
- Anonymized resume comparisons
- Detailed annotation system for resume feedback
- Anonymous review system with generated reviewer names
- Review request management with expiration
- JSONB storage for complex annotation data
- Type-safe database queries with SQLC
- JWT-based authentication with secure middleware
- RESTful API design with proper error handling
- Docker containerization for easy deployment
- Node.js 18+ and npm
- Go 1.24+
- Docker and Docker Compose
- PostgreSQL (or use Supabase)
The project includes convenient development scripts for both Unix/macOS and Windows systems:
Unix/macOS (cop script):
# Make executable and run
chmod +x cop
./cop dev # Start development environment
./cop prod # Start production environment
./cop logs # View logs
./cop stop # Stop servicesWindows (cop.bat script):
cop.bat dev # Start development environment
cop.bat prod # Start production environment
cop.bat logs # View logs
cop.bat stop # Stop services-
Clone the repository
git clone <repository-url> cd CrackedOnPaper
-
Backend Setup
cd backend go mod download cp .env.example .env # Configure your environment variables go run main.go
-
Frontend Setup
cd frontend npm install cp .env.local.example .env.local # Configure your environment variables npm run dev
-
Database Setup
# Run the schema migrations psql -d your_database -f backend/db/schema.sql
Backend (.env)
DATABASE_URL=postgresql://user:password@localhost:5432/crackedonpaper
JWT_SECRET=your-jwt-secret
AWS_ACCESS_KEY_ID=your-access-key
AWS_SECRET_ACCESS_KEY=your-secret-key
AWS_BUCKET_NAME=your-bucket-name
AWS_REGION=your-regionFrontend (.env.local)
NEXT_PUBLIC_API_URL=http://localhost:8080
NEXT_PUBLIC_SUPABASE_URL=your-supabase-url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-supabase-anon-key# Start all services
docker-compose up -d
# View logs
docker-compose logs -f
# Stop services
docker-compose down