A full-stack application that processes employee CVs, extracts structured data using GitHub Copilot API, and stores it in a SQLite database.
This repository contains two main projects:
- Frontend: React-based SPA built with Vite
- Backend: .NET 9 Web API with Entity Framework Core
- Node.js v18+ and npm
- .NET 9 SDK
- GitHub Copilot API access (personal access token)
cd backend
dotnet user-secrets init
dotnet user-secrets set "GitHubCopilot:ApiToken" "your-github-token-here"Or alternatively, update backend/appsettings.Development.json:
{
"GitHubCopilot": {
"ApiToken": "your-github-token-here"
}
}cd backend
dotnet ef database updateThe database file cvprocessor.db will be created automatically on first run.
cd backend
dotnet runThe API will be available at:
- HTTP:
http://localhost:5024 - HTTPS:
https://localhost:7239 - Swagger UI (dev only):
http://localhost:5024/swagger
In a new terminal:
cd frontend
npm install
npm run devThe web application will be available at http://localhost:5173
-
Upload a CV:
- Navigate to the home page
- Click "Choose File" or drag & drop a PDF file
- Click "Upload CV" to process
-
Review Processed CVs:
- Click "Review CVs" in the navigation
- View list of all processed CVs
- Click "View Details" to see extracted data
-
View CV Details:
- See personal information
- Review education history
- Browse work experience and responsibilities
- Toggle JSON view to see original API response
copilot-course-cv-processor/
βββ frontend/ # React + TypeScript + Vite
β βββ src/
β β βββ components/ # UI components
β β βββ pages/ # Page components
β β βββ services/ # API integration
β β βββ types/ # TypeScript definitions
β βββ package.json
β
βββ backend/ # .NET 10 Web API
β βββ Controllers/ # API controllers
β βββ Models/ # Data models
β βββ Services/ # Business logic
β βββ Program.cs
β
βββ README.md
- React 19 - Latest React with modern features
- TypeScript 5.9 - Type safety
- Vite 7.2 - Fast build tool and dev server
- React Router 6 - Client-side routing
- ESLint - Code quality and linting
- .NET 9 - Latest .NET framework
- ASP.NET Core Web API - RESTful API
- Entity Framework Core 9 - ORM for database access
- SQLite - Lightweight database
- OpenAPI - API documentation
- CORS - Frontend integration
- GitHub Copilot API - AI-powered CV data extraction
- User Secrets - Secure API token storage
- β PDF CV upload with drag & drop support
- β AI-powered data extraction using GitHub Copilot API
- β Structured data storage in SQLite database
- β Personal information extraction
- β Education history parsing
- β Work experience with responsibilities
- β CV list view with pagination
- β Detailed CV view with formatted display
- β JSON data toggle for debugging
- β Delete CV functionality
- β RESTful API architecture
- β TypeScript for type safety
- β Responsive UI design
- β Print-friendly CV layout
- β Error handling and validation
- β Loading states and user feedback
cd frontend
npm run dev # Start dev server
npm run build # Build for production
npm run lint # Run ESLintcd backend
dotnet run # Run the application
dotnet build # Build the project
dotnet watch run # Run with auto-reloadPOST /api/cv/upload- Upload and process a PDF CVGET /api/cv/list- Get all processed CVs (paginated)GET /api/cv/{id}- Get specific CV by IDGET /api/cv/latest- Get most recently processed CVGET /api/cv/search- Search CVs by name or emailDELETE /api/cv/{id}- Delete a processed CV
GET /api/cv/health- Health checkGET /api/cv/copilot/validate- Validate GitHub Copilot API connection
GET /api/skills/health- Skills service health checkPOST /api/skills/extract- Extract skills from document
The application uses SQLite with the following tables:
- ProcessedCVs - Main CV records with metadata and JSON storage
- PersonalInformation - Personal details (1:1 with ProcessedCV)
- Education - Education history entries (1:N with ProcessedCV)
- WorkExperience - Work experience entries (1:N with ProcessedCV)
- WorkResponsibilities - Individual responsibilities (1:N with WorkExperience)
If you encounter "GitHub Copilot API unavailable" messages:
- Verify your API token is set correctly
- Check token has required permissions
- Test connection at
/api/cv/copilot/validate - The system will fall back to placeholder data if API fails
If database operations fail:
- Ensure
cvprocessor.dbfile exists in backend folder - Run
dotnet ef database updateto apply migrations - Check file permissions
- Delete
cvprocessor.dband re-run migrations if corrupted
If frontend cannot connect to backend:
- Verify backend is running on
http://localhost:5024 - Verify frontend is running on
http://localhost:5173 - Check CORS policy in
Program.csallows frontend origin
- Implement actual PDF text extraction (currently placeholder)
- Add user authentication and authorization
- Add CV comparison features
- Add skill extraction and categorization
- Add export to PDF/Word functionality
- Add comprehensive unit and integration tests
- Add CI/CD pipeline
- Add Docker support
- Add production deployment configuration
- Add error monitoring and analytics
This project is part of a Copilot course exercise.