A full-stack CV/resume builder application with React frontend and Node.js/Express backend.
.
├── backend/ # Node.js/Express server
└── frontend/ # React client application
- User authentication (registration, login, logout)
- Create, edit, and manage multiple resumes
- Professional resume templates
- Export resumes as PDF
- Stripe payment integration for premium features
- React.js
- Redux for state management
- Material-UI for UI components
- Axios for HTTP requests
- Formik & Yup for form validation
- Node.js
- Express.js
- MongoDB with Mongoose
- JWT for authentication
- Stripe for payment processing
- Swagger for API documentation
- Node.js (v14 or higher)
- MongoDB
- pnpm (recommended) or npm or yarn
-
Navigate to the backend directory:
cd backend -
Install dependencies:
npm install
or with pnpm:
pnpm install
-
Create a
.envfile in the backend directory with the following variables:PORT=5000 MONGODB_URI=your_mongodb_connection_string JWT_SECRET=your_jwt_secret STRIPE_SECRET_KEY=your_stripe_secret_key CLIENT_URL=http://localhost:3000 -
Start the server:
npm start
or for development with nodemon:
npm run dev
With pnpm:
pnpm start
or for development:
pnpm run dev
To build for production:
pnpm run build
-
Navigate to the frontend directory:
cd frontend -
Install dependencies:
npm install
or with pnpm:
pnpm install
-
Create a
.envfile in the frontend directory with the following variables:REACT_APP_API_URL=http://localhost:5000/api REACT_APP_STRIPE_PUBLISHABLE_KEY=your_stripe_publishable_key -
Start the development server:
npm start
With pnpm:
pnpm start
or for development:
pnpm run dev
To build for production:
pnpm run build
- Start both the backend and frontend servers
- Open your browser and navigate to
http://localhost:3000 - Register a new account or login with existing credentials
- Create and customize your resume using the intuitive editor
- Preview and export your resume as PDF
The backend API is documented with Swagger. When the server is running, visit:
http://localhost:5000/api-docs
PORT: Server port (default: 5000)MONGODB_URI: MongoDB connection stringJWT_SECRET: Secret key for JWT token signingSTRIPE_SECRET_KEY: Stripe secret key for payment processingCLIENT_URL: Frontend application URL
REACT_APP_API_URL: Backend API base URLREACT_APP_STRIPE_PUBLISHABLE_KEY: Stripe publishable key
backend/
├── controllers/ # Request handlers
├── middlewares/ # Custom middleware functions
├── models/ # Mongoose models
├── routes/ # API route definitions
├── utils/ # Utility functions
├── validations/ # Input validation schemas
├── app.js # Express application setup
└── server.js # Server entry point
frontend/
├── public/ # Static assets
├── src/
│ ├── components/ # Reusable UI components
│ ├── layout/ # Page layouts
│ ├── pages/ # Page components
│ ├── redux/ # Redux store and slices
│ ├── routes/ # Application routing
│ ├── services/ # API service functions
│ ├── utils/ # Utility functions
│ ├── App.js # Root component
│ └── index.js # Entry point
└── package.json
- Fork the repository
- Create a 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 licensed under the MIT License - see the LICENSE file for details.
For support or queries, please contact the project maintainers.