Ho Ngoc Hai 36c1e3b39a fix(web): add proper Vietnamese diacritics to all dashboard and listing pages
Vietnamese text throughout the frontend was missing accent marks (diacritics),
using plain ASCII instead of proper Unicode characters. Fixed all user-visible
text across dashboard, analytics, listings, search, and chart components.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-08 13:21:37 +07:00

GoodGo Platform AI

Vietnam's intelligent real estate platform — property search, AI-powered valuation, and end-to-end transaction management.

Tech Stack

Layer Technology
Backend NestJS 11, TypeScript, Prisma ORM, CQRS
Frontend Next.js 14, React 18, Tailwind CSS, Zustand
Database PostgreSQL 16 + PostGIS 3.4
Search Typesense 27
Cache/Queue Redis 7
AI/ML FastAPI, XGBoost, Claude API, Underthesea
MCP Model Context Protocol servers (property search, valuation, analytics)
Storage MinIO (S3-compatible)
Monitoring Prometheus + Grafana
Payments VNPay, MoMo, ZaloPay

Architecture Overview

┌─────────────┐     ┌──────────────┐     ┌──────────────────┐
│  Next.js 14 │────▶│  NestJS API  │────▶│  PostgreSQL +    │
│  (Web App)  │     │  (REST)      │     │  PostGIS         │
└─────────────┘     └──────┬───────┘     └──────────────────┘
                           │
              ┌────────────┼────────────┐
              │            │            │
        ┌─────▼──┐  ┌──────▼───┐  ┌────▼─────┐
        │ Redis  │  │Typesense │  │  MinIO   │
        │ Cache  │  │ Search   │  │ Storage  │
        └────────┘  └──────────┘  └──────────┘
              │
        ┌─────▼──────────────────────────┐
        │  MCP Servers                   │
        │  ├─ Property Search            │
        │  ├─ Market Analytics           │
        │  └─ Valuation                  │
        └─────────────┬─────────────────┘
                      │
              ┌───────▼────────┐
              │  AI Services   │
              │  (FastAPI)     │
              │  ├─ AVM        │
              │  └─ Moderation │
              └────────────────┘

Monorepo Structure

goodgo-platform-ai/
├── apps/
│   ├── api/              # NestJS backend (port 3000)
│   └── web/              # Next.js frontend (port 3001)
├── libs/
│   ├── ai-services/      # Python FastAPI — AVM + content moderation
│   └── mcp-servers/      # MCP server implementations
├── prisma/               # Database schema & migrations
├── e2e/                  # Playwright E2E tests
├── monitoring/           # Prometheus & Grafana configs
└── docs/                 # Developer documentation

Quick Start

Prerequisites

  • Docker Engine 24+ & Docker Compose v2
  • Node.js 22 LTS
  • pnpm 10.27+ (corepack enable && corepack prepare pnpm@latest --activate)

Setup

# 1. Clone the repository
git clone <repo-url> && cd goodgo-platform-ai

# 2. Copy environment file
cp .env.example .env

# 3. Start infrastructure services
docker compose up -d

# 4. Verify services are healthy
docker compose ps

# 5. Install dependencies
pnpm install

# 6. Generate Prisma client
pnpm db:generate

# 7. Run database migrations
pnpm db:migrate:dev

# 8. Seed the database (optional)
pnpm db:seed

# 9. Start all apps in dev mode
pnpm dev

The API will be available at http://localhost:3000 and the web app at http://localhost:3001.

Infrastructure Services

Service Port(s) Dashboard
PostgreSQL + PostGIS 5432
Redis 6379
Typesense 8108 http://localhost:8108/health
MinIO 9000 / 9001 http://localhost:9001 (console)
AI Services (FastAPI) 8000 http://localhost:8000/health
Prometheus 9090 http://localhost:9090
Grafana 3002 http://localhost:3002

Development

Common Commands

pnpm dev              # Start all apps (API + Web)
pnpm build            # Build all packages
pnpm lint             # Run ESLint
pnpm typecheck        # TypeScript type checking
pnpm format           # Format with Prettier
pnpm test             # Run unit/integration tests

Database

pnpm db:generate      # Regenerate Prisma client
pnpm db:migrate:dev   # Create and apply migrations
pnpm db:migrate:deploy # Apply migrations (CI/production)
pnpm db:seed          # Seed database
pnpm db:studio        # Open Prisma Studio (visual editor)
pnpm db:reset         # Reset database (destructive)

E2E Testing

pnpm test:e2e         # Run all E2E tests
pnpm test:e2e:api     # API tests only
pnpm test:e2e:web     # Web UI tests only
pnpm test:e2e:report  # Open HTML test report

API Modules

Module Description
auth Registration, login, JWT + refresh token rotation, OAuth (Google/Zalo), KYC
listings Property listing CRUD, status workflow, media management
search Typesense full-text search with geo-spatial filters
payments VNPay, MoMo, ZaloPay integration
subscriptions Plan management, usage tracking
notifications Email and in-app notifications
admin Listing moderation, user management
analytics Market reports, price indices, AVM integration
mcp MCP server bridge (property search, valuation, analytics)
metrics Prometheus metrics endpoint

Each module follows Domain-Driven Design with presentation/, application/, domain/, and infrastructure/ layers.

Documentation

License

Proprietary — All rights reserved.

Description
Mirror of goodgo-bds-platform-ai from GitHub
Readme 18 MiB
Languages
TypeScript 95.4%
Python 2.7%
Shell 0.9%
JavaScript 0.8%
Dockerfile 0.1%