Build Your Perfect CV in Minutes. Create a professional, ATS-friendly resume with this intuitive CV builder. Real-time preview, instant PDF export, and beautiful formatting.
- Real-time Preview (See your changes instantly as you type. What you see is exactly what you get in your final PDF)
- Professional Layout (Clean, modern design that hiring managers love. Perfect A4 formatting optimized for ATS systems)
- Instant PDF Export (Download your CV as a professional PDF with one click. Ready to send to employers immediately)
- Auto-Save (Never lose your work. Your CV is automatically saved as you type, keeping your data secure.)
- Landing Page:
- CV Builder page preview.
- PDF format of the CV i built with this app.
- Settings Page (functionallity not yet implemented)
- Backend : Java Spring Boot (Maven, Spring Security, JWT-authentication)
- Frontend : React.js, TypeScript, Vite
- Database : MongoDB
- Other : IntelliJ IDEA, Postman Api Testing, Git
cv-builder/
├── backend/ Spring Boot API (Java + Maven)
│ ├── src/
│ ├── pom.xml
│ └── ...
├── frontend/ React (Vite) client
│ ├── src/
│ ├── package.json
│ └── ...
└── .gitignore
git clone https://github.com/AlberthMartin/cv-builder.git- Open the root foler in IntelliJ IDEA.
- IDEA will auto detect backend as a Maven project and frontend as a Node.js project.
- You'll get both Spring Boot run configs and npm run scripts in the same IDE window
- You can now open two terminals inside IntelliJ, one in backend/ and one in frontend/
cd backend
mvn clean install
mvn spring-boot:run- Default URL http://localhost:8080
- To change the port, edit src/main/resources/application.properties
There is an application.properties.example, remember to create an application.properties file and fill in the needed information.
spring.application.name=cvbuilder
# Server Port
server.port = 8080
# MongoDB Connection String
spring.data.mongodb.uri = MONGODB_CONNECTION_STRING_HERE
# API Base Path
api.prefix = /api/v1
## 1 hour
auth.token.expirationInMils = 3600000
## JWT Secret Key
auth.token.jwtSecret = your_jwt_secret_key_hereIn a new terminal window/tab:
cd frontend
npm install
npm run dev-
Default URL: http://localhost:5173, it needs to be this port for it to be able to communicate with the backend
-
If you configured your backend to run on an other port than 8081, you need to change this in vite.config.ts.
- Frontend (Vite + React + TypeScript) handles UI, routing, and API calls.
- Backend (Spring Boot) exposes REST endpoints for authentication and data persistence.
- Database (MongoDB) stores user and CV data.
| Method | Endpoint | Description | Auth Required |
|---|---|---|---|
POST |
/api/v1/auth/login |
Log in and receive JWT token | no |
POST |
/api/v1/auth/logout |
Log in and receive JWT token | no |
POST |
/api/v1/user/register |
Register a new user | no |
| Method | Endpoint | Description | Auth Required |
|---|---|---|---|
GET |
/api/v1/user/me |
Get current user details including CV Data and settings | yes |
PUT |
/api/v1/user/me |
Update CV Data | yes |
{
"_id": "123",
"email": "alberth.martin01@gmail.c",
"password": "ENCRYPTED",
"cvData": {
"personalInfo": {
"name": "Alberth Martin",
"CVemail": "alberth.martin01@gmail.comv",
"title": "Master’s Student in Computer Engineering",
"phone": "+358401915419",
"location": "Turku, Finland",
"linkedin": "www.linkedin.com/in/alberth-martin-36aa47261",
"github": "https://github.com/AlberthMartin",
"website": "https://portfolio-website-2v0x.onrender.com/"
},
"summary": "Core computer science combined with engineering courses has strengthened my problem-solving skills and teamwork abilities during...",
"education": [
{
"_id": "1762079090653",
"degree": "Bachelor’s Degree in Computer Engineering with Honours",
"institution": "Åbo Akademi",
"fromDate": "Sep 2022",
"toDate": "Jun 2025",
"gpa": "4.06/ 5",
"description": "Algorithms & Data Structures, Software Engineering & Requirements Analysis, Object Oriented Design and Databases.\nMost of my university coursework was carried out in Java, often in collaborative team settings.\nThesis on \"Using Convolutional Neural Networks for Network Intrusion Detection” Graded (5/5)"
},
{
"_id": "1762079746843",
"degree": "Master’s Degree in Computer Engineering",
"institution": "Åbo Akademi",
"fromDate": "Sep 2025",
"toDate": "Present",
"description": "Planned coursework includes: Software Engineering (Testing, Quality, Security), Scalable Software Systems (Cloud Computing (AWS), Parallel & GPU Programming) and Cyber Security."
}
],
"projects": [
{
"_id": "1762079866703",
"title": "Training Management System",
"description": "Full-stack web app with authentication for managing personalized workouts, logging sessions, and tracking completed workouts and statistics.",
"techStack": "Node.js, MongoDB, React.js, ChakraUI, JWT-authentication, Express, Git",
"link": "https://youtu.be/xExpPqn2YX4"
},
{
"_id": "1762090206544",
"title": "Parking Rental App (Startup) — Backend Developer",
"description": "Developing a Java Spring Boot API backend with MySQL database for an AirBnB-like parking rental platform.\nTesting API via Postman and collaborating in a team environment.",
"techStack": "Java Spring Boot, Spring Security, MySQL, JWT-authentication, REST API, Postman, Git",
"link": "https://github.com/Forsander/Parking-Group-Project"
}
],
"experience": [
{
"_id": "1762091599696",
"name": "Software Developer (Freelance)",
"description": "Built a professional website for a law firm from the ground up. (https://bouppteckning.fi/)\nDelivered a smart home automation system using Home Assistant, integrating over 50 smart\ndevices (lights, sensors, speakers, switches) into an intuitive dashboard.",
"skills": "React.js, Home Assistant, Requirements Engineering, Client Collaboration",
"fromDate": "Apr 2025",
"toDate": "Aug 2025"
}
],
"skills": [
{
"_id": "1762079207624",
"category": "Programming Languages",
"skills": "Java, Javascript, Python"
},
{
"_id": "1762091866299",
"category": "Databases:",
"skills": "MySQL, MongoDB"
}
]
},
"_class": "cvbuilder.cvbuilder.model.User"
}- CV theme settings
- Customize sections
- Improved formatting on CV...