5.8 KiB
5.8 KiB
Technology Stack
Analysis Date: 2026-04-27
Languages
Primary:
- TypeScript 5.9.3 (server), 5.7.3 (client) - Strict mode enabled, full type safety across codebase
Secondary:
- JavaScript (build outputs, scripts)
- HTML/CSS (frontend templates)
Runtime
Environment:
- Node.js (version not pinned, assumed LTS) - Used for both server and client dev/build
- ES2023 target (server), ES2022 target (client)
Package Manager:
- npm - Lockfiles present for both client and server
Frameworks
Core Frontend:
- React 19.2.0 - UI framework
- React Router DOM 7.12.0 - Client-side routing
- Vite 7.2.4 - Build tool and dev server
Core Backend:
- NestJS 11.0.1 - Web framework with TypeScript-first design
- Express (via
@nestjs/platform-express) - Underlying HTTP server
Frontend Styling:
- Tailwind CSS 4.1.18 - Utility-first CSS framework
@tailwindcss/viteplugin for Vite integration
Testing & Development:
- Jest 30.0.0 - Test runner (server-side only, configured in package.json)
- ts-jest - TypeScript support for Jest
- Supertest 7.0.0 - HTTP assertion library (server integration tests)
- @vitejs/plugin-react - React fast refresh for Vite
Key Dependencies
Critical Server:
@prisma/client7.2.0 - ORM and database abstraction layerprisma7.2.0 - CLI and schema management tool@anthropic-ai/sdk0.71.2 - Claude API for on-demand German translationssocket.io4.8.3 - WebSocket library for real-time communication@nestjs/websockets11.1.12 - NestJS WebSocket integration@nestjs/platform-socket.io11.1.12 - Socket.io adapter for NestJS@nestjs/jwt11.0.2 - JWT authentication provider@nestjs/passport11.0.5 - Passport.js integration for authenticationpassport-jwt4.0.1 - JWT strategy for Passportbcrypt6.0.0 - Password hashingclass-validator0.14.3 - Request DTO validationclass-transformer0.5.1 - DTO transformation@nestjs/swagger11.2.5 - OpenAPI/Swagger documentation@nestjs/config4.0.2 - Environment configuration managementdotenv17.2.3 - .env file loading
Critical Client:
axios1.13.2 - HTTP client library for API requestssocket.io-client4.8.3 - WebSocket client for real-time updateszustand5.0.10 - Client state management (auth store)@tanstack/react-query5.90.19 - Server state and data fetching (caching, synchronization)react-router-dom7.12.0 - Client-side routingframer-motion12.26.2 - Animation librarylucide-react0.562.0 - Icon library (SVG icons)clsx2.1.1 - Conditional CSS class utilitiestailwind-merge3.4.0 - Tailwind class merging utility
Development (Backend):
@nestjs/cli11.0.0 - NestJS code generation and project scaffolding@nestjs/schematics11.0.0 - Code generators for NestJSprettier3.4.2 - Code formattereslint9.18.0 - Lintingtypescript-eslint8.20.0 - TypeScript ESLint supporttsx4.21.0 - TypeScript execution (used for seed scripts)tsconfig-paths4.2.0 - TypeScript path alias resolutionts-node10.9.2 - TypeScript REPL and script runnerts-loader9.5.2 - TypeScript webpack loader
Development (Frontend):
eslint9.39.1 - Lintingtypescript-eslint8.46.4 - TypeScript ESLint supporteslint-plugin-react-hooks7.0.1 - React Hooks linting ruleseslint-plugin-react-refresh0.4.24 - Vite React refresh linting
Configuration
Environment:
-
Server loads from
.envfile (see.env.example):DATABASE_URL- PostgreSQL connection stringJWT_SECRET- Secret key for signing tokensJWT_EXPIRES_IN- Token expiration time (default "7d")PORT- Server port (default 5000)NODE_ENV- Environment (development/production)CORS_ORIGINS- Comma-separated list of allowed originsANTHROPIC_API_KEY- Claude API key for translations (optional)UPLOAD_DIR- Directory for file uploadsMAX_FILE_SIZE- Maximum upload file size
-
Client loads from
.envor.env.local:VITE_API_URL- Backend API base URL (e.g.,http://localhost:5000/api)- WebSocket URL derived automatically by removing
/apisuffix
TypeScript:
-
Server:
server/tsconfig.jsonwith target ES2023, decorators enabledstrictNullChecks: trueforceConsistentCasingInFileNames: truenoImplicitAny: false(allows implicit any in some cases)- Path aliases via
baseUrl: ./
-
Client:
client/tsconfig.app.jsonwith target ES2022, strict modestrict: true- All strict options enablednoUnusedLocals: true,noUnusedParameters: truejsx: react-jsx- JSX without React import required- Path alias
@/*→./src/*
Build:
-
Client Vite config:
client/vite.config.ts- Dev server port 5173
- API proxy
/api→http://localhost:5000 - React plugin with React 19 support
- Tailwind CSS Vite plugin
- Type checking via
tsc -bbefore build
-
Server NestJS config:
server/nest-cli.json(if exists)- Build output to
dist/
- Build output to
Platform Requirements
Development:
- Node.js LTS (tested with v22)
- npm (lockfiles version management)
- PostgreSQL 16+ (via Docker Compose)
- Docker & Docker Compose (for database)
- Git
Production:
- Node.js LTS
- PostgreSQL 16+ (managed service or self-hosted)
- Anthropic API key for translations (optional but recommended)
- File storage: Local filesystem or cloud storage (currently local via
./uploads)
Database
PostgreSQL 16 Alpine (via Docker Compose):
- Port 5432 (internal), 5433 (exposed for dev)
- Database name:
dimension47 - Default credentials in docker-compose (dev only)
- pgAdmin 4 included for database management (port 5050)
Prisma Configuration:
- Schema:
server/prisma/schema.prisma - Generator: Prisma Client with CommonJS module format
- Adapter:
@prisma/adapter-pgfor optimized PostgreSQL queries - Output:
src/generated/prisma/
Stack analysis: 2026-04-27