🏦 CardDemo Account Modernization Dashboard

From COBOL/GnuCOBOL + Python/Flask  →  React 19 modernized frontend (mock-backed demo)

🔵 .NET 8 LTS (target) ⚛️ React 19 + TypeScript 🐘 PostgreSQL 16 🐳 Docker Compose 🏗️ Vertical Slice Architecture

📊 Project At a Glance

5
Modules Identified
45+
Business Rules Extracted (CACTUPC + CCUSTUPC)
6
COBOL Programs Indexed
4
Legacy Record Shapes Documented

📍 Migration Roadmap

Step-by-step plan to modernize the Account module from COBOL/Flask to .NET 8 & React.

Done
In Progress
Pending
Phase Task Description Owner Status
1 · Foundation Repository & Solution Setup Create .NET 8 solution with Clean/Vertical Slice structure and React+Vite frontend scaffold. Platform Team Pending
1 · Foundation Docker Compose Local Stack Define docker-compose.yml for backend (.NET), frontend (React), and PostgreSQL 16 with hot-reload support. Platform Team Pending
1 · Foundation EF Core Data Model & Initial Migration Define Account, Card, CardCustomerXref, Customer entities. Run first EF Core migration. Backend Team Pending
1 · Foundation i18n Scaffold (en + es) Bootstrap i18next with en.json and es.json including all validation message keys from COBOL rule table. Frontend Team Pending
2 · Rule Extraction Document CACTUPC Business Rules Formalize all 11 account update rules (STATUS_YN, DATE_*, AMT_CHAR, CASH_GT_CREDIT, ZIP_DIG, ACCT_ID, GROUP_ALNUM) as C# Domain validators with unit tests. Backend Team In Progress
2 · Rule Extraction Document CCUSTUPC Business Rules Formalize all customer update rules (CUST_SSN, CUST_ZIP, CUST_STATE, CUST_FICO, CUST_PHONE, CUST_DOB, PRI_HOLDER) as C# Domain validators with unit tests. Backend Team Pending
2 · Rule Extraction No-Change Guard Implementation Replicate bridge.py change-detection logic: if submitted data equals current DB record, return NoChangesResult without persisting. Backend Team Pending
3 · Data Migration ASCII File to PostgreSQL Seeder Write idempotent C# migration script to read acctdata.txt (300B), carddata.txt (150B), cardxref.txt (50B), custdata.txt (500B) and seed the relational DB. Validate row counts. Backend Team Pending
3 · Data Migration SSN Encryption Implement field-level encryption for Customer.Ssn before migration. Legacy stored as plain 9-digit integer — never store in plaintext in new DB. Security Team Pending
4 · Backend Implement GET /api/accounts Paginated account listing with optional filters (status, search). Replaces CBACT01C + Flask route. Backend Team Pending
4 · Backend Implement GET /api/accounts/{id} Full account detail: account fields + linked cards + linked customer (via XREF). Replaces CBACT01C, CBACT02C, CBACT03C, CBCUS01C + Flask route. Backend Team Pending
4 · Backend Implement PUT /api/accounts/{id} Account update with full CACTUPC rule validation. Replaces CACTUPC COBOL program. Backend Team Pending
4 · Backend Implement PUT /api/customers/{id} Customer profile update with full CCUSTUPC rule validation. Replaces CCUSTUPC COBOL program. Backend Team Pending
4 · Backend Implement GET /api/cards/crossref Paginated card-to-account cross-reference listing. Replaces CBACT03C + Flask route. Backend Team Pending
5 · Frontend Account List Page React page with paginated MUI table, status filter, and search. Shipped in the template with Vitest unit tests. Frontend Team Done
5 · Frontend Account Detail Page React page showing account info, cards panel, and customer panel with xref ambiguity warning. Shipped in the template with Vitest unit tests. Frontend Team Done
5 · Frontend Account Update Page React form page with mock-backed update flow and minimal ZIP validation. Shipped in the template with Vitest unit tests. Frontend Team Done
5 · Frontend Card Cross-Reference Page React page with searchable cross-reference table. Shipped in the template with Vitest unit tests. Frontend Team Done
5 · Frontend Customer Management (slot-in target) Placeholder in the template. Each modernization demo replaces it with the full customer management experience (list, detail, update) + tests. Frontend Team Awaiting demo
6 · QA & UAT Unit Tests — Domain Validators xUnit tests covering all 11 CACTUPC rules and 7 CCUSTUPC rules. Minimum 90% Domain layer coverage. Backend Team Pending
6 · QA & UAT Integration Tests — API Endpoints WebApplicationFactory integration tests for all account and customer endpoints using seeded test database. Backend Team Pending
6 · QA & UAT UAT — Business Rule Parity End-to-end validation that new system rejects/accepts the same inputs as the COBOL system, using legacy smoke test scenarios as reference. QA + Legacy Expert Pending
7 · Cutover Production Data Migration Run idempotent migration script against production ASCII files. Validate record counts. Zero-downtime cutover plan. DBA + Ops Pending
7 · Cutover Decommission COBOL Bridge Remove GnuCOBOL binaries, bridge.py, and Docker COBOL build steps. Archive legacy source code for reference. Platform Team Pending

🕒 Recent Activity Log

  • [2026-04-16] Cursor AgentCARD-DEMO pivoted to a slot-in template: four modernized modules (account-listing, account-details, account-update, card-crossref) with Vitest unit tests now ship on main. Each demo PR modernizes only customer-management, runs the shared test suite, and reports results on the PR dashboard.
  • [2026-04-15] Cursor AgentDocumentation rewritten from the deployed source-of-truth repo (cardDemo-modernization-sai3). Routes, COBOL programs, copybook shapes, validation codes, bridge protocol, and templates are now fully described in system-overview.md and module-file-map.md.
  • [2026-03-24 15:31 UTC] Copilot AgentInitial documentation generated: system-overview.md, module-file-map.md, docs/site/index.html, and all 5 module pages created. Business rules extracted from CACTUPC and CCUSTUPC COBOL sources.
  • [TIMESTAMP] Monitoring repository for changes...

📂 Documentation Index