From b4403300fafa8c90972c20d26ca00ce8445b6317 Mon Sep 17 00:00:00 2001 From: Saravana Achu Mac Date: Mon, 4 May 2026 16:29:20 -0700 Subject: [PATCH] chore(nomgap): finalize product deployment config What changed: - Remove nomgap-web from the ecosystem Docker stack now that web is Vercel-hosted. - Add a TODO for deciding whether local Docker smoke tests still need a NomGap web service. - Update NomGap product containers and feature flags. - Seed the NomGap push trigger flag without duplicating the common encryption flag. Safety notes: - Dropped unrelated pnpm-lock.yaml formatting churn instead of committing it. Verification: - node JSON.parse products/nomgap/product.json - ruby Psych.safe_load docker-compose.ecosystem.yml - pnpm --filter @bytelyst/admin-web typecheck - pnpm --filter @bytelyst/admin-web test - pnpm --filter @bytelyst/admin-web exec eslint . --ext .ts,.tsx - pnpm --filter @lysnrai/platform-service build - pnpm --filter @lysnrai/platform-service test - pnpm --filter @lysnrai/platform-service exec eslint . --ext .ts,.tsx - pnpm typecheck - pnpm lint --- docker-compose.ecosystem.yml | 30 +++------------- products/nomgap/product.json | 36 ++++++++++++++++--- .../src/modules/flags/seed.ts | 7 ++++ 3 files changed, 43 insertions(+), 30 deletions(-) diff --git a/docker-compose.ecosystem.yml b/docker-compose.ecosystem.yml index a5a522b4..daf2d74a 100644 --- a/docker-compose.ecosystem.yml +++ b/docker-compose.ecosystem.yml @@ -24,7 +24,7 @@ # notelett 4016, flowmonk 4017, actiontrail 4018, # localmemgpt 4019, efforise 4020 # Product webs: chronomind 3030, jarvisjr 3035, flowmonk 3040, -# notelett 3045, mindlyst 3050, nomgap 3055, +# notelett 3045, mindlyst 3050, nomgap on Vercel, # actiontrail 3060, localmemgpt 3070, lysnrai 3002, # efforise 3080 @@ -783,31 +783,9 @@ services: retries: 3 restart: unless-stopped - nomgap-web: - build: - <<: *product-build - context: ../learning_ai_fastgap - dockerfile: web/Dockerfile - args: - GITEA_NPM_HOST: ${GITEA_NPM_HOST:-host.docker.internal} - NEXT_PUBLIC_NOMGAP_API_URL: http://localhost:4013/api - NEXT_PUBLIC_PLATFORM_SERVICE_URL: http://localhost:4003/api - ports: - - '3055:3055' - environment: - - NODE_ENV=production - - PORT=3055 - - NOMGAP_API_URL=http://nomgap-backend:4013/api - - PLATFORM_SERVICE_URL=http://platform-service:4003/api - depends_on: - nomgap-backend: - condition: service_healthy - healthcheck: - test: ['CMD', 'wget', '-q', '--spider', 'http://127.0.0.1:3055'] - interval: 30s - timeout: 10s - retries: 3 - restart: unless-stopped + # TODO(nomgap): Decide whether local Docker smoke tests still need a web + # service once the Vercel deployment path is fully documented. + # nomgap-web: deployed to Vercel; not part of this Docker stack. actiontrail-web: build: diff --git a/products/nomgap/product.json b/products/nomgap/product.json index 385d1d79..66683d8e 100644 --- a/products/nomgap/product.json +++ b/products/nomgap/product.json @@ -33,13 +33,41 @@ { "name": "fasting_protocols", "partitionKey": "/userId" }, { "name": "social_fasts", "partitionKey": "/id" }, { "name": "meal_logs", "partitionKey": "/userId" }, - { "name": "push_triggers", "partitionKey": "/userId" }, - { "name": "body_stages", "partitionKey": "/userId" } + { "name": "weight_logs", "partitionKey": "/userId" }, + { "name": "push_triggers", "partitionKey": "/productId" } ] }, "flags": [ - { "key": "pro-features", "defaultValue": false }, - { "key": "max-extended-fast", "defaultValue": 168 } + { + "key": "ai_coach_enabled", + "defaultValue": false, + "description": "AI coaching card on fasting screen (Pro)" + }, + { + "key": "social_fasting_enabled", + "defaultValue": false, + "description": "Social fasting / group fasts" + }, + { + "key": "meal_logging_enabled", + "defaultValue": true, + "description": "Meal logging before/after fasts" + }, + { + "key": "anatomical_mode_enabled", + "defaultValue": false, + "description": "Anatomical body visualization (Pro)" + }, + { + "key": "push_triggers.enabled", + "defaultValue": true, + "description": "Server-side push notification triggers" + }, + { + "key": "encryption_enabled", + "defaultValue": true, + "description": "AES-256-GCM field encryption for PII" + } ], "ports": { "service": 4013 diff --git a/services/platform-service/src/modules/flags/seed.ts b/services/platform-service/src/modules/flags/seed.ts index e05cf2f7..a5022605 100644 --- a/services/platform-service/src/modules/flags/seed.ts +++ b/services/platform-service/src/modules/flags/seed.ts @@ -103,6 +103,13 @@ const PRODUCT_FLAGS: Record = { platforms: ['ios', 'android'], percentage: 0, }, + { + key: 'push_triggers.enabled', + enabled: true, + description: 'Server-side push notification triggers', + platforms: ['ios', 'android'], + percentage: 100, + }, ], mindlyst: [ {