Owner: Engineering Team | Last Updated: 2026-01-30 | Status: Current
The web app is containerized with Docker and deployed to AWS ECS via GitHub Actions CI/CD pipelines. For the full web app overview, see Web App Overview.
# Stage 1: Builder
FROM node:20.9.0-alpine AS builder
WORKDIR /app
ENV NODE_OPTIONS="--max-old-space-size=4096"
COPY package*.json ./
RUN npm ci --network-timeout=600000 --maxsockets=50 --fetch-retries=5
COPY . .
RUN npm run build
# Stage 2: Runner
FROM node:20.9.0-alpine AS runner
WORKDIR /app
COPY --from=builder /app/.next ./.next
COPY --from=builder /app/node_modules ./node_modules
COPY --from=builder /app/package.json ./
EXPOSE 3001
CMD ["npm", "start"]
| Setting | Value | Purpose |
|---|---|---|
| Max heap size | 4 GB | Prevent OOM during build |
| Network timeout | 10 minutes | Handle slow registries |
| Max sockets | 50 | Parallel downloads |
| Fetch retries | 5 | Retry on network errors |
| Resource | Value |
|---|---|
| Cluster | WWAI ECS cluster |
| CPU | 3,072 units (3 vCPU) |
| Memory | 3,500 MB |
| Port | 3001 |
| Region | us-east-2 |
| Logging | CloudWatch at /ecs/{cluster}/{service} |
Located in .github/workflows/:
pipeline-*.yml — Build and deploy workflowstemplate-*.yml — Reusable workflow templates| Environment | Trigger | Branch |
|---|---|---|
| Development | Automatic on push | dev |
| Preproduction | Manual/Auto | dev (staging) |
| Production | Manual trigger | main |
| Date | Author | Change |
|---|---|---|
| 2026-01-30 | Admin | Initial creation |
Prev: Web App - Environment Variables | Next: Web App - Troubleshooting | Up: WalterWrites