Commit Graph

19 Commits

Author SHA1 Message Date
Ryan Moon
31684f4a15 feat: add individual and bulk chart upgrade, fix health check URL
All checks were successful
Build & Release / build (push) Successful in 12s
2026-04-03 21:26:36 -05:00
Ryan Moon
d0f520ee02 fix: pin chart to exact latest version at provision time, fix health check URL
Some checks failed
Build & Release / build (push) Has been cancelled
2026-04-03 21:14:15 -05:00
Ryan Moon
5d296fbb2b feat: add Cloudflare DNS provisioning and health checks
All checks were successful
Build & Release / build (push) Successful in 12s
2026-04-03 20:42:49 -05:00
Ryan Moon
530698f52e feat: add infrastructure checks (DB exists, Spaces prefix) to customer overview
Some checks failed
Build & Release / build (push) Has been cancelled
2026-04-03 20:23:49 -05:00
Ryan Moon
fe62514515 feat: single shared Spaces key, deactivate/reactivate customer, status badge for inactive
Some checks failed
Build & Release / build (push) Has been cancelled
2026-04-03 20:21:52 -05:00
Ryan Moon
b11b51aa1e feat: customer detail page, size snapshots table, Spaces provisioning, Redis status cache
Some checks failed
Build & Release / build (push) Has been cancelled
2026-04-03 20:07:19 -05:00
Ryan Moon
4dfa42487f feat: use managed Valkey with per-customer key prefix instead of in-cluster valkey
Some checks failed
Build & Release / build (push) Has been cancelled
2026-04-03 19:48:34 -05:00
Ryan Moon
1ab449cf83 fix: skip teardownCustomerDatabase if database no longer exists
Some checks failed
Build & Release / build (push) Has been cancelled
2026-04-03 19:44:45 -05:00
Ryan Moon
bbe5bd9a0e fix: use semver constraint instead of 'latest' for ArgoCD OCI helm targetRevision
Some checks failed
Build & Release / build (push) Has been cancelled
2026-04-03 19:43:35 -05:00
Ryan Moon
b8002af82b fix: skip git commit/push in removeCustomerChart if file was never tracked
Some checks failed
Build & Release / build (push) Has been cancelled
2026-04-03 19:38:52 -05:00
Ryan Moon
19135b0520 feat: provision k8s namespace and secrets during customer setup
Some checks failed
Build & Release / build (push) Has been cancelled
- k8s.ts: add createNamespace, deleteNamespace, createSecret, createDockerRegistrySecret
- customers.ts: create namespace + DOCR pull secret + app secrets (DATABASE_URL, JWT_SECRET, REDIS_URL) before pushing ArgoCD chart
- customers.ts: delete namespace on deprovision, search name field too
- git.ts: use DOCR OCI chart URL and helm parameters for customer ArgoCD apps
- Add 'namespace' and 'secrets' steps to provisioning step tracker
2026-04-03 18:54:12 -05:00
Ryan Moon
38341aa0a9 fix: switch from httpOnly cookies to localStorage Bearer token auth
Some checks failed
Build & Release / build (push) Has been cancelled
Cookie-based auth was unreliable through Cloudflare/nginx proxy — cookie
was being sent for some requests but not others. Switch to returning JWT
in login response, storing in localStorage, and sending as Authorization
Bearer header on all API calls. Eliminates all cookie/SameSite/Secure
proxy issues.
2026-04-03 18:09:24 -05:00
Ryan Moon
accc963883 fix: persist auth cookie across refreshes and add customer detail tracking
Some checks failed
Build & Release / build (push) Has been cancelled
- Fix cookie sameSite strict → lax so browser sends it on page refresh
- Add customer name field (separate from slug)
- Add steps JSONB column tracking per-step provisioning state (DB, User, Schema, Pool, Chart)
- Insert customer record before provisioning starts so partial failures are visible
- Show status + step checklist in customers table
- Add DELETE /customers/:slug/record endpoint to clear failed records without touching infra
- Add "Record Only" button in UI for manual cleanup of partial deployments
2026-04-03 18:00:52 -05:00
Ryan Moon
d1c4aa7d6f feat: customers management UI with paginated table and full delete
All checks were successful
Build & Release / build (push) Successful in 12s
- Fix SSH key missing trailing newline (error in libcrypto)
- Pass env with SSH command through all git operations
- Add customers table (modules, start/expiration dates, created/updated timestamps)
- Idempotent ALTER TABLE for existing deployments
- GET /customers with pagination, search, and sort
- POST /customers persists slug with modules and dates to DB
- DELETE /customers/:slug removes ArgoCD chart, DO DB, pgbouncer pool, and manager record
- Redesigned frontend: dark slate theme, customers table page with search/sort/pagination, delete confirm dialog, module checkboxes, slate buttons
2026-04-03 17:48:25 -05:00
Ryan Moon
ceacd9b459 feat: redesign UI with sidebar, centered login, account page with password reset
Some checks failed
Build & Release / build (push) Failing after 5s
2026-04-03 15:13:46 -05:00
Ryan Moon
4bd1918e3b feat: add JWT auth with db-backed users
Some checks failed
Build & Release / build (push) Has been cancelled
- users table created on startup via migrate()
- POST /api/auth/setup to create first user (blocked once any user exists)
- POST /api/auth/login returns httpOnly JWT cookie (7d expiry)
- POST /api/auth/logout clears cookie
- GET /api/auth/me for auth check
- All /api/customers routes require valid JWT
- Frontend shows login form when unauthenticated
- Fix type errors in k8s, do, and pgbouncer services
2026-04-03 07:41:36 -05:00
Ryan Moon
8dbfb5810f fix: add /health endpoint for k8s probes
Some checks failed
Build & Release / build (push) Failing after 6s
2026-04-03 06:52:13 -05:00
Ryan Moon
6e68cb83c0 feat: restrict customer DB user permissions on provision
Some checks failed
Build & Release / build (push) Failing after 1m3s
2026-04-03 06:25:51 -05:00
Ryan Moon
8287fbf5b8 feat: initial lunarfront-manager app 2026-04-03 06:23:56 -05:00