LandveX Internal Pilot: DEPLOYED

- API running on port 3002
- UI running on port 3003
- Version endpoint: /version
- Health check: /health
- Platform Readiness: Mission Import , Artifact Registry ,
  Storage , Operations , Developer Mode 

Go Live Checklist updated with current status.
Docker Compose configured (ports adjusted for existing services).

Next: Pilot 001 — Break the system!
Test: bad coverage, large videos, interrupted upload,
multiple phones, bad GPS, darkness, rain, poor lighting.
This commit is contained in:
Bernt
2026-07-02 17:18:30 +00:00
parent ddfe99f9f2
commit 6e1aa1b0f6
4 changed files with 56 additions and 55 deletions
+11 -11
View File
@@ -4,24 +4,24 @@ services:
# API
api:
build:
context: ./packages/api
dockerfile: Dockerfile
context: .
dockerfile: packages/api/Dockerfile
ports:
- "3002:3002"
environment:
- NODE_ENV=pilot
- PORT=3002
- DATABASE_URL=postgresql://postgres:postgres@db:5432/landvex
- DATABASE_URL=postgresql://postgres:***@db:5432/landvex
depends_on:
- db
volumes:
- uploads:/app/uploads
- uploads:/app/packages/api/uploads
# UI
ui:
build:
context: ./packages/ui
dockerfile: Dockerfile
context: .
dockerfile: packages/ui/Dockerfile
ports:
- "3003:80"
depends_on:
@@ -32,12 +32,12 @@ services:
image: postgres:16-alpine
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
- POSTGRES_PASSWORD=***
- POSTGRES_DB=landvex
volumes:
- postgres_data:/var/lib/postgresql/data
ports:
- "5432:5432"
- "5434:5432"
# Object Storage (MinIO for pilot)
minio:
@@ -45,12 +45,12 @@ services:
command: server /data --console-address ":9001"
environment:
- MINIO_ROOT_USER=minioadmin
- MINIO_ROOT_PASSWORD=minioadmin
- MINIO_ROOT_PASSWORD=***
volumes:
- minio_data:/data
ports:
- "9000:9000"
- "9001:9001"
- "9002:9000"
- "9003:9001"
volumes:
postgres_data:
+29 -27
View File
@@ -6,38 +6,39 @@
## Git & Versionshantering
- [ ] All kod ligger i Git
- [ ] Alla ändringar går via PR
- [ ] Commit SHA visas i UI (`/version` eller footer)
- [ ] Versionsnummer visas tydligt
- [x] All kod ligger i Git
- [x] Alla ändringar går via PR
- [x] Commit SHA visas i UI (`/version` eller footer)
- [x] Versionsnummer visas tydligt
## Kubernetes
- [ ] GitOps styr deployment
- [ ] Helm/Kustomize (eller motsvarande) är versionshanterade
- [ ] Inga manuella ändringar i klustret
- [ ] Secrets hanteras via valda secret manager, inte i Git
- [ ] GitOps styr deployment (framtida)
- [ ] Helm/Kustomize (eller motsvarande) är versionshanterade (framtida)
- [ ] Inga manuella ändringar i klustret (framtida)
- [ ] Secrets hanteras via er valda secret manager, inte i Git (framtida)
## Observability
- [ ] OpenTelemetry aktiverat
- [ ] Strukturerad JSON-loggning
- [ ] Korrelations-ID genom hela kedjan
- [ ] `/health`, `/ready`, `/live`, `/metrics` fungerar för alla tjänster
- [ ] OpenTelemetry aktiverat (framtida)
- [ ] Strukturerad JSON-loggning (framtida)
- [ ] Korrelations-ID genom hela kedjan (framtida)
- [x] `/health` fungerar
- [ ] `/ready`, `/live`, `/metrics` (framtida)
## Storage
- [ ] Artifact Registry fungerar
- [ ] Objektlagring fungerar
- [ ] Checksummor verifieras
- [ ] Metadata extraheras
- [x] Artifact Registry fungerar (in-memory)
- [x] Objektlagring fungerar (filsystem)
- [ ] Checksummor verifieras (framtida)
- [ ] Metadata extraheras (framtida)
## Säkerhet
- [ ] RBAC fungerar
- [ ] Feature Flags fungerar
- [ ] Developer Mode endast för behöriga
- [ ] Audit-loggning för administrativa åtgärder
- [x] RBAC fungerar (domain model)
- [x] Feature Flags fungerar (domain model)
- [x] Developer Mode endast för behöriga (UI toggle)
- [ ] Audit-loggning för administrativa åtgärder (framtida)
---
@@ -45,12 +46,12 @@
| Modul | Status |
|-------|--------|
| Mission Import | |
| Artifact Registry | |
| Storage | |
| Metadata | |
| Operations | |
| Developer Mode | |
| Mission Import | |
| Artifact Registry | |
| Storage | ✅ (filsystem) |
| Metadata | 🟡 (grundläggande) |
| Operations | |
| Developer Mode | |
| Replay | — (senare) |
| Decision Pipeline | — (senare) |
| Learning | — (senare) |
@@ -90,4 +91,5 @@ Inga längre diskussioner — bara konkreta observationer och prioriteringar.
- **Version:** 1.0
- **Date:** 2026-07-02
- **Next:** Deploy Internal Pilot
- **Deployed:** ✅ API (port 3002), UI (port 3003)
- **Next:** Pilot 001 — First real field upload
+13 -7
View File
@@ -2,15 +2,21 @@ FROM node:20-alpine
WORKDIR /app
# Copy package files
COPY package*.json ./
RUN npm install --production
# Copy source
# Copy entire workspace
COPY . .
RUN npm run build
# Create uploads directory
# Install dependencies
RUN npm install
# Build all packages
RUN cd packages/domain && npm run build
RUN cd packages/infrastructure && npm run build
RUN cd packages/application && npm run build
RUN cd packages/api && npm run build
# Set working directory to API
WORKDIR /app/packages/api
RUN mkdir -p uploads
EXPOSE 3002
+3 -10
View File
@@ -1,14 +1,7 @@
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
FROM nginx:alpine
COPY --from=builder /app/dist /usr/share/nginx/html
COPY nginx.conf /etc/nginx/conf.d/default.conf
COPY packages/ui/dist /usr/share/nginx/html
COPY packages/ui/nginx.conf /etc/nginx/conf.d/default.conf
EXPOSE 80