Skip to content

A modern, full-stack CV builder application that allows users to create professional CVs with multiple templates and export them as PDF files.

License

Notifications You must be signed in to change notification settings

idmcalculus/cvflo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

6 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

CVFlo

A modern, full-stack CV builder application that allows users to create professional CVs with multiple templates and export them as PDF files.

๐Ÿš€ Features

  • 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

๐Ÿ› ๏ธ Tech Stack

Frontend

  • React 19 with TypeScript
  • Tailwind CSS 4.x for styling
  • Zustand for state management
  • Quill for rich text editing
  • Vite for development and building

Backend

  • Express.js with TypeScript
  • Bun runtime for performance
  • Puppeteer for PDF generation
  • Winston for logging
  • Helmet for security

๐Ÿ“ Project Structure

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

๐Ÿš€ Getting Started

Prerequisites

  • Bun (latest version)
  • Git

Installation

  1. Clone the repository:
git clone <repository-url>
cd cvflo
  1. Install dependencies:
# Install server dependencies
cd server
bun install

# Install client dependencies
cd ../client
bun install
  1. Set up environment variables:
# In server directory
cp .env.example .env
# Edit .env with your configuration
  1. 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
  1. Open your browser:
    • Application: http://localhost:3000
    • API: http://127.0.0.1:8000

๐Ÿ“ฆ Available Scripts

Server Scripts

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

Client Scripts

bun run dev          # Start development server
bun run build        # Build for production
bun run lint         # Run ESLint
bun run preview      # Preview production build

๐Ÿš€ Deployment

Railway (Recommended)

  1. Install Railway CLI:
npm install -g @railway/cli
  1. Deploy:
cd server
railway login
railway init
railway up

Other Platforms

  • Vercel: Deploy from /server directory
  • Render: Use Docker with Bun runtime
  • Google Cloud Run: Containerized deployment

๐Ÿงช Testing

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

๐Ÿ“„ API Documentation

Endpoints

  • POST /api/generate-pdf - Generate PDF from CV data
  • GET /api/health - Health check endpoint

Request Format

{
  "personalInfo": {
    "fullName": "John Doe",
    "email": "[email protected]",
    "phone": "+1234567890"
  },
  "workExperience": [...],
  "education": [...],
  "skills": [...],
  "template": "modern-0"
}

๐Ÿ”ง Configuration

Environment Variables

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

๐Ÿค Contributing

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Development Guidelines

  • Follow TypeScript best practices
  • Use existing code patterns and conventions
  • Add tests for new features
  • Ensure linting passes before committing
  • Update documentation as needed

๐Ÿ“ License

This project is licensed under the MIT License - see the LICENSE file for details.

๐Ÿ™ Acknowledgments

๐Ÿ› Issues and Support

If you encounter any issues or have questions:

  1. Check the Issues page
  2. Create a new issue with detailed information
  3. Include steps to reproduce the problem

๐Ÿ”ฎ Roadmap

  • 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

About

A modern, full-stack CV builder application that allows users to create professional CVs with multiple templates and export them as PDF files.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published