Files
goodgo-platform/docs/audits/COMPREHENSIVE_CODEBASE_AUDIT.md
Ho Ngoc Hai 59272e9321 chore(docs): consolidate 22 audit files from root into docs/audits/
Root directory had accumulated audit/exploration markdown files cluttering
the project root. Moved all audit-related files to docs/audits/ with a
README.md index, and updated cross-references in K6_LOAD_TESTING_GUIDE.md
and README_FRONTEND_DOCS.md.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-10 23:16:00 +07:00

15 KiB

GoodGo Platform AI - Comprehensive Codebase Audit Report

Date: April 10, 2026 | Repository: /Users/velikho/Desktop/WORKING/goodgo-platform-ai


Executive Summary

Overall Health: ⚠️ GOOD with Security Issues

  • Build Status: Passing (Web + API)
  • Test Coverage: 166 test files (30% coverage ratio)
  • ⚠️ Security: 11 vulnerabilities detected (1 critical, 3 high)
  • ⚠️ Test Coverage Gaps: 5 modules below 40% coverage
  • Infrastructure: Production-ready (Docker, CI/CD)
  • ⚠️ Missing Features: 3 of 5 Sprint items not implemented

1. SECURITY ISSUES

Critical Issues

1.1 Axios SSRF Vulnerability [CRITICAL]

  • Severity: CRITICAL
  • Issue: Axios has a NO_PROXY Hostname Normalization Bypass leading to SSRF
  • Affected Package: axios < 1.15.0 (via typesense > axios)
  • Path: apps__api > typesense > axios
  • Risk: Server-side request forgery attacks possible
  • Recommendation:
    • Update typesense dependency to use axios >= 1.15.0
    • Pin axios version explicitly in package.json

1.2 Next.js HTTP Request Deserialization DoS [HIGH]

  • Severity: HIGH
  • Issue: Next.js < 15.0.8 vulnerable to DoS when using insecure React Server Components
  • Affected Package: next ^14.2.0 (apps/web/package.json:33)
  • Current Version: 14.2.0 (vulnerable)
  • Recommendation:
    • Upgrade to Next.js ^15.0.8
    • Test compatibility before production deployment

1.3 Lodash Code Injection & Prototype Pollution [HIGH]

  • Severity: HIGH
  • Issues: Two vulnerabilities in lodash <= 4.17.23
    1. Code Injection via _.template imports
    2. Prototype Pollution via _.unset and _.omit
  • Affected Path: apps__api > @nestjs/config > lodash
  • Recommendation:
    • Update @nestjs/config to use lodash >= 4.18.0
    • Check if lodash can be removed or replaced with native JS

1.4 path-to-regexp DoS Vulnerabilities [HIGH]

  • Severity: HIGH
  • Issues: Two DoS vulnerabilities (sequential optional groups, regex DoS)
  • Affected Path: apps__api > @nestjs/swagger > path-to-regexp
  • Current Version: < 8.4.0 (vulnerable)
  • Recommendation:
    • Update @nestjs/swagger to use path-to-regexp >= 8.4.0

High Priority Issues

1.5 Next.js Image Optimizer Issues [MODERATE/HIGH]

  • Issues (3):
    1. DoS via remotePatterns configuration (< 15.5.10)
    2. HTTP request smuggling in rewrites (< 15.5.13)
    3. Unbounded disk cache growth (< 15.5.14)
  • Current Version: 14.2.0 (all vulnerable)
  • Recommendation: Upgrade to Next.js ^15.5.14

Medium Priority Issues

1.6 Moderate Vulnerabilities [MODERATE]

  • @hono/node-server < 1.19.13: Middleware bypass via repeated slashes
  • @tootallnate/once < 3.0.1: Incorrect control flow scoping
  • Multiple Next.js vulnerabilities affecting image and request handling

Total Dependencies with Issues: 6 packages Action Required: 6 high/critical issues MUST be fixed before production


2. SECURITY BEST PRACTICES

Positive Findings

Environment Configuration:

  • .env is NOT committed to git (correctly listed in .gitignore)
  • .env.example exists with template values (71 environment variables documented)
  • .env.test provided for test environment
  • No hardcoded secrets found in TypeScript code

