21 KiB
21 KiB
GoodGo Platform — Roadmap & Development Tracker
Last updated: 2026-03-06 Maintained by: CTO & Agents Team Status convention:
DONE|IN-PROGRESS|TODO|BLOCKED|SKIPPED
I. Platform Overview
| Metric | Current | Phase 1 Target | Phase 2 Target | Phase 3 Target |
|---|---|---|---|---|
| Services production-ready | 8/24 | 12/24 | 16/24 | 20/24 |
| Test coverage (estimated) | ~50% | 70% | 80% | 85% |
| POS verticals fully working | 2/5 | 2/5 (stable) | 5/5 | 5/5 |
| Payment methods live | 0 | 2 | 3 | 4+ |
| Real-time features | 0 | KDS + Orders | Full POS | Full |
| Mobile apps | Template | Template | iOS v1 | iOS + Android |
| Environment | Dev only | Staging | Staging + Prod | Prod (SLA 99.9%) |
II. Microservices Status
Production-Ready (8)
| Service | Controllers | Tests | Notes | Last Updated |
|---|---|---|---|---|
| iam-service | 12 | 30 | OAuth2, RBAC, MFA, Sessions, Access Reviews | 2026-03-06 |
| storage-service | 11 | 10 | Multipart uploads, versioning, signed URLs | 2026-03-06 |
| merchant-service | 10 | 2 | Shop lifecycle, subscription plans (NEW) | 2026-03-06 |
| wallet-service | 5 | 5 | Balance, loyalty points, holds | 2026-03-06 |
| order-service | 3 | 2 | Full order lifecycle, POS dashboard | 2026-03-06 |
| membership-service | 2 | 12 | Tier management, loyalty | 2026-03-06 |
| promotion-service | 5 | 5 | Vouchers, campaigns, discounts | 2026-03-06 |
| chat-service | 3 | 6 | SignalR + Redis backplane | 2026-03-06 |
In-Progress (11)
| Service | Status | What's Done | What's Missing | Priority |
|---|---|---|---|---|
| fnb-engine | Controllers OK | Kitchen/Reservation/Session/Table controllers | Handler logic, 0 tests | P0 |
| catalog-service | Basic CRUD | Products, Categories controllers | Variants, advanced queries | P1 |
| inventory-service | Basic CRUD | Create/Update/Delete items | Auto-deduction, alerts, tests | P0 |
| booking-service | 7 controllers | API structure, entities defined, handler logic complete, therapist + appointment CRUD | Handler completion | P1 |
| social-service | Core domain | Relationships, Blocks, Follows | API integration | P2 |
| mining-service | Skeleton | Controllers + entities defined | Business logic | P3 |
| mission-service | Controllers exist | Missions, CheckIns | Workflow handlers | P2 |
| ads-manager | 7 controllers | Campaign/Ad/AdSet/Audience structure | Campaign logic | P3 |
| ads-analytics | Read-heavy | Metrics/Insights structure | Aggregation logic | P3 |
| ads-billing | Core entities | BillingAccount/Invoice/Charge | Invoice flow | P3 |
| ads-serving | Skeleton | API structure | Real-time serving | P3 |
Scaffold / Not Started (5)
| Service | Status | Note |
|---|---|---|
| ads-tracking | Scaffold | Template only, not in docker-compose |
| mkt-facebook | Scaffold | Facebook API not connected |
| mkt-whatsapp | Scaffold | WhatsApp API not connected |
| mkt-x | Scaffold | X/Twitter API not connected |
| mkt-zalo | Scaffold | Zalo API not connected |
III. Frontend Apps Status
| App | Status | Components | Notes |
|---|---|---|---|
| web-client-tpos-net (POS) | PRODUCTION-READY | 181 | Multi-layout, multi-vertical, real API integration |
| web-client-base-net (Portal) | IN-PROGRESS | 16 | Basic page structure |
| app-client-base-swift (iOS) | IN-PROGRESS | 34 files | MVVM + Combine, auth + home |
| app-client-base-net (MAUI) | SCAFFOLD | 2 VMs | Template phase |
| web-docs (VitePress) | MINIMAL | — | Placeholder docs |
POS Vertical Status
| Vertical | Backend | Frontend | Order Flow | Payment | Status |
|---|---|---|---|---|---|
| Karaoke | DONE | DONE | DONE | UI-ONLY | WORKING |
| Restaurant | DONE | DONE | DONE | UI-ONLY | WORKING |
| Cafe | DONE | DONE | DONE | UI-ONLY | PARTIAL |
| Spa/Beauty | DONE | DONE | DONE | UI-ONLY | PARTIAL |
| Retail | DONE | UI-ONLY | DONE | UI-ONLY | TODO |
IV. Critical Gaps Tracker
P0 — Must Fix Before Launch
| # | Gap | Status | Owner | Sprint | Notes |
|---|---|---|---|---|---|
| 1 | Payment Gateway — VN Pay | DONE |
Backend #1 | Phase 1 / W1-2 | wallet-service: IPaymentGateway + VnPayGateway |
| 2 | Payment Gateway — Momo | TODO |
Backend #2 | Phase 1 / W1-2 | wallet-service integration |
| 3 | Real-time SignalR Hub | DONE |
Backend #3 | Phase 1 / W1-2 | PosHub + Redis backplane + MessagePack |
| 4 | Kitchen → Inventory Deduction | DONE |
Backend #1 | Phase 1 / W2 | Domain events + HTTP + Polly + idempotency |
| 5 | Multi-tenant Row-Level Security | DONE |
Backend #2 | Phase 1 / W2-3 | EF Core filters + PostgreSQL RLS, 5 services |
| 6 | Payment UI Completion | DONE |
Frontend Blazor | Phase 1 / W1-2 | Cash/Card/QR wired to real gateway |
| 7 | Integration Test Suite | DONE |
QA Engineer | Phase 1 / W3 | 29 functional tests, full order lifecycle |
| 8 | Staging Deployment | DONE |
DevOps | Phase 1 / W3-4 | 16 K8s manifests, CI/CD, deploy script |
P1 — Required for Full Feature Set
| # | Gap | Status | Owner | Sprint | Notes |
|---|---|---|---|---|---|
| 9 | Retail POS Workflow | DONE |
Backend + Frontend | Phase 2 / W5-6 | Scan, stock, return/exchange |
| 10 | Spa Backend Domain Logic | DONE |
Backend | Phase 2 / W5-6 | Appointments, therapist scheduling |
| 11 | EOD Reports + Daily Close | DONE |
Frontend Blazor | Phase 1 / W4 | order-service queries |
| 12 | FnB Engine Test Coverage | DONE |
QA Engineer | Phase 1 / W3 | 96 tests (57 domain + 39 handler) |
| 13 | Cafe Workflow Completion | DONE |
Backend + Frontend | Phase 2 / W5-6 | Loyalty stamps, barista queue |
| 14 | Critical Path Unit Tests (inventory, payment, events) | DONE |
QA Engineer | Phase 1 / W4 | Deduction, payment callback, domain event handlers |
P2 — Enhancement
| # | Gap | Status | Sprint | Notes |
|---|---|---|---|---|
| 15 | Marketing — Zalo OA | TODO |
Phase 3 | mkt-zalo-service |
| 16 | Marketing — Facebook | TODO |
Phase 3 | mkt-facebook-service |
| 17 | Ads Platform | TODO |
Phase 3 | 5 ads services |
| 18 | Mobile iOS v1 | TODO |
Phase 3 | app-client-base-swift |
| 19 | Mobile MAUI v1 | TODO |
Phase 3 | app-client-base-net |
| 20 | Observability Stack | DONE |
Phase 2 | Prometheus + Grafana + Loki + Promtail |
V. Phase Roadmap
Phase 1: Production MVP (Week 1-4)
Goal: Karaoke + Restaurant verticals ready for real customers
Week 1-2: Payment & Real-time
| Task | Agent | Status | Depends On |
|---|---|---|---|
| VN Pay payment gateway integration | Senior Backend #1 | DONE |
wallet-service |
| Momo payment gateway integration | Senior Backend #2 | DEFERRED |
wallet-service (VNPay sufficient for MVP) |
| SignalR hub for real-time updates | Senior Backend #3 | DONE |
— |
| KDS push notifications via SignalR | Senior Backend #3 | DONE |
SignalR hub |
| Payment UI — connect to real gateway | Senior Frontend | DONE |
Payment backends |
| Order status push to POS | Senior Backend #3 | DONE |
SignalR hub |
Week 2-3: Data Integrity & Security
| Task | Agent | Status | Depends On |
|---|---|---|---|
| Kitchen → Inventory auto-deduction | Senior Backend #1 | DONE |
fnb-engine, inventory |
| Row-level security (all services) | Senior Backend #2 | DONE |
— |
| Rate limiting audit | DevOps | DONE |
— |
| Input sanitization audit | QA | DONE |
— |
| FnB Engine unit tests | QA | DONE |
— |
| Order lifecycle integration tests | QA | DONE |
29 tests, WebApplicationFactory |
Week 3-4: Polish & Deploy
| Task | Agent | Status | Depends On |
|---|---|---|---|
| EOD reports + daily close workflow | Senior Frontend | DONE |
order-service |
| Full regression testing | QA | TODO |
All P0 done |
| Staging K8s deployment | DevOps | DONE |
16 manifests + CI/CD |
| Grafana monitoring dashboards | DevOps | DONE |
Observability stack |
| Production deploy checklist | DevOps + CTO | DONE |
Staging verified |
| Load testing (100 concurrent users) | QA + DevOps | TODO |
Staging live |
Phase 2: Multi-Vertical Expansion (Week 5-8)
Goal: Cafe + Spa + Retail verticals fully operational
Week 5-6: Vertical Completion
| Task | Agent | Status | Depends On |
|---|---|---|---|
| Spa domain logic (appointments, therapists) | Senior Backend | DONE |
booking-service |
| Retail POS workflow (scan, stock, returns) | Senior Backend | DONE |
catalog, inventory |
| Cafe-specific (loyalty stamps, barista queue) | Senior Backend | DONE |
membership |
| Vertical-specific UI refinement | Senior Frontend | DONE |
Backend done |
| Multi-branch management features | Senior Backend | TODO |
merchant-service |
Week 7-8: Advanced Features
| Task | Agent | Status | Depends On |
|---|---|---|---|
| Advanced reports (revenue, staff perf) | Backend + Frontend | DONE |
order-service |
| Customer-facing menu (QR code) | Frontend | DONE |
catalog-service |
| Mobile-responsive POS layout | Frontend | TODO |
— |
| E2E tests per vertical (Playwright) | QA | DONE |
Verticals done |
| Observability stack activation | DevOps | DONE |
— |
| Production deployment (Karaoke + Restaurant) | DevOps + CTO | TODO |
Phase 1 stable |
Phase 3: Growth Features (Week 9-12)
Goal: Marketing, Ads, Mobile apps
Week 9-10: Marketing & CRM
| Task | Agent | Status | Depends On |
|---|---|---|---|
| Zalo OA integration | Backend | TODO |
mkt-zalo-service |
| Facebook Messenger integration | Backend | TODO |
mkt-facebook-service |
| CRM dashboard (segments, campaigns) | Frontend | TODO |
membership + social |
| Marketing automation UI | Frontend | TODO |
mkt backends |
| WhatsApp integration | Backend | TODO |
mkt-whatsapp-service |
Week 11-12: Mobile & Ads
| Task | Agent | Status | Depends On |
|---|---|---|---|
| iOS app v1 (customer-facing) | Senior Mobile (Swift) | TODO |
API stable |
| MAUI cross-platform app v1 | Senior MAUI Dev | TODO |
API stable |
| Ads serving + billing completion | Backend | TODO |
ads-* services |
| CDN + edge caching setup | DevOps | TODO |
— |
| Full platform production launch | CTO + All | TODO |
All phases done |
VI. Recently Completed
2026-03-06 (Phase 2 W7-8 — Production Readiness)
| Task | Agent | Details |
|---|---|---|
| Revenue Analytics Query | Backend | GetRevenueAnalyticsQuery (Dapper): daily/weekly/monthly trends, payment breakdown, top products, hourly chart |
| Staff Performance Query | Backend | GetStaffPerformanceQuery (Dapper): orders handled, completion rate, avg processing time per staff |
| Analytics Validators | QA | FluentValidation with runtime date check (Must vs LessThanOrEqualTo fix) |
| BFF Reports Proxy | Frontend | ReportsController: revenue-analytics + staff-performance endpoints |
| Public QR Menu | Frontend | PublicMenuController (no auth): /api/public/shops/{id} + /menu, PosDataService public methods |
| E2E Playwright Tests | QA | 8 spec files (auth, admin, karaoke, restaurant, cafe, retail, spa, reports), ~39 test cases |
| Prometheus Alert Rules | DevOps | 7 alerts: ServiceDown, HighErrorRate, HighLatency, DB pool, disk, memory, Redis, RabbitMQ |
| Grafana Dashboard | DevOps | 10-panel overview: HTTP metrics, infra health, business KPIs, .NET memory |
2026-03-06 (Observability & Production Readiness)
| Task | Agent | Details |
|---|---|---|
| Grafana Overview Dashboard | DevOps | 10-panel dashboard: service health (8 services), request rate, p50/p95/p99 latency, 4xx/5xx errors, SignalR connections, DB pool, Redis hit/miss, order metrics, .NET memory |
| Prometheus Scrape Config | DevOps | 11 scrape targets (8 core services + Traefik + Redis + RabbitMQ), 15s interval, service/tier labels |
| Prometheus Alert Rules | DevOps | 7 alerts: ServiceDown (1m), HighErrorRate (>5% 5xx), HighLatencyP95 (>2s), DB pool exhausted (>90%), disk (>85%), memory (>80%), Redis memory, RabbitMQ backlog |
| Grafana Dashboard Provisioning | DevOps | dashboard-provider.yml for auto-loading dashboards from file |
| Production Deployment Checklist | DevOps + CTO | 80+ checklist items: pre-deploy, infra, per-service, monitoring, security, rollback, post-deploy verification, sign-off |
| Docker Compose Observability | DevOps | Uncommented + enhanced Prometheus (v2.51.0), Grafana (v10.3.1), added Loki (v2.9.4), Promtail (v2.9.4) with healthchecks and volume mounts |
2026-03-06 (Phase 1 Sprint)
| Task | Agent | Details |
|---|---|---|
| VN Pay Payment Gateway | Backend #1 | IPaymentGateway abstraction + VnPayGateway (HMAC-SHA512, sandbox), Payment aggregate, PaymentsController (4 endpoints) |
| SignalR POS Hub | Backend #3 | PosHub (strongly-typed, 3 groups: shop/kds/pos), Redis backplane, MessagePack, 7 client methods, integrated into 4 order handlers |
| Kitchen → Inventory Deduction | Backend #1 | KitchenTicketServedDomainEvent → HTTP call to inventory-service, Polly retry + circuit breaker, idempotency, graceful degradation |
| Order Payment Flow | Backend #2 + Frontend | 3 payment flows (cash/card/online), PaymentPending status, WalletServiceClient, BFF proxy update, POS Cash/Card/QR components wired |
| Row-Level Security (5 services) | Backend #2 | ITenantProvider + EF global query filters + PostgreSQL RLS policies, defense-in-depth |
| FnB Engine Unit Tests (96 tests) | QA | 57 domain entity tests + 39 command handler tests, xUnit + Moq + FluentAssertions |
| Order Integration Tests (29 tests) | QA | Full order lifecycle (create/pay/complete/cancel), WebApplicationFactory + InMemory DB |
| Staging K8s Deployment | DevOps | 16 manifests (8 services + Redis + POS), Ingress, HPA, CI/CD workflows, deploy script |
| Account Management (Admin Settings) | Backend + Frontend | Full profile/merchant CRUD via BFF |
| Subscription System | Backend + Frontend | Merchant entity + EF + API + dynamic UI |
| User → Enterprise Plan | Backend + DB | hongochai10@icloud.com set to Enterprise (unlimited) |
| Subscription Controller | Backend | GET /me, /plans, /usage + POST /subscribe |
| ChangePassword Validator | Backend | FluentValidation for IAM auth |
| Traefik Route (subscriptions) | DevOps | /api/v1/subscriptions → merchant-service |
| Admin Settings 5-Tab UI | Frontend | Tai khoan, Bao mat, Goi dich vu, Thong bao, He thong |
2026-03-06 (Phase 2 Sprint 1 — Multi-Vertical)
| Task | Agent | Details |
|---|---|---|
| Spa Therapist Management | Backend | Therapist aggregate (specialties text[], workingHours jsonb), CRUD, 9 validators |
| Spa Appointment Scheduling | Backend | Appointment notes, Pending status, MarkNoShow, availability slots |
| Retail Barcode/SKU | Backend | Product barcode field, lookup query, POS scanner endpoint |
| Retail Stock Check | Backend | Bulk stock levels, low stock alerts, SetReorderLevel behavior |
| Retail Return/Exchange | Backend | ProcessReturn, CreateReturn/Exchange commands, Returned status, 2 domain events |
| Cafe Loyalty Stamps | Backend | StampCard aggregate, auto-create, AddStamp/ClaimReward/Reset, 4 domain events |
| Cafe Barista Queue | Backend | BaristaQueueItem (5-status workflow), queue stats, 5 commands |
2026-03-06 (Code Review Fixes)
| Task | Agent | Details |
|---|---|---|
| Code Review — 75 issues identified | All Agents | Backend (16), Frontend (11), Infrastructure (32), Tests (16) |
| Fix wallet-service EF Config | Backend #1 | Removed 11 conflicting Ignore() calls for mapped backing fields |
| Fix KitchenTicket constructor | Backend #1 | Removed short constructor that assigned productId=orderItemId, updated 14 test call sites |
| Fix fire-and-forget inventory deduction | Backend #1 | Replaced Task.Run with direct await for reliable inventory deduction |
| Implement TenantMiddleware RLS (4 services) | Backend #2 | wallet, fnb, inventory, catalog — PostgreSQL SET LOCAL for RLS |
| Fix SQL injection pattern in order-service | Backend #2 | Guid.ToString("D") for safe formatting in TenantMiddleware |
| Add SignalR Hub shop authorization | Backend #2 | ValidateShopAccess() check in PosHub JoinShop/JoinKds/JoinPos |
| Fix PosDataService false success on error | Frontend | PayOrderWithDetailsAsync now returns Success=false on parse failure |
| Fix QrPayment timer race condition | Frontend | Added _disposed guard for safe timer disposal |
| Add [Authorize] to BFF OrderController | Frontend | Require JWT for all BFF order endpoints |
| PostgreSQL 15 → 16 in docker-compose | DevOps | Match project spec |
| Add 4 missing databases to init-databases.sh | DevOps | mkt_facebook, mkt_whatsapp, mkt_x, mkt_zalo |
| Add Traefik routes (wallet, catalog, booking) | DevOps | Plus /api/v1/stock for inventory |
2026-03-06 (Phase 1 Close-out)
| Task | Agent | Details |
|---|---|---|
| EOD Reports + Daily Close | Backend + Frontend | GetEodReportQuery (Dapper), CloseDayCommand, EodReport.razor (6 KPIs, charts, top items) |
| Rate Limiting (4 tiers) | DevOps | auth (10/min), payment (30/min), api (100/min), hub (500/min) across all Traefik routers |
| Input Sanitization (44 validators) | QA + Backend | FluentValidation for all unprotected commands across 8 services |
| Critical Path Tests (30 tests) | QA | Inventory deduction (12), payment create/callback (14), kitchen event handler (8) |
2026-03-05
| Task | Agent | Details |
|---|---|---|
| IAM Service — EF Config for ApplicationUser | Backend | Private field mapping (first_name, last_name, etc.) |
| Merchant Profile — NullRef Fix | Backend | Enumeration.FromValue pattern for EF-ignored nav properties |
| BFF Proxy — Account endpoints | Backend | 15 endpoints proxying to IAM + Merchant services |
| AdminSettings.razor — Full implementation | Frontend | 846-line Blazor component with 5 tabs |
VII. Architecture Decisions Log
| Date | Decision | Rationale | Status |
|---|---|---|---|
| 2026-03-06 | IPaymentGateway in Domain, implementations in Infrastructure | Multiple gateways (VNPay, Momo) via same interface | ACTIVE |
| 2026-03-06 | PosHub in order-service (not separate service) | Order lifecycle owns real-time notifications | ACTIVE |
| 2026-03-06 | Kitchen→Inventory via HTTP + Polly (not message queue) | Simpler, sufficient for MVP, direct await (changed from fire-and-forget after code review) | ACTIVE |
| 2026-03-06 | 3 payment flows: cash (instant), card (instant), online (async) | Cash/card don't need gateway, only VNPay/Momo need redirect | ACTIVE |
| 2026-03-06 | Subscription stored in Merchant aggregate | Simple, no separate service needed for MVP | ACTIVE |
| 2026-03-06 | Static plan definitions in frontend + backend | 4 fixed tiers sufficient for MVP launch | ACTIVE |
| 2026-03-05 | BFF pattern for frontend-backend proxy | Single entry point, auth forwarding, response normalization | ACTIVE |
| 2026-03-05 | Neon PostgreSQL for staging/prod | Serverless, auto-scaling, branching for dev | ACTIVE |
| — | Clean Architecture + CQRS | Separation of concerns, testability | ACTIVE |
| — | MediatR pipeline (Log → Validate → Transaction → Handle) | Cross-cutting concerns | ACTIVE |
| — | Bilingual docs (EN + VI) | Team accessibility | ACTIVE |
VIII. Environment & Access
| Environment | URL | Database | Status |
|---|---|---|---|
| Local (Docker) | localhost:3001 (POS), :5001 (IAM), :5005 (Merchant) | PostgreSQL local container | ACTIVE |
| Local (dotnet run) | localhost:5092 (POS), :5001 (IAM), :5005 (Merchant) | Neon PostgreSQL | ACTIVE |
| Staging | api.staging.goodgo.vn | Neon PostgreSQL | TODO |
| Production | goodgo.vn / admin.goodgo.vn | Neon PostgreSQL | TODO |
Test Accounts
| Password | Role | Subscription | |
|---|---|---|---|
| hongochai10@icloud.com | Test@12345 | Admin / Owner | Enterprise (unlimited) |
IX. How to Update This File
- When starting a task: Change status to
IN-PROGRESS - When completing: Change to
DONEand add to "Recently Completed" - When blocked: Change to
BLOCKEDand add note - Weekly: CTO reviews and reprioritizes
- After each sprint: Update metrics in Section I
Agent Workflow
CTO → Analyze requirement → Update ROADMAP.md with new tasks
Tech Lead → Breakdown tasks → Assign to agents
Backend Dev → Implement → Update status to DONE
Frontend Dev → Implement → Update status to DONE
QA → Test → Report issues or confirm DONE
DevOps → Deploy → Update environment status
CTO → Review → Move to "Recently Completed"
This file is the single source of truth for GoodGo Platform development progress. All agents should consult this file before starting work and update it after completing tasks.