Major refactor from simple HTML/JS app to modern full-stack TypeScript application: ## Architecture Changes - Migrated to monorepo structure with workspaces (backend, frontend, shared) - Backend: Node.js + Express + TypeScript + Socket.IO - Frontend: Next.js 15.5 + React 19 + TypeScript + Tailwind CSS - Shared: Common types and utilities across packages ## Key Features Implemented - Real-time WebSocket collaboration via Socket.IO - Virtual canvas with chunked loading for performance - Modern UI with dark mode and responsive design - Mock database system for easy development (Redis/PostgreSQL compatible) - Comprehensive error handling and rate limiting - User presence and cursor tracking - Infinite canvas support with zoom/pan controls ## Performance Optimizations - Canvas virtualization - only renders visible viewport - Chunked pixel data loading (64x64 pixel chunks) - Optimized WebSocket protocol - Memory-efficient state management with Zustand ## Development Experience - Full TypeScript support across all packages - Hot reload for both frontend and backend - Docker support for production deployment - Comprehensive linting and formatting - Automated development server startup ## Fixed Issues - Corrected start script paths - Updated environment configuration - Fixed ESLint configuration issues - Ensured all dependencies are properly installed - Verified build process works correctly
30 lines
No EOL
579 B
Text
30 lines
No EOL
579 B
Text
# Server Configuration
|
|
PORT=3001
|
|
NODE_ENV=development
|
|
CORS_ORIGIN=http://localhost:3000
|
|
|
|
# Security
|
|
JWT_SECRET=your-super-secret-jwt-key-change-in-production
|
|
|
|
# Database Configuration
|
|
REDIS_URL=redis://localhost:6379
|
|
REDIS_KEY_PREFIX=gaplace:
|
|
|
|
POSTGRES_HOST=localhost
|
|
POSTGRES_PORT=5432
|
|
POSTGRES_DB=gaplace
|
|
POSTGRES_USER=gaplace
|
|
POSTGRES_PASSWORD=password
|
|
|
|
# Rate Limiting
|
|
RATE_LIMIT_PIXELS_PER_MINUTE=60
|
|
RATE_LIMIT_PIXELS_PER_HOUR=1000
|
|
RATE_LIMIT_CURSOR_PER_SECOND=10
|
|
|
|
# Canvas Configuration
|
|
MAX_CANVAS_SIZE=10000
|
|
DEFAULT_CANVAS_SIZE=1000
|
|
CHUNK_SIZE=64
|
|
|
|
# Logging
|
|
LOG_LEVEL=info |