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
This commit is contained in:
Saravana Achu Mac 2026-05-04 16:29:20 -07:00
parent 4052e9a2af
commit b4403300fa
3 changed files with 43 additions and 30 deletions

View File

@ -24,7 +24,7 @@
# notelett 4016, flowmonk 4017, actiontrail 4018, # notelett 4016, flowmonk 4017, actiontrail 4018,
# localmemgpt 4019, efforise 4020 # localmemgpt 4019, efforise 4020
# Product webs: chronomind 3030, jarvisjr 3035, flowmonk 3040, # 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, # actiontrail 3060, localmemgpt 3070, lysnrai 3002,
# efforise 3080 # efforise 3080
@ -783,31 +783,9 @@ services:
retries: 3 retries: 3
restart: unless-stopped restart: unless-stopped
nomgap-web: # TODO(nomgap): Decide whether local Docker smoke tests still need a web
build: # service once the Vercel deployment path is fully documented.
<<: *product-build # nomgap-web: deployed to Vercel; not part of this Docker stack.
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
actiontrail-web: actiontrail-web:
build: build:

View File

@ -33,13 +33,41 @@
{ "name": "fasting_protocols", "partitionKey": "/userId" }, { "name": "fasting_protocols", "partitionKey": "/userId" },
{ "name": "social_fasts", "partitionKey": "/id" }, { "name": "social_fasts", "partitionKey": "/id" },
{ "name": "meal_logs", "partitionKey": "/userId" }, { "name": "meal_logs", "partitionKey": "/userId" },
{ "name": "push_triggers", "partitionKey": "/userId" }, { "name": "weight_logs", "partitionKey": "/userId" },
{ "name": "body_stages", "partitionKey": "/userId" } { "name": "push_triggers", "partitionKey": "/productId" }
] ]
}, },
"flags": [ "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": { "ports": {
"service": 4013 "service": 4013

View File

@ -103,6 +103,13 @@ const PRODUCT_FLAGS: Record<string, FlagSeedDef[]> = {
platforms: ['ios', 'android'], platforms: ['ios', 'android'],
percentage: 0, percentage: 0,
}, },
{
key: 'push_triggers.enabled',
enabled: true,
description: 'Server-side push notification triggers',
platforms: ['ios', 'android'],
percentage: 100,
},
], ],
mindlyst: [ mindlyst: [
{ {