API Security Headers (apps/api/src/main.ts):

  • Helmet.js configured with strong CSP directives
  • CORS properly enforced with environment variable validation
  • Production CORS requires CORS_ORIGINS to be set
  • HSTS, X-Frame-Options, Permissions-Policy configured
  • Cookie parser for CSRF protection
  • Rate limiting trust proxy configuration

CI/CD Security:

  • E2E tests use separate CI credentials (not production)
  • Test database password safely isolated
  • JWT secrets in CI are test-only values

Remaining Gaps

⚠️ Typesense CORS:

  • Line 50 in docker-compose.yml: TYPESENSE_ENABLE_CORS: 'true' (acceptable for dev)
  • Recommendation: Disable in production or restrict origins

⚠️ Password Storage:

  • Production secrets use Docker secrets manager (good)
  • Grafana admin credentials properly isolated
  • Recommendation: Ensure all production secrets use secrets manager

3. TEST COVERAGE ANALYSIS

Summary Statistics

  • Total Source Files: 557 (API: 509, Frontend: 48)
  • Total Test Files: 166 (API: 166, Frontend: 0)
  • Overall Coverage Ratio: 30% (166 tests / 557 sources)

Module Breakdown (API)

Module Sources Tests Coverage Status
admin 66 14 21% 🔴 LOW
agents 11 4 36% 🟠 MEDIUM
analytics 49 18 37% 🟠 MEDIUM
auth 72 21 29% 🔴 LOW
health 5 3 60% 🟢 GOOD
inquiries 19 5 26% 🔴 LOW
leads 23 6 26% 🔴 LOW
listings 55 13 24% 🔴 LOW
mcp 3 1 33% 🟠 MEDIUM
metrics 7 2 28% 🔴 LOW
notifications 32 17 53% 🟡 FAIR
payments 38 13 34% 🟠 MEDIUM
reviews 23 8 35% 🟠 MEDIUM
search 33 10 30% 🔴 LOW
shared 38 18 47% 🟡 FAIR
subscriptions 35 13 37% 🟠 MEDIUM

High Priority Coverage Gaps

CRITICAL: Modules with <30% coverage:

  • listings (24%): 55 sources, only 13 tests — core business logic
  • leads (26%): 23 sources, only 6 tests
  • inquiries (26%): 19 sources, only 5 tests
  • search (30%): 33 sources, only 10 tests
  • auth (29%): 72 sources, only 21 tests — security-critical

Reviews Controller Test Status

File: apps/api/src/modules/reviews/presentation/__tests__/reviews.controller.spec.ts

  • Status: Tests Pass (not failing)
  • Coverage: 100% of controller methods tested
    • createReview with/without comment (lines 21-49)
    • getReviewsByTarget with defaults and custom params (lines 52-80)
    • getStats for average rating (lines 83-98)
    • getMyReviews (lines 101-116)
    • deleteReview (lines 119-133)
  • Note: Test uses mocked buses; handler logic not fully tested

Frontend Test Coverage

  • Frontend source files: 48 .tsx files
  • Frontend test files: 0 (No tests in apps/web/)
  • Status: 🔴 CRITICAL GAP
  • Recommendation: Add vitest configuration and tests for critical UI components

4. BUILD STATUS

Build Outcome: SUCCESSFUL

Command: pnpm build Result: All tasks successful (3/3), 27.633s

Build Details:

  • API Build: NestJS compilation successful
  • Web Build: Next.js production build successful (44 routes pre-rendered)
  • Artifacts: Cached where appropriate

Build Statistics:

  • 44 static routes pre-rendered
  • First Load JS: 157 kB (shared)
  • Middleware: 98.6 kB
  • No TypeErrors or runtime errors

5. MISSING SPRINT FEATURES FROM BLUEPRINT

Sprint Item Implementation Status

