A modern, full-stack SaaS application for building professional resumes with AI assistance. Built with Next.js 15, React 19, and integrated with Stripe for subscription management, Clerk for authentication, and OpenAI for AI-powered content generation.
- Multi-step Form Builder: Intuitive step-by-step resume creation process using React Hook Form
- Drag-and-Drop Interface: Reorder sections and content with dnd-kit
- AI Auto-Fill: Generate professional summaries and work experience descriptions using OpenAI GPT
- Subscription Tiers: Multiple subscription levels with Stripe integration (Free, Pro, Pro Plus)
- Real-time Preview: Live preview of your resume as you edit
- Print & PDF Export: Save or print your resume using react-to-print
- Auto-save: Automatic saving of your work with debounced updates
- URL State Management: Shareable URLs with resume state in query parameters
- Mobile Responsive: Beautiful, responsive design with Tailwind CSS and Shadcn UI
- Dark Mode: Theme toggle for light/dark mode support
- File Uploads: Profile photo uploads to Vercel Blob storage
- Database Persistence: PostgreSQL database with Prisma ORM
- Next.js 15 - React framework with App Router
- React 19 - UI library
- TypeScript - Type safety
- Tailwind CSS - Utility-first CSS framework
- Shadcn UI - High-quality component library
- React Hook Form - Form state management
- Zod - Schema validation
- dnd-kit - Drag and drop functionality
- react-to-print - PDF/Print functionality
- Zustand - State management
- Next.js API Routes - Server-side API endpoints
- Prisma - Database ORM
- PostgreSQL - Relational database
- Clerk - Authentication and user management
- Stripe - Payment processing and subscriptions
- OpenAI API - AI content generation
- Vercel Blob - File storage
- Docker & Docker Compose - Database containerization
- ESLint - Code linting
- Prettier - Code formatting
Before you begin, ensure you have the following installed:
- Node.js 20.x or higher
- npm or yarn package manager
- Docker and Docker Compose (for local database)
- Git
-
Clone the repository
git clone https://github.com/chikkibum/ResumeMind.git cd ResumeMind -
Install dependencies
npm install # or yarn install -
Set up environment variables
Copy the
.env.examplefile to.env.local:cp .env.example .env.local
Fill in all the required environment variables (see Environment Variables section below).
-
Start the PostgreSQL database
npm run db:up # or docker compose up -d -
Set up the database schema
npm run db:push # or for migrations npm run db:migrate -
Generate Prisma Client
npm run db:generate
-
Start the development server
npm run dev
The application will be available at http://localhost:3000
Create a .env.local file in the root directory with the following variables:
POSTGRES_URL=postgresql://postgres:password@localhost:5432/mydb
POSTGRES_PRISMA_URL=postgresql://postgres:password@localhost:5432/mydb?pgbouncer=true
POSTGRES_URL_NO_SSL=postgresql://postgres:password@localhost:5432/mydb?sslmode=disable
POSTGRES_URL_NON_POOLING=postgresql://postgres:password@localhost:5432/mydb
POSTGRES_USER=postgres
POSTGRES_HOST=localhost
POSTGRES_PASSWORD=password
POSTGRES_DATABASE=mydbCLERK_SECRET_KEY=sk_test_...
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_test_...
NEXT_PUBLIC_CLERK_SIGN_IN_URL=/sign-in
NEXT_PUBLIC_CLERK_SIGN_UP_URL=/sign-upOPENAI_API_KEY=sk-...STRIPE_SECRET_KEY=sk_test_...
STRIPE_WEBHOOK_SECRET=whsec_...
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_test_...
NEXT_PUBLIC_STRIPE_PRICE_ID_PRO_MONTHLY=price_...
NEXT_PUBLIC_STRIPE_PRICE_ID_PRO_PLUS_MONTHLY=price_...BLOB_READ_WRITE_TOKEN=vercel_blob_...NEXT_PUBLIC_BASE_URL=http://localhost:3000The project includes a docker-compose.yml file for easy database setup:
# Start PostgreSQL container
npm run db:up
# or
docker compose up -d
# Stop PostgreSQL container
npm run db:down
# or
docker compose downIf you prefer to use a local PostgreSQL installation:
- Install PostgreSQL on your system
- Create a new database:
CREATE DATABASE mydb;
- Update the
POSTGRES_*environment variables in.env.localwith your database credentials
The database schema is defined in prisma/schema.prisma. Key models include:
- Resume - Main resume data with personal info, summary, and settings
- WorkExperience - Work history entries
- Education - Educational background
- UserSubscription - Stripe subscription management
To view and edit your database:
npm run db:studioβββ prisma/
β βββ schema.prisma # Database schema
βββ src/
β βββ app/
β β βββ (auth)/ # Authentication routes
β β β βββ sign-in/
β β β βββ sign-up/
β β βββ (main)/ # Main application routes
β β β βββ billing/ # Stripe subscription management
β β β βββ editor/ # Resume editor interface
β β β βββ resumes/ # Resume list and management
β β βββ api/
β β β βββ stripe-webhook/ # Stripe webhook handler
β β βββ layout.tsx # Root layout
β βββ components/
β β βββ premium/ # Premium subscription components
β β βββ ui/ # Shadcn UI components
β β βββ ResumePreview.tsx # Resume preview component
β βββ hooks/ # Custom React hooks
β βββ lib/ # Utility libraries
β β βββ prisma.ts # Prisma client
β β βββ stripe.ts # Stripe client
β β βββ openai.ts # OpenAI client
β β βββ subscription.ts # Subscription utilities
β βββ middleware.ts # Next.js middleware
βββ docker-compose.yml # Docker database setup
βββ next.config.ts # Next.js configuration
βββ tailwind.config.ts # Tailwind CSS configuration
βββ package.json # Dependencies and scripts
npm run dev- Start development servernpm run build- Build for productionnpm run start- Start production servernpm run lint- Run ESLintnpm run db:push- Push Prisma schema to databasenpm run db:generate- Generate Prisma Clientnpm run db:migrate- Run database migrationsnpm run db:studio- Open Prisma Studio (database GUI)npm run db:up- Start PostgreSQL with Dockernpm run db:down- Stop PostgreSQL container
- Push your code to GitHub
- Import your repository in Vercel
- Add all environment variables in Vercel dashboard
- Deploy!
Make sure to set all environment variables in your hosting platform:
- Update
NEXT_PUBLIC_BASE_URLto your production URL - Use production Stripe keys
- Configure production Clerk keys
- Set up production PostgreSQL database
- Configure Vercel Blob storage
- Create a webhook endpoint in Stripe Dashboard
- Point it to:
https://yourdomain.com/api/stripe-webhook - Select events:
checkout.session.completed,customer.subscription.created,customer.subscription.updated,customer.subscription.deleted - Copy the webhook secret to
STRIPE_WEBHOOK_SECRET
The application uses OpenAI's GPT models to help users:
- Generate professional resume summaries
- Create compelling work experience descriptions
- Improve content quality with AI suggestions
- Free: Basic resume creation
- Pro: Advanced features and unlimited resumes
- Pro Plus: All features plus priority support
Resume data is automatically saved as you type, with debouncing to prevent excessive API calls.
Resume state is stored in URL query parameters, allowing users to share direct links to specific resume configurations.
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is open source and available under the MIT License.
- Built with Next.js
- UI components from Shadcn UI
- Authentication by Clerk
- Payments by Stripe
- AI by OpenAI
For support, email support@resumemind.com or open an issue in the GitHub repository.
Made with β€οΈ by chikkibum