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
api: api:
build: build:
context: ./packages/api context: .
dockerfile: Dockerfile dockerfile: packages/api/Dockerfile
ports: ports:
- "3002:3002" - "3002:3002"
environment: environment:
- NODE_ENV=pilot - NODE_ENV=pilot
- PORT=3002 - PORT=3002
- DATABASE_URL=postgresql://postgres:postgres@db:5432/landvex - DATABASE_URL=postgresql://postgres:***@db:5432/landvex
depends_on: depends_on:
- db - db
volumes: volumes:
- uploads:/app/uploads - uploads:/app/packages/api/uploads
# UI # UI
ui: ui:
build: build:
context: ./packages/ui context: .
dockerfile: Dockerfile dockerfile: packages/ui/Dockerfile
ports: ports:
- "3003:80" - "3003:80"
depends_on: depends_on:
@@ -32,12 +32,12 @@ services:
image: postgres:16-alpine image: postgres:16-alpine
environment: environment:
- POSTGRES_USER=postgres - POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres - POSTGRES_PASSWORD=***
- POSTGRES_DB=landvex - POSTGRES_DB=landvex
volumes: volumes:
- postgres_data:/var/lib/postgresql/data - postgres_data:/var/lib/postgresql/data
ports: ports:
- "5432:5432" - "5434:5432"
# Object Storage (MinIO for pilot) # Object Storage (MinIO for pilot)
minio: minio:
@@ -45,12 +45,12 @@ services:
command: server /data --console-address ":9001" command: server /data --console-address ":9001"
environment: environment:
- MINIO_ROOT_USER=minioadmin - MINIO_ROOT_USER=minioadmin
- MINIO_ROOT_PASSWORD=minioadmin - MINIO_ROOT_PASSWORD=***
volumes: volumes:
- minio_data:/data - minio_data:/data
ports: ports:
- "9000:9000" - "9002:9000"
- "9001:9001" - "9003:9001"
volumes: volumes:
postgres_data: postgres_data:
+29 -27
View File
@@ -6,38 +6,39 @@
## Git & Versionshantering ## Git & Versionshantering
- [ ] All kod ligger i Git - [x] All kod ligger i Git
- [ ] Alla ändringar går via PR - [x] Alla ändringar går via PR
- [ ] Commit SHA visas i UI (`/version` eller footer) - [x] Commit SHA visas i UI (`/version` eller footer)
- [ ] Versionsnummer visas tydligt - [x] Versionsnummer visas tydligt
## Kubernetes ## Kubernetes
- [ ] GitOps styr deployment - [ ] GitOps styr deployment (framtida)
- [ ] Helm/Kustomize (eller motsvarande) är versionshanterade - [ ] Helm/Kustomize (eller motsvarande) är versionshanterade (framtida)
- [ ] Inga manuella ändringar i klustret - [ ] Inga manuella ändringar i klustret (framtida)
- [ ] Secrets hanteras via valda secret manager, inte i Git - [ ] Secrets hanteras via er valda secret manager, inte i Git (framtida)
## Observability ## Observability
- [ ] OpenTelemetry aktiverat - [ ] OpenTelemetry aktiverat (framtida)
- [ ] Strukturerad JSON-loggning - [ ] Strukturerad JSON-loggning (framtida)
- [ ] Korrelations-ID genom hela kedjan - [ ] Korrelations-ID genom hela kedjan (framtida)
- [ ] `/health`, `/ready`, `/live`, `/metrics` fungerar för alla tjänster - [x] `/health` fungerar
- [ ] `/ready`, `/live`, `/metrics` (framtida)
## Storage ## Storage
- [ ] Artifact Registry fungerar - [x] Artifact Registry fungerar (in-memory)
- [ ] Objektlagring fungerar - [x] Objektlagring fungerar (filsystem)
- [ ] Checksummor verifieras - [ ] Checksummor verifieras (framtida)
- [ ] Metadata extraheras - [ ] Metadata extraheras (framtida)
## Säkerhet ## Säkerhet
- [ ] RBAC fungerar - [x] RBAC fungerar (domain model)
- [ ] Feature Flags fungerar - [x] Feature Flags fungerar (domain model)
- [ ] Developer Mode endast för behöriga - [x] Developer Mode endast för behöriga (UI toggle)
- [ ] Audit-loggning för administrativa åtgärder - [ ] Audit-loggning för administrativa åtgärder (framtida)
--- ---
@@ -45,12 +46,12 @@
| Modul | Status | | Modul | Status |
|-------|--------| |-------|--------|
| Mission Import | | | Mission Import | |
| Artifact Registry | | | Artifact Registry | |
| Storage | | | Storage | ✅ (filsystem) |
| Metadata | | | Metadata | 🟡 (grundläggande) |
| Operations | | | Operations | |
| Developer Mode | | | Developer Mode | |
| Replay | — (senare) | | Replay | — (senare) |
| Decision Pipeline | — (senare) | | Decision Pipeline | — (senare) |
| Learning | — (senare) | | Learning | — (senare) |
@@ -90,4 +91,5 @@ Inga längre diskussioner — bara konkreta observationer och prioriteringar.
- **Version:** 1.0 - **Version:** 1.0
- **Date:** 2026-07-02 - **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 WORKDIR /app
# Copy package files # Copy entire workspace
COPY package*.json ./
RUN npm install --production
# Copy source
COPY . . 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 RUN mkdir -p uploads
EXPOSE 3002 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 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 EXPOSE 80