A full-stack application for generating CVs and cover letters using AI.
- Create and manage CV profiles
- Generate AI-powered cover letters using Google's Gemini LLM
- RESTful API with FastAPI backend
- Modern frontend interface
- Google AI API key
- Python 3.11
- uv (package manager)
- Clone the repository
- Install dependencies:
uv sync - Set up environment variables inside the
backend/.envfile - Run the application:
uv run backend/run.py - Run the frontend
POST /api/v1/cover-letters/generate- Generate a cover letter using AIGET /api/v1/cover-letters/user/{user_id}- Get user's cover lettersGET /api/v1/cover-letters/{cover_letter_id}- Get specific cover letterPUT /api/v1/cover-letters/{cover_letter_id}- Update cover letterDELETE /api/v1/cover-letters/{cover_letter_id}- Delete cover letter
- See API documentation at
http://localhost:8000/docswhen running
- Backend: FastAPI with SQLAlchemy ORM
- Database: SQLite
- AI Integration: Google Gemini 2.5 Flash for cover letter generation
- Frontend: JavaScript with modern components
The application follows clean architecture principles:
models/- Database modelsschemas/- Pydantic schemas for APIservices/- Business logic layerapi/routes/- API route handlerscore/- Configuration and dependencies
| Variable | Description | Required |
|---|---|---|
GOOGLE_API_KEY |
Google AI API key for cover letter generation | Yes |
DATABASE_URL |
Database connection string | No (defaults to SQLite) |
ALLOWED_HOSTS |
CORS allowed origins | No |
backend/
├── app/
│ ├── api/
│ │ ├── routes/
│ │ │ ├── cover_letter_routes.py
│ │ │ ├── cv_routes.py
│ │ │ ├── user_routes.py
│ │ │ └── __init__.py
│ │ ├── core/
│ │ │ ├── config.py
│ │ │ ├── database.py
│ │ │ ├── dependencies.py
│ │ │ ├── init_db.py
│ │ │ └── __init__.py
│ │ ├── models/
│ │ │ ├── cover_letter.py
│ │ │ ├── cv_profile.py
│ │ │ ├── user.py
│ │ │ └── __init__.py
│ │ ├── schemas/
│ │ │ ├── cover_letter.py
│ │ │ ├── cv_profile.py
│ │ │ ├── user.py
│ │ │ └── __init__.py
│ │ ├── services/
│ │ │ ├── cover_letter_service.py
│ │ │ ├── cv_service.py
│ │ │ ├── user_service.py
│ │ │ └── __init__.py
│ ├── __init__.py
│ └── main.py
├── run.py
└── .env
frontend/
├── js/
│ ├── services/
│ │ └── apiService.js # API communication layer
│ ├── state/
│ │ └── appState.js # Centralized state management
│ ├── utils/
│ │ └── helpers.js # Utility functions
│ ├── components/
│ │ ├── authComponent.js # Authentication logic
│ │ ├── navigationComponent.js # Navigation management
│ │ ├── profileComponent.js # Profile form handling
│ │ └── coverLetterComponent.js # Cover letter operations
│ └── app.js # Main application coordinator
├── index.html # Main HTML file
├── styles.css # Styles