## Why
The `docker-compose.yml` `app` service references a `Dockerfile` that does not exist. Docker containerisation is a Phase 1 P1 item. Without it, the full docker-compose stack cannot start and the DevOps deployment path is incomplete.

## What Changes
- New `Dockerfile` at project root — multi-stage build (builder + production)
- New `.dockerignore` — excludes `node_modules`, `dist`, test files, `.env`
- `docker-compose.yml` `app` service becomes fully functional

## What Does Not Change
- No source code changes
- No dependency changes
