CFA eCat — Association Management Platform
HOME - our portfolio - cfa ecat association management platform
CFA eCat — Association Management Platform

Industry
Non-Profit / Animal Registry
Built for
Web
Country
United States
Region
North America
Applications
Admin Portal + Member Portal
Project Description
The CFA eCat System is a full-stack association management platform built by TTPL for the Cat Fanciers' Association (CFA) — the world's largest registry of pedigreed cats, founded in 1906. The platform replaces a fragmented, legacy system with a unified, role-driven digital ecosystem hosted at cosystem.cfa.org.
The solution comprises two interconnected Angular web applications — an internal staff administration portal and a member-facing eCat portal — backed by a shared ASP.NET Core REST API and SQL Server database. Together they digitalize every operational domain of the association: breed and genetics registry, judge and clerk certification programs, club and member management, show season administration, and a multi-method financial system.
The system manages thousands of CFA members — breeders, exhibitors, judges, clerks, and club officers — across over 600 affiliated clubs worldwide, with fine-grained role-based access, secure two-factor authentication via SMS, and integrated payment processing through Authorize.NET and PayPal.
Goal
The goal of the CFA eCat System was to replace CFA's aging, siloed software with a single, modern, cloud-hosted platform capable of managing the full operational surface of the world's largest pedigreed cat registry. The system had to consolidate member, breed, show, financial, and certification data into one coherent, role-aware digital environment accessible to staff and members worldwide.
- Build a unified dual-portal system — an internal admin tool for CFA staff and a self-service eCat portal for members, judges, clerks, and clubs
- Digitize the complete breed and genetics registry — breeds, color codes, alleles, phenotypes, cross-breed rules, and body condition scoring
- Automate judge and clerk certification workflows — tracking qualifications, fees, school completions, test results, and official status transitions
- Centralize club management — officer assignments, dues tracking, regional mapping, ballot recording, and membership list management
- Implement a flexible multi-method financial system — invoicing, clerk and judge fee payment, credit card processing via Authorize.NET, and PayPal integration
- Secure all access with role-based navigation permissions and two-factor authentication via SMS
Challenges
Deeply Complex Domain Model: CFA's operations span an unusually broad and interrelated domain — breed genetics (alleles, phenotypes, color classes, breed code exceptions), show administration (seasons, types, breed classifications), and certification programs with their own fee structures, school records, and status hierarchies. Modeling this domain accurately in a relational schema while keeping it maintainable and extensible was the foundational engineering challenge.
Dual-Portal Architecture with Shared Business Logic: Two distinct Angular applications — one for CFA staff and one for member-facing use — had to share the same API, models, and business rules while presenting completely different UX surfaces, role scopes, and navigation structures. Keeping the backends unified without coupling the frontends required disciplined API and service design.
Multi-Role Access Across People, Clubs, and Certifications: A single person in the CFA ecosystem can simultaneously hold multiple roles — a customer who is also a certified judge, a club officer, and a certified master clerk instructor. The system needed to model role assignments at the PersonRole level and surface the correct permissions and capabilities depending on the active context, without surfacing data that crossed role boundaries.
Financial Integration with Multiple Payment Providers: The platform had to support credit card payments through Authorize.NET and PayPal alongside internal fee tracking for judges and clerks, with invoice generation, payment records, and reconciliation — each provider with its own SDK, error handling, and security requirements.
Legacy Data Migration: CFA's existing breed registry, member records, and certification history spanned decades. Mapping legacy identifiers (breed codes, color codes, allele records) to the new entity model without data loss or integrity violations required extensive SQL migration scripting and cross-validation against historical records.
Solutions
Dual-Portal Architecture with Shared API
We designed a shared ASP.NET Core REST API consumed by both the CFA Admin Web and the CFA eCat Web — two independent Angular 14 applications with distinct UX, navigation, and role scopes. The API implements Clean Architecture, with domain models, feature services, and data access separated from transport concerns. Each Angular application has its own route guards, sidebar, and module structure, allowing each to evolve independently while sharing all business logic through the API layer.
Comprehensive Breed & Genetics Registry
The system encodes CFA's full breed catalog — breeds, breed groups, breed codes, breed colors, breed status classifications, allele definitions, phenotype records, color classes, eye colors, and cross-breed compatibility rules (BreedCodeCross) and exceptions (BreedCodeException). Each entity is fully CRUD-manageable through the admin portal. Body Condition Scores (BCS) are tracked per color class, supporting objective health and conformation standards used in show judging.
Judge Certification & Fee Management
Judge profiles track three independent certification tracks — Allbreed (AB), LongHair (LH), and ShortHair (SH) — each with its own status, acceptance date, and active flag. Judges are linked to the person registry via PersonRole assignments, and their fee records are tracked independently per event. The admin portal supports full lifecycle management: judge type assignment, status changes, historical fee lookup, and payment recording — giving CFA staff a single authoritative view of every licensed judge in the system.
Clerk Certification Program
The clerk certification program tracks the complete progression from first-year clerk through Certified Clerk, Master Clerk, and Master Clerk Instructor, with each milestone's certification date recorded. Clerk records are linked to school enrollments (ClerkSchool, ClerkSchoolStudent), test completions (ClerkTest), annual fee payments (ClerkFee), and status assignments. The system also tracks the year clerking began and the most recent fee payment date, enabling staff to audit compliance with annual re-certification requirements.
Club & Regional Management
Each CFA-affiliated club has a full management profile: club number, name, application date, acceptance date, regional assignment (primary and alternate), website, and a set of six elected officer roles — President, Vice President, Secretary, Treasurer, Delegate, and Proxy — each linked to a registered CFA member. The system tracks dues payment status (IsPaidThrough date), membership list receipt dates, annual ballot and delegate dates, breed specialties, and visibility settings controlling whether the club appears on the public website. Club dues (ClubDues) and regional geographic locations (RegionGeoLocation) are managed as linked entities.
Multi-Method Financial System
The financial module handles the full payment lifecycle for the association. Invoices are structured as header/detail/item records, supporting line-item billing across any service or fee type. Credit card payments are processed in real time through Authorize.NET, with PayPal as an alternative. Clerk and judge fee payments are tracked separately with their own fee schedules (ClerkFee, JudgeFee). Payment types, payment history, and reconciliation views are available to admin staff, providing complete financial traceability across all member transactions.
Role-Based Access & Two-Factor Authentication
Navigation access is governed by a SecurityRole system where each menu item can be individually enabled or disabled per role. Role assignments (SecurityRoleEmployee, SecurityRoleNavigationMenu) are manageable through the admin portal without code changes. All authentication uses JWT with refresh token rotation. Two-factor authentication is enforced via Twilio SMS OTP, with configurable expiration windows. Password policies (expiry, reset token TTL, onboarding flow) are managed through AppConfiguration, allowing CFA administrators to adjust security settings without deployments.

