Skip to content

Feature/devex observability improvements#1264

Open
josunday002 wants to merge 5 commits into
MyFanss:mainfrom
josunday002:feature/devex-observability-improvements
Open

Feature/devex observability improvements#1264
josunday002 wants to merge 5 commits into
MyFanss:mainfrom
josunday002:feature/devex-observability-improvements

Conversation

@josunday002
Copy link
Copy Markdown
Contributor

@josunday002 josunday002 commented May 30, 2026

closes #1216
closes #1215
closes #1214
closes #1209

github-actions Bot and others added 5 commits May 30, 2026 12:03
- Add scripts/seed-demo-creators.ts with 3 demo creator accounts
  (demo_alice, demo_bob, demo_carol) each with multiple subscription plans
- Upserts users + creator profiles idempotently via ON CONFLICT
- Supports --clean flag to remove and re-seed demo rows
- Guards against accidental production runs (NODE_ENV=production)
- Add npm scripts: seed:demo and seed:demo:clean
- Add unit tests covering data shape, safety guard, and uniqueness invariants
- Add Redis 7 service with healthcheck and named volume
- Add one-shot seed service that runs migrations then seeds demo creators
- Pass REDIS_HOST/REDIS_PORT env vars to backend service
- Add restart policies and improved healthcheck for backend (start_period=45s)
- Document all services, ports, and useful commands in compose header
- Update .env.dev.example with REDIS_HOST and REDIS_PORT defaults
- Add AggregatedHealthResult interface with per-subsystem latency,
  uptime, version, and numeric summary (total/up/degraded/down)
- Add HealthService.getAggregatedHealth() running all checks in parallel
- Add GET /v1/health/aggregate endpoint (200 for up/degraded, 503 for down)
- Database down → overall 'down'; other subsystem down → 'degraded'
- checkRedis() now returns { status, error } consistent with other checks
- Add unit tests for aggregation logic and HTTP status mapping
- Add SubscriptionChainSyncService with sync(dryRun, fanFilter) method
- Reads is_subscriber + get_expiry_unix from Soroban contract per subscription
- Reconciles local index: expire when chain says not-subscriber,
  re-activate when chain says subscriber but local is expired
- Cancelled subscriptions are skipped (terminal state)
- Chain read failures are best-effort: record marked 'skipped', sync continues
- Supports dry-run mode (evaluates without writing)
- Supports fanFilter to sync a single fan's subscriptions
- Wire SubscriptionChainSyncService into SubscriptionsModule
- Add comprehensive unit tests covering all reconciliation branches,
  error handling, dry-run, fan filter, and result shape
@drips-wave
Copy link
Copy Markdown

drips-wave Bot commented May 30, 2026

@josunday002 Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant