A modern, full-stack CV builder application that allows users to create professional CVs with multiple templates and export them as PDF files.
- Modern UI: Clean, responsive interface built with React 19 and Tailwind CSS
- Multiple Templates: Choose from Classic, Modern, and Academic CV templates
- Real-time Preview: See your CV update in real-time as you edit
- Rich Text Editor: Quill-powered editor for detailed descriptions
- PDF Export: High-quality PDF generation with professional formatting
- Auto-save: Automatic persistence of your work
- Section Management: Toggle CV sections on/off for customization
- Form Validation: Comprehensive input validation and error handling
- React 19 with TypeScript
- Tailwind CSS 4.x for styling
- Zustand for state management
- Quill for rich text editing
- Vite for development and building
- Express.js with TypeScript
- Bun runtime for performance
- Puppeteer for PDF generation
- Winston for logging
- Helmet for security
cvflo/
โโโ client/ # React frontend
โ โโโ src/
โ โ โโโ components/ # React components
โ โ โโโ store/ # Zustand store
โ โ โโโ types/ # TypeScript definitions
โ โโโ ...
โโโ server/ # Express backend
โ โโโ src/
โ โ โโโ controllers/ # API controllers
โ โ โโโ services/ # Business logic
โ โ โโโ middleware/ # Express middleware
โ โ โโโ utils/ # Utility functions
โ โโโ templates/ # PDF templates
โโโ README.md
- Bun (latest version)
- Git
- Clone the repository:
git clone <repository-url>
cd cvflo
- Install dependencies:
# Install server dependencies
cd server
bun install
# Install client dependencies
cd ../client
bun install
- Set up environment variables:
# In server directory
cp .env.example .env
# Edit .env with your configuration
- Start development servers:
# Option 1: Full-stack development (recommended)
cd server
bun run dev:full
# Option 2: Separate terminals
# Terminal 1 - Backend
cd server
bun run dev
# Terminal 2 - Frontend
cd client
bun run dev
- Open your browser:
- Application:
http://localhost:3000
- API:
http://127.0.0.1:8000
- Application:
bun run dev # Start development server with hot reload
bun run start # Start production server
bun run build # Build TypeScript
bun run test # Run tests
bun run dev:full # Build client + start server (full-stack dev)
bun run start:full # Build client + start production server
bun run dev # Start development server
bun run build # Build for production
bun run lint # Run ESLint
bun run preview # Preview production build
- Install Railway CLI:
npm install -g @railway/cli
- Deploy:
cd server
railway login
railway init
railway up
- Vercel: Deploy from
/server
directory - Render: Use Docker with Bun runtime
- Google Cloud Run: Containerized deployment
Run the test suite:
cd server
bun run test # Run all tests
bun run test:watch # Run tests in watch mode
bun run test:coverage # Run tests with coverage
POST /api/generate-pdf
- Generate PDF from CV dataGET /api/health
- Health check endpoint
{
"personalInfo": {
"fullName": "John Doe",
"email": "[email protected]",
"phone": "+1234567890"
},
"workExperience": [...],
"education": [...],
"skills": [...],
"template": "modern-0"
}
Variable | Description | Default |
---|---|---|
PORT |
Server port | 5001 |
NODE_ENV |
Environment | development |
CLIENT_URL |
Frontend URL for CORS | http://localhost:3000 |
RATE_LIMIT_WINDOW_MS |
Rate limit window | 900000 |
RATE_LIMIT_MAX |
Max requests per window | 100 |
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
- Follow TypeScript best practices
- Use existing code patterns and conventions
- Add tests for new features
- Ensure linting passes before committing
- Update documentation as needed
This project is licensed under the MIT License - see the LICENSE file for details.
- Puppeteer for PDF generation
- Quill for rich text editing
- Tailwind CSS for styling
- Zustand for state management
If you encounter any issues or have questions:
- Check the Issues page
- Create a new issue with detailed information
- Include steps to reproduce the problem
- User authentication and accounts
- Template customization
- Multiple CV management
- Export to different formats (Word, HTML)
- Social media integration
- Advanced analytics
Built with โค๏ธ using Bun, React, and TypeScript