Benny d7117df6fe
All checks were successful
Deploy / deploy (push) Successful in 54s
Update deployment to run migrations from VPS .env
2026-01-29 11:44:51 -06:00
2026-01-29 11:41:38 -06:00
2026-01-18 19:28:25 +00:00

Here is dummy ai explanation for you my friend

Stack

  • Backend: Node + Fastify + Prisma (Postgres)
  • Frontend: React + Vite
  • Scheduler: separate worker container (cron tasks)
  • Reverse proxy (prod)
  • Default: Nginx (skymoneybudget.com.conf)
  • Alternative: Caddy (Caddyfile.prod)
  • API is under /api path
  • Web is static from /var/www/skymoney/dist
  • HTTPS + HSTS already configured in the prod config

Required env vars (production)

  • DATABASE_URL
  • JWT_SECRET (32+ chars)
  • COOKIE_SECRET (32+ chars)
  • CORS_ORIGIN (set to https://skymoneybudget.com)
  • Optional: COOKIE_DOMAIN=skymoneybudget.com
  • Cookies + Security
  • HttpOnly + Secure in prod
  • CSRF protection required for nonGET

Other Features

  • /auth/logout requires CSRF now
  • Mutation endpoints ratelimited
  • Cron jobs
  • rollover worker (6 AM user time)
  • autopayment worker (9 AM user time)
  • Jobs run every 15 minutes and only process users whose local time has reached the threshold
  • DB / Prisma
  • Postgres required
  • Prisma migrations must be applied before running
  • The app blocks default secrets in prod
  • Build + deploy
  • web/ builds to web/dist
  • API runs on port 8080 internally (exposed as 8081 in compose)
  • Nginx proxies /api to 127.0.0.1:8081
  • Logs
  • Prod logs are limited (PII reduced)
  • Key logging: job success/failure counts
  • Backups
  • Scripts exist: backup.sh, restore.sh
  • Restore requires admin DB privileges (created DB)
  • Optional but recommended to test once (tested, backup worked restore failed)
Description
No description provided
Readme 627 KiB
Languages
TypeScript 89.6%
CSS 6%
JavaScript 3.4%
Shell 0.6%
HTML 0.2%
Other 0.2%