Rename project to RealCV with new logo and font updates

- Rename all TrueCV references to RealCV across the codebase
- Add new transparent RealCV logo
- Switch from JetBrains Mono to Inter font for better number clarity
- Update solution, project files, and namespaces

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-21 15:07:20 +00:00
parent 28d7d41b25
commit 998e9a8ab8
134 changed files with 1182 additions and 702 deletions

View File

@@ -0,0 +1,31 @@
using RealCV.Domain.Enums;
namespace RealCV.Domain.Constants;
public static class PlanLimits
{
public static int GetMonthlyLimit(UserPlan plan) => plan switch
{
UserPlan.Free => 3,
UserPlan.Professional => 30,
UserPlan.Enterprise => int.MaxValue,
_ => 0
};
public static int GetPricePence(UserPlan plan) => plan switch
{
UserPlan.Professional => 4900,
UserPlan.Enterprise => 19900,
_ => 0
};
public static string GetDisplayPrice(UserPlan plan) => plan switch
{
UserPlan.Free => "Free",
UserPlan.Professional => "£49/month",
UserPlan.Enterprise => "£199/month",
_ => "Unknown"
};
public static bool IsUnlimited(UserPlan plan) => plan == UserPlan.Enterprise;
}

View File

@@ -0,0 +1,28 @@
using System.ComponentModel.DataAnnotations;
namespace RealCV.Domain.Entities;
public class AuditLog
{
[Key]
public Guid Id { get; set; }
public Guid UserId { get; set; }
[Required]
[MaxLength(64)]
public string Action { get; set; } = string.Empty;
[MaxLength(128)]
public string? EntityType { get; set; }
public Guid? EntityId { get; set; }
[MaxLength(1024)]
public string? Details { get; set; }
[MaxLength(64)]
public string? IpAddress { get; set; }
public DateTime CreatedAt { get; set; }
}

View File

@@ -0,0 +1,37 @@
using System.ComponentModel.DataAnnotations;
using RealCV.Domain.Enums;
namespace RealCV.Domain.Entities;
public class CVCheck
{
[Key]
public Guid Id { get; set; }
public Guid UserId { get; set; }
[Required]
[MaxLength(512)]
public string OriginalFileName { get; set; } = string.Empty;
[Required]
[MaxLength(2048)]
public string BlobUrl { get; set; } = string.Empty;
public CheckStatus Status { get; set; }
public string? ExtractedDataJson { get; set; }
public int? VeracityScore { get; set; }
[MaxLength(64)]
public string? ProcessingStage { get; set; }
public string? ReportJson { get; set; }
public DateTime CreatedAt { get; set; }
public DateTime? CompletedAt { get; set; }
public ICollection<CVFlag> Flags { get; set; } = new List<CVFlag>();
}

View File

@@ -0,0 +1,31 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using RealCV.Domain.Enums;
namespace RealCV.Domain.Entities;
public class CVFlag
{
[Key]
public Guid Id { get; set; }
public Guid CVCheckId { get; set; }
public FlagCategory Category { get; set; }
public FlagSeverity Severity { get; set; }
[Required]
[MaxLength(256)]
public string Title { get; set; } = string.Empty;
[Required]
[MaxLength(2048)]
public string Description { get; set; } = string.Empty;
public int ScoreImpact { get; set; }
// Navigation property
[ForeignKey(nameof(CVCheckId))]
public CVCheck CVCheck { get; set; } = null!;
}

View File

@@ -0,0 +1,33 @@
using System.ComponentModel.DataAnnotations;
namespace RealCV.Domain.Entities;
public class CompanyCache
{
[Key]
[MaxLength(32)]
public string CompanyNumber { get; set; } = string.Empty;
[Required]
[MaxLength(512)]
public string CompanyName { get; set; } = string.Empty;
[Required]
[MaxLength(64)]
public string Status { get; set; } = string.Empty;
[MaxLength(64)]
public string? CompanyType { get; set; }
public DateOnly? IncorporationDate { get; set; }
public DateOnly? DissolutionDate { get; set; }
[MaxLength(64)]
public string? AccountsCategory { get; set; }
[MaxLength(256)]
public string? SicCodesJson { get; set; }
public DateTime CachedAt { get; set; }
}

View File

@@ -0,0 +1,9 @@
namespace RealCV.Domain.Enums;
public enum CheckStatus
{
Pending,
Processing,
Completed,
Failed
}

View File

@@ -0,0 +1,9 @@
namespace RealCV.Domain.Enums;
public enum FlagCategory
{
Employment,
Education,
Timeline,
Plausibility
}

View File

@@ -0,0 +1,8 @@
namespace RealCV.Domain.Enums;
public enum FlagSeverity
{
Info,
Warning,
Critical
}

View File

@@ -0,0 +1,8 @@
namespace RealCV.Domain.Enums;
public enum UserPlan
{
Free,
Professional,
Enterprise
}

View File

@@ -0,0 +1,19 @@
namespace RealCV.Domain.Exceptions;
public class QuotaExceededException : Exception
{
public QuotaExceededException()
: base("Monthly CV check quota exceeded. Please upgrade your plan.")
{
}
public QuotaExceededException(string message)
: base(message)
{
}
public QuotaExceededException(string message, Exception innerException)
: base(message, innerException)
{
}
}

View File

@@ -0,0 +1,13 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="System.ComponentModel.Annotations" Version="5.0.0" />
</ItemGroup>
</Project>