Files
spotlightcam/backend/README.md
Radosław Gierwiało 320aaf1ce1 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 
2025-11-12 21:42:52 +01:00

128 lines
2.5 KiB
Markdown

# spotlight.cam Backend
Node.js + Express backend for spotlight.cam - P2P video exchange app for dance events.
## Features
- ✅ Express REST API
- ✅ CORS enabled
- ✅ Health check endpoint
- ✅ Error handling
- ✅ Unit tests (Jest + Supertest)
- ⏳ PostgreSQL integration (planned)
- ⏳ JWT authentication (planned)
- ⏳ Socket.IO for real-time chat (planned)
- ⏳ WebRTC signaling (planned)
## API Endpoints
### Health Check
- `GET /api/health` - Backend health status
### Future Endpoints
- `POST /api/auth/register` - Register new user
- `POST /api/auth/login` - Login user
- `GET /api/users/me` - Get current user
- `GET /api/events` - List events
- `POST /api/matches` - Create match
- `POST /api/ratings` - Rate partner
## Development
### Install dependencies
```bash
npm install
```
### Run in development mode
```bash
npm run dev
```
### Run tests
```bash
npm test
```
### Run tests in watch mode
```bash
npm run test:watch
```
### Run in production mode
```bash
npm start
```
## Environment Variables
Create a `.env` file (see `.env.example`):
```env
NODE_ENV=development
PORT=3000
CORS_ORIGIN=http://localhost:8080
```
## Project Structure
```
backend/
├── src/
│ ├── __tests__/ # Unit tests
│ │ └── app.test.js
│ ├── routes/ # API routes (future)
│ ├── controllers/ # Business logic (future)
│ ├── middleware/ # Custom middleware (future)
│ ├── utils/ # Helper functions (future)
│ ├── app.js # Express app setup
│ └── server.js # Server entry point
├── .env # Environment variables (gitignored)
├── .env.example # Environment variables template
├── package.json
└── Dockerfile
```
## Testing
Tests are written using:
- **Jest** - Test framework
- **Supertest** - HTTP assertions
Run tests:
```bash
npm test
```
Current test coverage:
- Health check endpoint
- 404 error handling
- CORS configuration
- JSON body parsing
## Docker
Build and run with Docker Compose (from project root):
```bash
docker compose up --build
```
Backend will be available at:
- Internal: http://backend:3000
- Through nginx: http://localhost:8080/api
## Next Steps
1. ✅ Basic Express setup
2. ✅ Health check endpoint
3. ✅ Unit tests
4. ⏳ PostgreSQL connection
5. ⏳ Database schema and migrations
6. ⏳ Authentication (JWT + bcrypt)
7. ⏳ Socket.IO for real-time chat
8. ⏳ WebRTC signaling
## License
TBD