refactor: Rename TrueCV to RealCV throughout codebase

- Renamed all directories (TrueCV.* -> RealCV.*)
- Renamed all project files (.csproj)
- Renamed solution file (TrueCV.sln -> RealCV.sln)
- Updated all namespaces in C# and Razor files
- Updated project references
- Updated CSS variable names

🤖 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-22 20:47:55 +00:00
parent 6f384f8d09
commit 92a3b60878
107 changed files with 693 additions and 554 deletions

View File

@@ -0,0 +1,210 @@
namespace RealCV.Application.Data;
/// <summary>
/// Known diploma mills and fake educational institutions.
/// Sources: HEDD, Oregon ODA, UNESCO warnings, Michigan AG list
/// </summary>
public static class DiplomaMills
{
/// <summary>
/// Known diploma mills and unaccredited institutions that sell fake degrees.
/// This list includes institutions identified by various regulatory bodies.
/// </summary>
public static readonly HashSet<string> KnownDiplomaMills = new(StringComparer.OrdinalIgnoreCase)
{
// Well-known diploma mills
"Almeda University",
"Ashwood University",
"Belford University",
"Bircham University",
"Breyer State University",
"Brighton University (not Brighton UK)",
"Buxton University",
"Cambridge State University",
"Chadwick University",
"Clayton University",
"Columbus University",
"Corllins University",
"Dartington University",
"Dickinson State University Online",
"Fairfax University",
"Glendale University",
"Greenleaf University",
"Hamilton University",
"Harrington University",
"Hill University",
"Hollywood University",
"International University (generic)",
"Irish International University",
"James Monroe University",
"Jamestown University",
"Kennedy-Western University",
"Kensington University",
"Knightsbridge University",
"LaSalle University (Louisiana)",
"Lexington University",
"Lincoln University (if not Pennsylvania)",
"Madison University",
"Metropolitan University (generic)",
"Middletown University",
"Monticello University",
"Northern University",
"Northfield University",
"Pacific Southern University",
"Pacific Western University",
"Paramount University",
"Parkwood University",
"Preston University",
"Redding University",
"Richmond University (not American Intl)",
"Robertstown University",
"Rochdale University",
"Rochville University",
"Saint Regis University",
"St Regis University",
"Shaftesbury University",
"Shelbourne University",
"Stanton University",
"Stratford University (if unaccredited)",
"Suffield University",
"Summit University (diploma mill)",
"Sussex College of Technology",
"Trinity College and University",
"Trinity Southern University",
"University Degree Program",
"University of Atlanta",
"University of Berkley",
"University of Devonshire",
"University of Dunham",
"University of England",
"University of Northern Washington",
"University of Palmers Green",
"University of San Moritz",
"University of Sussex (fake - not real Sussex)",
"University of Wexford",
"Vocational University",
"Warnborough University",
"Washington International University",
"Weston Reserve University",
"Westbourne University",
"Western States University",
"Woodfield University",
"Yorker International University",
// Pakistani diploma mills commonly seen in UK
"Axact University",
"Brooklyn Park University",
"Columbiana University",
"Hillford University",
"Nixon University",
"Oxbridge University",
"University of Newford",
// Online diploma mills
"American World University",
"Ashford University (pre-2005)",
"Concordia College and University",
"Columbus State University (fake)",
"Frederick Taylor University",
"International Theological University",
"Nations University",
"Paramount California University",
"University of Ancient Studies",
"University of Asia",
"Virtual University (unaccredited)",
};
/// <summary>
/// Suspicious patterns in institution names that often indicate diploma mills.
/// </summary>
public static readonly string[] SuspiciousPatterns =
[
"online university",
"virtual university",
"life experience",
"no classes required",
"degree in days",
"accredited by", // followed by fake accreditor
"internationally recognised",
"worldwide university",
"global university",
"premier university",
"elite university",
"executive university",
"professional university",
"distance learning university", // be careful - some are legit
];
/// <summary>
/// Fake accreditation bodies used by diploma mills.
/// </summary>
public static readonly HashSet<string> FakeAccreditors = new(StringComparer.OrdinalIgnoreCase)
{
"World Association of Universities and Colleges",
"WAUC",
"International Accreditation Agency",
"Universal Accreditation Council",
"Board of Online Universities Accreditation",
"International Council for Open and Distance Education",
"World Online Education Accrediting Commission",
"Central States Consortium of Colleges and Schools",
"American Council of Private Colleges and Universities",
"Association of Distance Learning Programs",
"International Distance Education Certification Agency",
};
/// <summary>
/// Check if an institution is a known diploma mill.
/// </summary>
public static bool IsDiplomaMill(string institutionName)
{
if (string.IsNullOrWhiteSpace(institutionName))
return false;
var normalised = institutionName.Trim();
// Direct match
if (KnownDiplomaMills.Contains(normalised))
return true;
// Check if name contains known diploma mill
foreach (var mill in KnownDiplomaMills)
{
if (normalised.Contains(mill, StringComparison.OrdinalIgnoreCase))
return true;
}
return false;
}
/// <summary>
/// Check if institution name has suspicious patterns common in diploma mills.
/// Returns true if suspicious (but not confirmed fake).
/// </summary>
public static bool HasSuspiciousPattern(string institutionName)
{
if (string.IsNullOrWhiteSpace(institutionName))
return false;
var lower = institutionName.ToLowerInvariant();
foreach (var pattern in SuspiciousPatterns)
{
if (lower.Contains(pattern))
return true;
}
return false;
}
/// <summary>
/// Check if an accreditor is known to be fake.
/// </summary>
public static bool IsFakeAccreditor(string accreditorName)
{
if (string.IsNullOrWhiteSpace(accreditorName))
return false;
return FakeAccreditors.Contains(accreditorName.Trim());
}
}

