Collaborative-pixel-art/backend/package.json
martin 3ce5a97422 Modernize collaborative pixel art platform to production-ready architecture
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
2025-08-22 19:28:05 +02:00

47 lines
No EOL
1.2 KiB
JSON

{
"name": "@gaplace/backend",
"version": "1.0.0",
"description": "GaPlace backend server with TypeScript, Redis, and WebSocket support",
"main": "dist/server.js",
"scripts": {
"dev": "tsx watch src/server.ts",
"build": "tsc",
"start": "node dist/server.js",
"clean": "rm -rf dist",
"type-check": "tsc --noEmit",
"lint": "eslint src --ext .ts",
"test": "jest",
"test:watch": "jest --watch"
},
"dependencies": {
"@gaplace/shared": "file:../shared",
"express": "^4.18.2",
"socket.io": "^4.7.4",
"redis": "^4.6.12",
"cors": "^2.8.5",
"helmet": "^7.1.0",
"compression": "^1.7.4",
"express-rate-limit": "^7.1.5",
"jsonwebtoken": "^9.0.2",
"bcryptjs": "^2.4.3",
"uuid": "^9.0.1",
"pg": "^8.11.3",
"dotenv": "^16.3.1",
"winston": "^3.11.0"
},
"devDependencies": {
"@types/express": "^4.17.21",
"@types/cors": "^2.8.17",
"@types/compression": "^1.7.5",
"@types/jsonwebtoken": "^9.0.5",
"@types/bcryptjs": "^2.4.6",
"@types/uuid": "^9.0.7",
"@types/pg": "^8.10.9",
"@types/node": "^20.10.6",
"@types/jest": "^29.5.11",
"jest": "^29.7.0",
"ts-jest": "^29.1.1",
"tsx": "^4.7.0",
"typescript": "^5.3.3"
}
}