Unified digital platform for New Valley Governorate, Egypt — connecting tourists, residents, merchants, guides, investors, and government in a single Arabic-first experience.
Click above to explore the full platform — every screen, every user flow, every connection — as an interactive map.
- Tourist Guide — attractions, coordinates, photos, tips across the New Valley
- Market Directory — listings, price index, business directory, supplier contacts
- Investment Opportunities — investment deals, startup pitches, applications, tracking
- Employment Board — job postings, worker applications, compensation negotiation, mutual reviews
- Guide Booking — request, confirm, and manage tours with local guides
- Logistics Network — carpool rides, distribution, supply chain, driver coordination
- Benefits & Government Services — public services and benefit programs for residents
- Points of Interest — community-curated map with photos, status, and reviews
- AI Concierge — RAG chatbot in Egyptian Arabic, backed by a curated knowledge base
- Unified Search — full-text Arabic search across all services
| Layer | Technology |
|---|---|
| Backend (4 services) | NestJS 11, Node.js 22 LTS |
| AI Service | FastAPI, Python 3.12 |
| Database | PostgreSQL 16 + PostGIS |
| Document Store | MongoDB 7 (AI service only) |
| Cache / Events | Redis 7 (Streams) |
| Vector DB | Qdrant |
| LLM / Embeddings | OpenAI gpt-4o-mini / text-embedding-3-small |
| Frontend | React 18, Vite, React Router v7 |
| UI Components | Radix UI, Tailwind CSS, shadcn/ui |
| State Management | TanStack Query v5 |
| Maps | Leaflet, React Leaflet |
| ORM | Drizzle ORM |
| API Gateway | Nginx |
| Monorepo | pnpm workspaces (NestJS) + uv (Python) |
| Infrastructure | Docker Compose, GitHub Actions + Contabo VPS |
- Node.js 22 LTS (
nvm use) - pnpm 9+
- Python 3.12 + uv
- Docker + Docker Compose
# 1. Install dependencies and build shared packages
make setup
# 2. Copy and configure environment variables
cp .env.example .env
# Edit .env with your credentials (DATABASE_URL, REDIS_PASSWORD, JWT_SECRET, etc.)
# 3. Start infrastructure (Postgres, Redis, Qdrant)
make infra
# 4. Run backend services (all 4 NestJS services with hot-reload)
make dev
# 5. Run frontend (in a new terminal)
make web
# 6. (Optional) Run AI service (in a new terminal)
make aiIf you prefer verbose commands or need fine-grained control:
# Setup
pnpm install
pnpm --filter @hena-wadeena/types build
pnpm --filter @hena-wadeena/nest-common build
# Infrastructure
docker compose -f docker-compose.yml -f docker-compose.dev.yml up -d postgres redis qdrant
# Backend services (all 4)
pnpm dev
# Or run individual services
pnpm --filter @hena-wadeena/identity dev
pnpm --filter @hena-wadeena/market dev
pnpm --filter @hena-wadeena/guide-booking dev
pnpm --filter @hena-wadeena/map dev
# Frontend
pnpm --filter @hena-wadeena/web dev
# AI service
cd services/ai && uv sync && uv run uvicorn nakheel.main:app --reload --port 8005make help # Show all available commands
make setup # Install deps + build shared packages
make infra # Start postgres, redis, qdrant
make infra-down # Stop infrastructure
make dev # Run all NestJS services (hot-reload)
make web # Run React frontend (hot-reload)
make ai # Run Python AI service (hot-reload)
make health # Check all services are running
make seed # Seed all databases (essential layer)
make build # Build all packages + services
make test # Run all tests
make validate # lint + typecheck + test + knip + audit + build
make logs # Tail infrastructure logs
make clean # Stop containers, remove volumes + distAfter starting the services, check their health:
make healthExpected output:
── identity OK
── market OK
── guide-booking OK
── map OK
── ai OK
# Infrastructure only (default - for local development)
docker compose up -d
# or: make infra
# Full backend stack (production profile)
COMPOSE_PROFILES=prod docker compose up -d
# With AI service
COMPOSE_PROFILES=prod,ai docker compose up -dhena-wadeena/
├── apps/web/ # React frontend (@hena-wadeena/web)
├── packages/
│ ├── types/ # @hena-wadeena/types — shared TypeScript types
│ └── nest-common/ # @hena-wadeena/nest-common — shared NestJS modules
├── services/
│ ├── identity/ # Auth, users, KYC, notifications, moderation :8001
│ ├── market/ # Listings, commodities, investments, directory :8002
│ ├── guide-booking/ # Attractions, guides, tours, bookings :8003
│ ├── map/ # POIs, carpool, moderation :8004
│ └── ai/ # RAG chatbot, Egyptian Arabic (Python) :8005
├── gateway/ # Nginx config :8000
├── scripts/seed/ # Database seed scripts (essential + showcase)
└── docs/ # Architecture, specs, proposals
Each component has detailed documentation:
- Frontend - React app setup, architecture, features
- Gateway - Nginx routing, rate limiting, CORS
- Services:
- Identity Service - Auth, users, KYC, notifications
- Market Service - Listings, commodities, investments
- Guide-Booking Service - Attractions, guides, tours
- Map Service - POIs, carpool, geospatial features
- AI Service - RAG chatbot, Egyptian Arabic
- Packages:
- @hena-wadeena/types - Shared TypeScript types
- @hena-wadeena/nest-common - NestJS utilities
- Seed Scripts - Database seeding guide
Apache 2.0 — see LICENSE.