Files
InvestPlay/README.md
Lefteris Notas e75f913f1c
Some checks failed
CI / Lint (push) Has been cancelled
CI / TypeCheck (push) Has been cancelled
CI / Test (push) Has been cancelled
Deploy / Docker Build & Push (map[context:. dockerfile:apps/api/Dockerfile name:api]) (push) Has been cancelled
Deploy / Docker Build & Push (map[context:. dockerfile:apps/cms/Dockerfile name:cms]) (push) Has been cancelled
Deploy / Docker Build & Push (map[context:. dockerfile:apps/web/Dockerfile name:web]) (push) Has been cancelled
CI / Build (push) Has been cancelled
Deploy / Deploy (push) Has been cancelled
feat: complete Phase 1 foundation scaffold
- Monorepo: Turborepo + pnpm workspaces with 7 apps/packages
- Backend: NestJS scaffold with 9 modules (auth, tenant, curriculum, simulation, portfolio, ai-coach, analytics, classroom, gamification)
- Frontend: React 18 + Vite + TailwindCSS + shadcn/ui with 10 pages, 14 UI primitives, 3 Zustand stores
- Database: Prisma schema with 19 models, 13 enums, seed script, multi-tenant ready
- Docker: Dev, production, and Portainer Compose files with Traefik reverse proxy
- Configuration: .env.example (47 vars), Zod validation, frontend-safe env exposure
- i18n: English + Greek locale files (10 files), ICU MessageFormat, react-i18next
- Shared packages: @investplay/types, @investplay/ui, @investplay/i18n, @investplay/utils
- CI/CD: GitHub Actions (lint, typecheck, test, build, deploy, PR checks)
- Documentation: CONTEXT.md, ARCHITECTURE.md (10 Mermaid diagrams), API.md, LOCALIZATION.md, DEVELOPMENT-ROADMAP.md
- Infrastructure: Dockerfiles (dev + prod), nginx configs, backup/healthcheck scripts
- Security: JWT auth guards, role-based access, rate limiting, Helmet, CORS, PII sanitization
2026-06-12 19:32:57 +03:00

3.9 KiB

InvestPlay

Financial literacy education platform — Teaching students to invest wisely through interactive simulations, gamified learning, and AI-powered coaching.

Architecture

InvestPlay is a Turborepo monorepo managed with pnpm workspaces.

investplay/
├── apps/
│   ├── api/          # NestJS backend (REST, GraphQL, WebSocket)
│   ├── web/          # React + Vite + TailwindCSS frontend
│   └── cms/          # Payload CMS (content management)
├── packages/
│   ├── types/        # @investplay/types — shared TypeScript types
│   ├── ui/           # @investplay/ui — shared UI components (shadcn/ui)
│   ├── i18n/         # @investplay/i18n — translations (en, el)
│   └── utils/        # @investplay/utils — shared utilities
└── docs/             # Architecture and design documentation

Tech Stack

Layer Technology
Monorepo Turborepo + pnpm workspaces
Backend NestJS, Prisma, GraphQL, Socket.io, BullMQ
Frontend React 18, Vite, TailwindCSS, shadcn/ui
CMS Payload CMS
Database PostgreSQL (via Prisma)
Cache/Queue Redis, BullMQ
AI Azure OpenAI (Managed / BYOK)
i18n i18next, react-i18next
Testing Vitest, Playwright, Testing Library

Getting Started

Prerequisites

  • Node.js >= 20
  • pnpm >= 9

Install

pnpm install

Development

Start all services in development mode:

pnpm dev

Or start individual apps:

pnpm --filter @investplay/api dev    # API server (port 3001)
pnpm --filter @investplay/web dev    # Web app (port 3000)
pnpm --filter @investplay/cms dev    # CMS (port 3002)

Code Quality

pnpm lint        # Lint all packages
pnpm typecheck   # TypeScript type checking
pnpm test        # Run all tests
pnpm format      # Format code with Prettier
pnpm build       # Build all packages

Packages

@investplay/types

Shared TypeScript interfaces and enums for users, tenants, curriculum, simulations, gamification, classrooms, analytics, and AI coaching.

@investplay/ui

Shared UI component library built on shadcn/ui primitives with TailwindCSS design tokens. Includes utility functions (cn, formatCurrency, formatXP, formatPercentage).

@investplay/i18n

Internationalization layer using i18next. Supports English (en) and Greek (el) with namespaced translations for UI, finance terms, gamification, classroom management, and AI coach.

@investplay/utils

Shared utilities: Zod validation schemas, formatting functions (currency, dates, numbers, percentages), and application constants.

Apps

API (apps/api)

NestJS backend providing:

  • GraphQL API (Apollo Server)
  • REST endpoints
  • Real-time WebSocket events (Socket.io)
  • Queue-based job processing (BullMQ)
  • Prisma ORM for database access

Web (apps/web)

React 18 SPA with:

  • Vite for fast development and builds
  • TailwindCSS with InvestPlay design tokens
  • React Router for client-side routing
  • TanStack Query for server state management
  • Zustand for client state
  • Recharts for data visualization
  • Socket.io client for real-time updates

CMS (apps/cms)

Payload CMS for managing:

  • Curriculum content and lesson blocks
  • Simulation configurations
  • Badges and achievements
  • User and tenant management

Contributing

  1. Create a feature branch: git checkout -b feat/your-feature
  2. Make your changes
  3. Run pnpm lint and pnpm typecheck and pnpm test
  4. Commit using conventional commits: feat:, fix:, docs:, etc.
  5. Open a pull request

License

See licence.md.