feat: add backend setup with Express and unit tests

Backend Foundation (Phase 1 - Step 1):

**Infrastructure:**
- Add backend service to docker-compose.yml
- Configure nginx to proxy /api/* to backend
- Node.js 20 Alpine Docker container

**Backend Setup:**
- Express.js REST API server
- CORS configuration
- Request logging middleware
- Error handling (404, 500)
- Graceful shutdown on SIGTERM/SIGINT
- Health check endpoint: GET /api/health

**Testing:**
- Jest + Supertest for unit tests
- 7 test cases covering:
  - Health check endpoint
  - 404 error handling
  - CORS headers
  - JSON body parsing
- Code coverage: 88.23%

**Project Structure:**
- backend/src/app.js - Express app setup
- backend/src/server.js - Server entry point
- backend/src/__tests__/ - Unit tests
- backend/README.md - Backend documentation

**Environment:**
- .env.example template
- Development configuration
- Ready for PostgreSQL integration

All tests passing 
This commit is contained in:
Radosław Gierwiało
2025-11-12 21:42:52 +01:00
parent a1357393e8
commit 320aaf1ce1
11 changed files with 5237 additions and 14 deletions

View File

@@ -9,6 +9,7 @@ services:
- ./nginx/conf.d:/etc/nginx/conf.d:ro
depends_on:
- frontend
- backend
restart: unless-stopped
frontend:
@@ -27,3 +28,19 @@ services:
stdin_open: true
tty: true
command: npm run dev
backend:
build:
context: ./backend
dockerfile: Dockerfile
container_name: spotlightcam-backend
expose:
- "3000"
volumes:
- ./backend:/app
- /app/node_modules
environment:
- NODE_ENV=development
- PORT=3000
- CORS_ORIGIN=http://localhost:8080
restart: unless-stopped