mirror of
https://github.com/escalante29/WealthySmart.git
synced 2026-07-17 14:48:48 +02:00
SECRET_KEY, ADMIN_USERNAME, and ADMIN_PASSWORD no longer have working defaults: the backend refuses to boot if they are unset, default, or weak (SEC-01). Token expiry drops from 30 to 7 days (SEC-05). New COOKIE_SECURE (default true) and CORS_ORIGINS settings. Dev compose now sources credentials from .env with required-var errors instead of hardcoding them (ARCH-14); .env.example documents the template. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1.6 KiB
1.6 KiB
WealthySmart
Personal finance management web app.
Stack
- Frontend: React 19 + Vite + TypeScript + Tailwind CSS 4
- Package manager: pnpm
Development
cd frontend && pnpm install && pnpm run dev
The backend refuses to boot without SECRET_KEY, ADMIN_USERNAME, and
ADMIN_PASSWORD (no insecure defaults). Copy .env.example to .env and fill
it in; the dev docker-compose reads it.
Local Docker
# Backend + DB containers
docker exec wealthysmart-db-dev psql -U wealthy_user -d wealthysmart -c 'SQL;'
Deployment
- Deployed via Gitea Actions (self-hosted runner on VPS)
- Push to
maintriggers: GitHub → webhook → Gitea mirror sync → Actions workflow → Docker build & deploy - Domain: wealth.cescalante.dev
- Reverse proxy: nginx-proxy + acme-companion (auto TLS)
Infrastructure
- Single server:
ssh old-vps— runs everything (WealthySmart, n8n, Forgejo, Vaultwarden, nginx-proxy) ssh productionis NOT valid — do not use- n8n UI: https://n8n.cescalante.dev — n8n DB queryable via
docker exec portfolio-db-prod psql -U portfolio_user -d n8n
n8n Flows
Four automated flows on old-vps feed data into WealthySmart:
- BAC Credit Card — Gmail trigger → POST /transactions/
- Salary Deposits — Gmail trigger → POST /transactions/
- Municipal Receipts — Cron trigger → POST /municipal-receipts/upload
- Pension PDFs (
e88c3UhBeo9WCbcy) — Gmail trigger (daily midnight) → POST /pensions/upload
Flow export: docs/WealthySmart_ BAC Pensions Statements parser.json