View File

@@ -0,0 +1,285 @@
namespace RealCV.Application.Data;
/// <summary>
/// List of recognised UK higher education institutions.
/// Source: GOV.UK Register of Higher Education Providers
/// </summary>
public static class UKInstitutions
{
/// <summary>
/// Recognised UK universities and higher education providers.
/// These are legitimate degree-awarding institutions.
/// </summary>
public static readonly HashSet<string> RecognisedInstitutions = new(StringComparer.OrdinalIgnoreCase)
{
// Russell Group Universities
"University of Birmingham",
"University of Bristol",
"University of Cambridge",
"Cardiff University",
"Durham University",
"University of Edinburgh",
"University of Exeter",
"University of Glasgow",
"Imperial College London",
"King's College London",
"University of Leeds",
"University of Liverpool",
"London School of Economics",
"London School of Economics and Political Science",
"LSE",
"University of Manchester",
"Newcastle University",
"University of Nottingham",
"University of Oxford",
"Queen Mary University of London",
"Queen's University Belfast",
"University of Sheffield",
"University of Southampton",
"University College London",
"UCL",
"University of Warwick",
"University of York",
// Other Major Universities
"Aston University",
"University of Bath",
"Birkbeck, University of London",
"Bournemouth University",
"University of Bradford",
"University of Brighton",
"Brunel University London",
"University of Buckingham",
"Canterbury Christ Church University",
"City, University of London",
"Coventry University",
"Cranfield University",
"De Montfort University",
"University of Derby",
"University of Dundee",
"University of East Anglia",
"UEA",
"University of East London",
"Edge Hill University",
"University of Essex",
"Falmouth University",
"University of Greenwich",
"Heriot-Watt University",
"University of Hertfordshire",
"University of Huddersfield",
"University of Hull",
"Keele University",
"University of Kent",
"Kingston University",
"Lancaster University",
"University of Leicester",
"University of Lincoln",
"Liverpool John Moores University",
"Liverpool Hope University",
"University of London",
"London Metropolitan University",
"London South Bank University",
"Loughborough University",
"Manchester Metropolitan University",
"Middlesex University",
"Northumbria University",
"Norwich University of the Arts",
"Nottingham Trent University",
"Open University",
"The Open University",
"Oxford Brookes University",
"University of Plymouth",
"University of Portsmouth",
"Queen Margaret University",
"University of Reading",
"Robert Gordon University",
"Roehampton University",
"Royal Holloway, University of London",
"Royal Holloway",
"University of Salford",
"SOAS University of London",
"SOAS",
"Sheffield Hallam University",
"University of South Wales",
"University of St Andrews",
"St Andrews",
"Staffordshire University",
"University of Stirling",
"University of Strathclyde",
"University of Sunderland",
"University of Surrey",
"University of Sussex",
"Swansea University",
"Teesside University",
"Ulster University",
"University of the West of England",
"UWE Bristol",
"University of the West of Scotland",
"University of Westminster",
"University of Winchester",
"University of Wolverhampton",
"University of Worcester",
"Wrexham University",
"York St John University",
// Scottish Universities
"University of Aberdeen",
"Abertay University",
"Edinburgh Napier University",
"Glasgow Caledonian University",
"University of the Highlands and Islands",
// Welsh Universities
"Aberystwyth University",
"Bangor University",
"University of South Wales",
"Wrexham Glyndwr University",
// Northern Ireland
"Ulster University",
"Queen's University Belfast",
// Specialist Institutions
"Royal Academy of Music",
"Royal College of Art",
"Royal College of Music",
"Royal Northern College of Music",
"Royal Veterinary College",
"Goldsmiths, University of London",
"Goldsmiths",
"Courtauld Institute of Art",
"London Business School",
"LBS",
"Guildhall School of Music and Drama",
"Trinity Laban Conservatoire of Music and Dance",
"Arts University Bournemouth",
"University for the Creative Arts",
"Ravensbourne University London",
// Business Schools (accredited)
"Henley Business School",
"Warwick Business School",
"Manchester Business School",
"Said Business School",
"Judge Business School",
"Cass Business School",
"Bayes Business School",
"Imperial College Business School",
"Cranfield School of Management",
"Ashridge Business School",
"Alliance Manchester Business School",
};
/// <summary>
/// Common name variations and abbreviations mapped to official names.
/// </summary>
public static readonly Dictionary<string, string> NameVariations = new(StringComparer.OrdinalIgnoreCase)
{
["Cambridge"] = "University of Cambridge",
["Oxford"] = "University of Oxford",
["Cambridge University"] = "University of Cambridge",
["Oxford University"] = "University of Oxford",
["Imperial"] = "Imperial College London",
["Imperial College"] = "Imperial College London",
["Kings College London"] = "King's College London",
["Kings London"] = "King's College London",
["KCL"] = "King's College London",
["Edinburgh"] = "University of Edinburgh",
["Manchester"] = "University of Manchester",
["Bristol"] = "University of Bristol",
["Warwick"] = "University of Warwick",
["Durham"] = "Durham University",
["Bath"] = "University of Bath",
["Exeter"] = "University of Exeter",
["York"] = "University of York",
["Leeds"] = "University of Leeds",
["Sheffield"] = "University of Sheffield",
["Birmingham"] = "University of Birmingham",
["Nottingham"] = "University of Nottingham",
["Southampton"] = "University of Southampton",
["Glasgow"] = "University of Glasgow",
["Liverpool"] = "University of Liverpool",
["Lancaster"] = "Lancaster University",
["Leicester"] = "University of Leicester",
["Surrey"] = "University of Surrey",
["Sussex"] = "University of Sussex",
["Reading"] = "University of Reading",
["Loughborough"] = "Loughborough University",
["Brunel"] = "Brunel University London",
["Kent"] = "University of Kent",
["Essex"] = "University of Essex",
["Strathclyde"] = "University of Strathclyde",
["Heriot Watt"] = "Heriot-Watt University",
["Heriot-Watt"] = "Heriot-Watt University",
["St Andrews University"] = "University of St Andrews",
["Saint Andrews"] = "University of St Andrews",
["Birkbeck"] = "Birkbeck, University of London",
["QMUL"] = "Queen Mary University of London",
["Queen Mary"] = "Queen Mary University of London",
["Royal Holloway University"] = "Royal Holloway, University of London",
["RHUL"] = "Royal Holloway, University of London",
};
/// <summary>
/// Check if an institution is recognised. Handles common variations.
/// </summary>
public static bool IsRecognised(string institutionName)
{
if (string.IsNullOrWhiteSpace(institutionName))
return false;
var normalised = institutionName.Trim();
// Direct match
if (RecognisedInstitutions.Contains(normalised))
return true;
// Check variations
if (NameVariations.TryGetValue(normalised, out var officialName))
return RecognisedInstitutions.Contains(officialName);
// Fuzzy match - check if any recognised institution contains the search term
// or if the search term contains a recognised institution
foreach (var institution in RecognisedInstitutions)
{
if (institution.Contains(normalised, StringComparison.OrdinalIgnoreCase) ||
normalised.Contains(institution, StringComparison.OrdinalIgnoreCase))
{
return true;
}
}
return false;
}
/// <summary>
/// Get the official name of an institution if found.
/// </summary>
public static string? GetOfficialName(string institutionName)
{
if (string.IsNullOrWhiteSpace(institutionName))
return null;
var normalised = institutionName.Trim();
// Direct match
if (RecognisedInstitutions.Contains(normalised))
return normalised;
// Check variations
if (NameVariations.TryGetValue(normalised, out var officialName))
return officialName;
// Fuzzy match
foreach (var institution in RecognisedInstitutions)
{
if (institution.Contains(normalised, StringComparison.OrdinalIgnoreCase) ||
normalised.Contains(institution, StringComparison.OrdinalIgnoreCase))
{
return institution;
}
}
return null;
}
}