Initial commit: TrueCV CV verification platform

Clean architecture solution with:
- Domain: Entities (User, CVCheck, CVFlag, CompanyCache) and Enums
- Application: Service interfaces, DTOs, and models
- Infrastructure: EF Core, Identity, Hangfire, external API clients, services
- Web: Blazor Server UI with pages and components

Features:
- CV upload and parsing (PDF/DOCX) using Claude API
- Employment verification against Companies House API
- Timeline analysis for gaps and overlaps
- Veracity scoring algorithm
- Background job processing with Hangfire
- Azure Blob Storage for file storage

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-18 19:20:50 +01:00
commit 6d514e01b2
70 changed files with 5996 additions and 0 deletions

48
TrueCV.sln Normal file
View File

@@ -0,0 +1,48 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.0.31903.59
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{F25C3740-9240-46DF-BC34-985BC577216B}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TrueCV.Domain", "src\TrueCV.Domain\TrueCV.Domain.csproj", "{41AC48AF-09BC-48D1-9CA4-1B05D3B693F0}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TrueCV.Application", "src\TrueCV.Application\TrueCV.Application.csproj", "{A8A1BA81-3B2F-4F95-BB15-ACA40DF2A70E}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TrueCV.Infrastructure", "src\TrueCV.Infrastructure\TrueCV.Infrastructure.csproj", "{03DB607C-9592-4930-8C89-3E257A319278}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TrueCV.Web", "src\TrueCV.Web\TrueCV.Web.csproj", "{D69F57DB-3092-48AF-81BB-868E3749C638}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{41AC48AF-09BC-48D1-9CA4-1B05D3B693F0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{41AC48AF-09BC-48D1-9CA4-1B05D3B693F0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{41AC48AF-09BC-48D1-9CA4-1B05D3B693F0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{41AC48AF-09BC-48D1-9CA4-1B05D3B693F0}.Release|Any CPU.Build.0 = Release|Any CPU
{A8A1BA81-3B2F-4F95-BB15-ACA40DF2A70E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A8A1BA81-3B2F-4F95-BB15-ACA40DF2A70E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A8A1BA81-3B2F-4F95-BB15-ACA40DF2A70E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A8A1BA81-3B2F-4F95-BB15-ACA40DF2A70E}.Release|Any CPU.Build.0 = Release|Any CPU
{03DB607C-9592-4930-8C89-3E257A319278}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{03DB607C-9592-4930-8C89-3E257A319278}.Debug|Any CPU.Build.0 = Debug|Any CPU
{03DB607C-9592-4930-8C89-3E257A319278}.Release|Any CPU.ActiveCfg = Release|Any CPU
{03DB607C-9592-4930-8C89-3E257A319278}.Release|Any CPU.Build.0 = Release|Any CPU
{D69F57DB-3092-48AF-81BB-868E3749C638}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D69F57DB-3092-48AF-81BB-868E3749C638}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D69F57DB-3092-48AF-81BB-868E3749C638}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D69F57DB-3092-48AF-81BB-868E3749C638}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{41AC48AF-09BC-48D1-9CA4-1B05D3B693F0} = {F25C3740-9240-46DF-BC34-985BC577216B}
{A8A1BA81-3B2F-4F95-BB15-ACA40DF2A70E} = {F25C3740-9240-46DF-BC34-985BC577216B}
{03DB607C-9592-4930-8C89-3E257A319278} = {F25C3740-9240-46DF-BC34-985BC577216B}
{D69F57DB-3092-48AF-81BB-868E3749C638} = {F25C3740-9240-46DF-BC34-985BC577216B}
EndGlobalSection
EndGlobal