Feature Status Evidence Priority
Saved Searches + Alerts NOT IMPLEMENTED No SavedSearch entity, handlers, or routes found HIGH
Transaction Flow (Inquiry→Deposit→Complete) NOT IMPLEMENTED Deposit logic not found in payments or inquiries modules HIGH
Agent Quality Score Calculation IMPLEMENTED apps/api/src/modules/agents/ has quality score calculation, recalculation handler, and event listener (review-based) DONE
Mobile App Preparation PARTIALLY IMPLEMENTED FCM push notifications configured (fcm.service.ts), API versioning ready for mobile, but no mobile app repo found IN-PROGRESS
Agent Cooperation Network NOT IMPLEMENTED No cooperation network entities, referral system, or network features in agents module HIGH

Implementation Details

Agent Quality Score: Working

  • File: apps/api/src/modules/agents/domain/__tests__/quality-score.spec.ts
  • Handler: recalculate-quality-score.handler.ts
  • Listener: review-events.listener.ts (updates score on review creation/deletion)
  • Dashboard: get-agent-dashboard.handler.ts includes score data

Missing Critical Features:

  1. Saved Searches: Would require:

    • SavedSearch entity in Prisma schema
    • Search/Queries/SavedSearchQuery handler
    • Commands/SaveSearchCommand, Commands/DeleteSavedSearchCommand
    • Alerts system for price changes or new listings
  2. Deposit Transaction Flow: Would require:

    • Deposit entity for escrow/payment holds
    • Transaction state machine (pending → completed → released)
    • Integration with payment gateways (VNPay, MoMo, ZaloPay)
    • Currently only has generic payments module
  3. Agent Cooperation Network: Would require:

    • Agent referral/relationship entities
    • Network topology storage
    • Incentive/commission calculation
    • Network analytics

6. CODE QUALITY ISSUES

Large Files (>200 lines) ⚠️

File Lines Issue Severity
postgres-search.repository.ts 360 Complex search query builder MEDIUM
prisma-avm.service.ts 224 Property valuation service MEDIUM
listings.controller.ts 212 Many endpoint handlers MEDIUM
zalopay.service.ts 205 Payment gateway integration LOW
momo.service.ts 203 Payment gateway integration LOW

Recommendation: Refactor large files by extracting pure functions into utility modules

Code Cleanliness

No TODO/FIXME/HACK Comments Found

  • Codebase is clean with no technical debt markers
  • All code paths appear intentional

No Unused Imports

  • TypeScript compiler verification passed
  • ESLint configuration active

No Hardcoded Secrets in Code

  • All secrets use process.env
  • Test credentials properly isolated in .env.test

7. INFRASTRUCTURE & DEPLOYMENT

Docker Compose Files

Files:

  • docker-compose.yml (development)
  • docker-compose.ci.yml (CI/CD)
  • docker-compose.prod.yml (production)

Services Configured:

  1. PostgreSQL 16 with PostGIS extension (spatial queries)
  2. Redis 7 with LRU eviction policy
  3. Typesense 27.1 (full-text search)
  4. MinIO (S3-compatible object storage)
  5. AI Services (Python/FastAPI)
  6. PgBouncer (production connection pooling)
  7. Monitoring: Prometheus, Loki, Grafana

CI/CD Workflow

File: .github/workflows/ci.yml

Pipeline Stages:

  1. Lint - ESLint validation
  2. Typecheck - TypeScript compilation
  3. Test - Unit & integration tests
  4. Build - Production builds
  5. E2E Tests - Playwright integration tests (with full stack)

E2E Stack:

  • PostgreSQL 16 + PostGIS
  • Redis 7
  • Typesense 27.1
  • MinIO latest
  • Playwright for browser testing

Deployment Readiness:

  • Health checks configured for all services
  • Container networking established (goodgo-net)
  • Volume persistence configured
  • Secrets manager for production credentials
  • PgBouncer connection pooling

8. FRONTEND STATE

Route Completeness

Total Pages: 21 routes + 3 API routes

