Roastume is a modern web application that allows users to share their resumes and receive constructive feedback ("roasts") from the community. Built with a unique comic-book inspired design, it makes the traditionally stressful process of resume feedback fun and engaging.
- Google OAuth integration via NextAuth.js
- Automatic profile creation and management
- Secure session handling with JWT
- Upload resumes (images & PDFs up to 10MB)
- Full CRUD operations (Create, Read, Update, Delete)
- File storage with Supabase Storage
- Owner-only edit/delete permissions
- Nested comment replies with threading
- Upvote/downvote system for comments
- Edit and delete own comments
- Three-dot menu for comment management
- Real-time comment counts
- Personal dashboard with user's resumes
- Resume statistics (likes, comments)
- Profile management and settings
- Mobile-first approach with responsive breakpoints
- Touch-friendly interface
- Hamburger menu for mobile navigation
- Comic book aesthetic with bold borders and shadows
- Next.js 15.2.4 - React framework with App Router
- React 19 - UI library with Server Components
- TypeScript 5 - Type safety and developer experience
- Tailwind CSS 4.1.9 - Utility-first CSS framework
- shadcn/ui - Component library (New York style)
- Radix UI - Headless UI primitives for accessibility
- Supabase - PostgreSQL database with real-time features
- NextAuth.js - Authentication system
- Row Level Security (RLS) - Database-level security
- Custom React Context - Modular state management
- Optimistic Updates - Immediate UI feedback
- localStorage - Client-side persistence
roastume/
βββ app/ # Next.js App Router
β βββ (roastume)/ # Main app routes
β β βββ profile/ # User profile page
β β βββ resume/[id]/ # Individual resume view
β β βββ upload/ # Resume upload page
β βββ api/ # API routes
β βββ auth/ # NextAuth.js
β βββ comments/ # Comment management
β βββ resumes/ # Resume CRUD
β βββ upload/ # File upload
βββ components/ # Reusable React components
β βββ ui/ # shadcn/ui components
β βββ enhanced-comment.tsx # Advanced comment system
β βββ my-resume-card.tsx # Owner resume controls
β βββ navbar.tsx # Responsive navigation
βββ lib/ # Utility libraries
β βββ store/ # Modular state management
β βββ api.ts # API client functions
β βββ auth.ts # Authentication config
βββ supabase-schema.sql # Database schema
- Node.js 18+ and pnpm
- Supabase account and project
- Google OAuth credentials
-
Clone the repository
git clone https://github.com/your-username/roastume.git cd roastume -
Install dependencies
pnpm install
-
Set up environment variables
cp .env.example .env.local
Fill in your environment variables:
# NextAuth.js NEXTAUTH_URL=http://localhost:3000 NEXTAUTH_SECRET=your-secret-key # Google OAuth GOOGLE_CLIENT_ID=your-google-client-id GOOGLE_CLIENT_SECRET=your-google-client-secret # Supabase NEXT_PUBLIC_SUPABASE_URL=your-supabase-url NEXT_PUBLIC_SUPABASE_ANON_KEY=your-supabase-anon-key # Server-only; do not expose in the browser SUPABASE_SERVICE_ROLE_KEY=your-service-role-key
-
Set up the database
# Run the SQL schema in your Supabase dashboard # File: supabase-schema.sql
-
Start the development server
pnpm dev
-
Open your browser Navigate to http://localhost:3000
The application uses a normalized PostgreSQL schema with the following tables:
- profiles - User profile information
- resumes - Resume metadata and files
- comments - Comments with reply threading
- comment_votes - Upvote/downvote tracking
- likes - Resume like tracking
All tables include Row Level Security (RLS) policies for data protection.
Roastume features a unique comic-book inspired design with:
- Bold Borders - 3-5px thick borders throughout
- Drop Shadows - Consistent shadow patterns for depth
- Vibrant Colors - Carefully chosen color palette
- Typography - Bangers (display) and Kalam (body) fonts
- Hover Effects - Translate and scale animations
- Responsive Layout - Mobile-first approach
GET/POST /api/auth/[...nextauth]- NextAuth.js endpoints
GET/POST /api/resumes- List/create resumesGET/PUT/DELETE /api/resumes/[id]- Individual resume operationsGET /api/resumes/my- User's own resumesPOST /api/resumes/[id]/comments- Add comments
GET/PUT/DELETE /api/comments/[id]- Comment CRUD operationsPOST /api/comments/[id]/vote- Vote on commentsGET/POST /api/comments/[id]/replies- Comment replies
POST /api/upload- File upload handling
The application is deployed on Vercel and can be accessed at: https://vercel.com/harishs-projects-883913b8/v0-roastume-website-ui
- Fork this repository
- Connect to Vercel
- Set up environment variables in Vercel dashboard
- Deploy!
Contributions are welcome! Please open an issue or PR. By contributing you agree to follow the Security and icon usage guidelines (use react-icons).
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with Next.js
- Database powered by Supabase
- UI components from shadcn/ui
- Icons from react-icons
- Fonts from Google Fonts
If you have any questions or need help, please open an issue or contact the maintainers.
Made with β€οΈ and lots of β by the Roastume team