Modern resume builder built with ASP.NET Core MVC, Identity, Entity Framework Core, and Tailwind CSS.
Repository: https://github.com/zaber-dev/CVBuilder
- What is CVBuilder
- Core Features
- Tech Stack
- Architecture
- Getting Started
- Default Seed Data
- Project Structure
- Route Map
- Template System
- Database Model
- Development Commands
- Known Gaps
- Contributing
- Learning Guide
CVBuilder helps users create and manage professional CVs with:
- live editing and instant preview
- template switching without losing content
- dynamic resume sections (List and Tags)
- print-friendly A4 output via browser Print to PDF
- role-based admin tools for template and user management
The application includes both public marketing pages and an authenticated dashboard.
- Register and login with ASP.NET Core Identity.
- Create multiple resumes from template presets.
- Edit profile content (name, email, phone, location, summary).
- Upload profile images.
- Manage dynamic sections:
Listsections with Header, SubHeader, DateRange, Description.Tagssections with compact tag items.- Reorder sections.
- Switch templates at any time.
- Open print mode directly from dashboard (
?print=true) for fast PDF export.
- Landing page, features page, templates gallery, and about page.
- Public template preview endpoint for unauthenticated users.
- Conditional call-to-action behavior:
- signed-in users go straight to CV creation.
- anonymous users go to registration.
- Manage templates (create, edit, delete).
- Upload template thumbnails.
- Manage users and roles (Admin/User).
- Built-in self-protection:
- admin cannot delete own account.
- admin cannot downgrade own role from UI.
- Backend: ASP.NET Core 8 MVC + Razor Pages
- Authentication: ASP.NET Core Identity
- Database: SQLite + EF Core
- Styling: Tailwind CSS (via Tailwind.MSBuild)
- Frontend scripting: jQuery
- Runtime: .NET 8
Key source files:
- App bootstrap and seeding: CVBuilder/Program.cs
- Data context: CVBuilder/Data/ApplicationDbContext.cs
- CV workflows: CVBuilder/Controllers/CVController.cs
- Admin workflows: CVBuilder/Controllers/AdminController.cs
- Editor UI: CVBuilder/Views/CV/Edit.cshtml
flowchart TD
A[Browser] --> B[ASP.NET Core MVC]
B --> C[Controllers]
C --> D[ApplicationDbContext]
D --> E[(SQLite app.db)]
B --> F[Identity Razor Pages]
C --> G[Razor Views]
G --> A
Startup behavior:
- Applies pending EF Core migrations.
- Ensures
AdminandUserroles exist. - Seeds a default admin account.
- Seeds default templates if the table is empty.
- .NET 8 SDK
- Git
- Optional: trusted local HTTPS cert for browser comfort
From repository root:
dotnet restore c-sharp.slnx
dotnet run --project CVBuilder/CVBuilder.csprojDefault launch URLs are defined in CVBuilder/Properties/launchSettings.json:
Database connection is configured in CVBuilder/appsettings.json:
DataSource=app.db;Cache=Shared
On first run, migrations and seed data are applied automatically.
Local development admin account:
Email: admin@cvbuilder.com
Password: Admin123!
Important:
- This is intended for local development only.
- Change credentials and harden identity settings before production use.
Seeded templates include:
- Modern Professional
- Minimalist Elegant
- Creative Bold
- Executive Classic
- Tech Developer
- Compact Clean
c-sharp.slnx
CVBuilder/
Controllers/
HomeController.cs
CVController.cs
AdminController.cs
Data/
ApplicationDbContext.cs
Models/
CV.cs
Section.cs
Template.cs
Areas/Identity/
Pages/Account/
Views/
Home/
CV/
Admin/
Shared/
Migrations/
wwwroot/
/-> Home page/Home/Features/Home/Templates/Home/About/CV/PreviewTemplate/{id}(allow anonymous)/Loginand/Registerfriendly Identity routes
/CVdashboard/CV/Edit/{id}editor + live preview/Identity/Account/Manageaccount settings
/Admintemplate management/Admin/CreateTemplate/Admin/EditTemplate/{id}/Admin/Usersuser and role management
Templates are stored in the database (Templates table) with:
ContentHtml: HTML skeletonCustomCss: template-specific CSSPagePadding: page margins in mm (example:15or0)
Core model: CVBuilder/Models/Template.cs
To support editor and preview binding, include these IDs in template HTML:
view-fullnameview-emailview-phoneview-addressview-summaryview-sectionsview-profileimage(orview-profile-image)
- The editor and preview use A4 dimensions (
210mm x 297mm). - Page margins are controlled by
--cv-page-paddingvia templatePagePadding. - Full-bleed templates can set padding to
0. - Print mode can be triggered by opening edit with
?print=true.
Related files:
- CVBuilder/Views/Shared/_EditorLayout.cshtml
- CVBuilder/Views/CV/Edit.cshtml
- CVBuilder/Views/CV/Preview.cshtml
Main entities:
CV: user-owned resume metadata and personal info.Section: dynamic section rows with JSON payload and ordering.Template: render blueprint (ContentHtml,CustomCss,PagePadding).
Identity tables are created through IdentityDbContext inheritance.
Model references:
- CVBuilder/Models/CV.cs
- CVBuilder/Models/Section.cs
- CVBuilder/Models/Template.cs
- CVBuilder/Data/ApplicationDbContext.cs
Run app:
dotnet run --project CVBuilder/CVBuilder.csprojRestore local tools (includes dotnet-ef):
dotnet tool restore --tool-manifest CVBuilder/.config/dotnet-tools.jsonAdd migration:
dotnet ef migrations add YourMigrationName --project CVBuilder/CVBuilder.csproj --startup-project CVBuilder/CVBuilder.csprojApply migrations:
dotnet ef database update --project CVBuilder/CVBuilder.csproj --startup-project CVBuilder/CVBuilder.csproj- No automated test project is included yet.
- Template thumbnail paths are seeded, but CVBuilder/wwwroot/images/templates is currently empty.
- Password policy is relaxed for local development in startup configuration.
- Fork the repository.
- Create a feature branch.
- Make focused changes.
- Run and validate flows locally.
- Open a pull request with before/after context.
If you add features, update both this README and the learning guide.
Hands-on walkthrough and exercises are available in LEARN.md.