Core Pages Present:

  • Landing Page: /[locale]/ (public)
  • Search: /[locale]/search
  • Listing Detail: /[locale]/listings/[id]
  • Listing Edit: /[locale]/listings/[id]/edit
  • Auth Pages:
    • /[locale]/login
    • /[locale]/register
    • /[locale]/auth/callback/google
    • /[locale]/auth/callback/zalo
  • Dashboard Pages (6 routes):
    • /[locale]/dashboard (overview)
    • /[locale]/dashboard/kyc (KYC verification)
    • /[locale]/dashboard/profile
    • /[locale]/dashboard/payments
    • /[locale]/dashboard/subscription
    • /[locale]/dashboard/valuation
  • Admin Pages (4 routes):
    • /[locale]/admin (overview)
    • /[locale]/admin/kyc (KYC review)
    • /[locale]/admin/moderation (content moderation)
    • /[locale]/admin/users (user management)
  • Analytics: /[locale]/analytics
  • Listings Management: /[locale]/listings/new

Missing Pages:

  • Saved Searches UI (no route)
  • Mobile app (web-only for now)
  • ⚠️ Agent profile (public view not found)

SEO & Performance

  • JSON-LD structured data (recent commit 50c5168)
  • Dynamic sitemap (sitemap.ts)
  • robots.txt configuration
  • i18n support (vi/en localization)
  • Next.js 14.2 with optimizations

Test Coverage

  • Frontend Components: 0 test files
  • Frontend Pages: 0 test files
  • Vitest configured: (vitest.config.ts, vitest.setup.ts)
  • Status: Framework ready but no tests written

Recommendation: Add component tests for:

  • Form components (LoginForm, RegisterForm)
  • Search filters
  • Listing detail view
  • Payment flows

9. DEPENDENCY SECURITY SUMMARY

Vulnerability Breakdown

Total Issues: 11 vulnerabilities

Severity Count Action
🔴 CRITICAL 1 MUST FIX BEFORE PROD
🔴 HIGH 3 MUST FIX BEFORE PROD
🟠 MODERATE 6 FIX BEFORE RELEASE
🟡 LOW 1 Fix in next update

Affected Packages

  1. axios (via typesense) — CRITICAL SSRF
  2. next — Multiple HIGH/MODERATE issues (need upgrade to 15.5.14)
  3. lodash (via @nestjs/config) — HIGH code injection
  4. path-to-regexp (via @nestjs/swagger) — HIGH DoS
  5. @hono/node-server — MODERATE bypass
  6. @tootallnate/once — LOW control flow

SUMMARY OF FINDINGS

🔴 Critical Issues (Must Fix)

  1. Axios SSRF Vulnerability - Server-side request forgery risk
  2. Next.js Deserialization DoS - Application crash risk
  3. Lodash Code Injection - RCE potential in template processing

🟠 High Priority Issues

  1. path-to-regexp DoS - Denial of service attack vectors
  2. Next.js Image Optimizer - Multiple DoS and security issues
  3. Test Coverage Gaps - 5 modules <40% coverage
  4. Frontend Tests Missing - 0 test files for React components

🟡 Medium Priority Issues

  1. Large Files - postgres-search.repository.ts (360 lines)
  2. Missing Sprint Features - 3 of 5 items not implemented
  3. Moderate Vulnerabilities - 6 packages need updates

Strengths

  • Clean code (no TODOs, no hardcoded secrets)
  • Strong security headers in place
  • Production-ready infrastructure
  • CI/CD pipeline comprehensive
  • Build status: Passing

RECOMMENDATIONS (Prioritized)

IMMEDIATE (Before Production)

  1. Update axios → Patch typesense or pin axios >= 1.15.0
  2. Update Next.js → 15.5.14+ (fixes 4 vulnerabilities)
  3. Update lodash → 4.18.0+ (via @nestjs/config update)
  4. Update path-to-regexp → 8.4.0+ (via @nestjs/swagger)

HIGH PRIORITY (This Sprint)

  1. Add Frontend Tests → Set up component tests for critical UI
  2. Improve Coverage → Target 50%+ for admin, listings, auth modules
  3. Implement Missing Features:
    • Saved Searches UI & backend
    • Deposit transaction flow
    • Agent cooperation network

MEDIUM PRIORITY (Next Sprint)

  1. Refactor Large Files → Split postgres-search.repository.ts
  2. Document API → Maintain Swagger docs for payment flows
  3. Monitor Dependencies → Set up Dependabot for automated updates

Report Generated: April 10, 2026 Next Audit: Recommended after implementing critical fixes