@page "/account/register" @using RealCV.Web.Components.Layout @layout MainLayout @rendermode InteractiveServer @using Microsoft.AspNetCore.Identity @using RealCV.Infrastructure.Identity @inject UserManager UserManager @inject SignInManager SignInManager @inject NavigationManager NavigationManager Register - RealCV

Create account

Start verifying UK-based CVs in minutes

@if (!string.IsNullOrEmpty(_errorMessage)) { }
At least 12 characters with uppercase, lowercase, number, and symbol.
Already have an account?

Start Your Free Trial

Get 3 free CV verifications to experience the power of AI-driven credential analysis.

AI-powered verification in seconds
Company legitimacy checks
Qualification & timeline analysis
Detailed PDF reports
"We reduced bad hires by 40% in the first quarter using RealCV."
- Recruitment Manager, Financial Services
@code { private RegisterModel _model = new(); private bool _isLoading; private string? _errorMessage; private async Task HandleRegister() { _isLoading = true; _errorMessage = null; try { if (_model.Password != _model.ConfirmPassword) { _errorMessage = "Passwords do not match."; _isLoading = false; return; } var user = new ApplicationUser { UserName = _model.Email, Email = _model.Email, Plan = Domain.Enums.UserPlan.Free, ChecksUsedThisMonth = 0, TermsAcceptedAt = DateTime.UtcNow }; var result = await UserManager.CreateAsync(user, _model.Password); if (result.Succeeded) { await SignInManager.SignInAsync(user, isPersistent: false); NavigationManager.NavigateTo("/dashboard", forceLoad: true); } else { var errors = result.Errors.Select(e => e.Description); _errorMessage = string.Join(" ", errors); } } catch (Exception) { _errorMessage = "An unexpected error occurred. Please try again."; } finally { _isLoading = false; } } private sealed class RegisterModel { [System.ComponentModel.DataAnnotations.Required(ErrorMessage = "Email is required")] [System.ComponentModel.DataAnnotations.EmailAddress(ErrorMessage = "Invalid email format")] public string Email { get; set; } = string.Empty; [System.ComponentModel.DataAnnotations.Required(ErrorMessage = "Password is required")] [System.ComponentModel.DataAnnotations.MinLength(12, ErrorMessage = "Password must be at least 12 characters")] public string Password { get; set; } = string.Empty; [System.ComponentModel.DataAnnotations.Required(ErrorMessage = "Please confirm your password")] [System.ComponentModel.DataAnnotations.Compare(nameof(Password), ErrorMessage = "Passwords do not match")] public string ConfirmPassword { get; set; } = string.Empty; [System.ComponentModel.DataAnnotations.Range(typeof(bool), "true", "true", ErrorMessage = "You must agree to the Terms of Service")] public bool AgreeToTerms { get; set; } } }