Personal net worth tracker - FastAPI backend + React frontend with security hardening
257
A personal finance web application for tracking net worth, built with FastAPI and React.
| Tag | Description |
|---|---|
backend | FastAPI Python API server (port 8000) |
frontend | React + Nginx static server (port 3000, proxies /api to backend) |
docker network create networth-network
mkdir -p ./data
docker run -d --name networth-backend --network networth-network -p 8000:8000 -v ./data:/app/data -e CREATE_DEMO_DATA=true -e DATA_FILE=/app/data/data.json shri32msi/networth-tracker:backend
docker run -d --name networth-frontend --network networth-network -p 3000:3000 shri32msi/networth-tracker:frontend
Open your browser and go to:
Login with demo credentials: demo / password123
docker stop networth-frontend networth-backend
docker rm networth-frontend networth-backend
docker network rm networth-network
Create a docker-compose.yml:
services:
backend:
image: shri32msi/networth-tracker:backend
container_name: networth-backend
ports:
- "8000:8000"
volumes:
- ./data:/app/data
environment:
- CREATE_DEMO_DATA=true
- DATA_FILE=/app/data/data.json
# Optional: set for persistent JWT sessions across restarts
# - SECRET_KEY=your-secret-key-here
restart: unless-stopped
frontend:
image: shri32msi/networth-tracker:frontend
container_name: networth-frontend
ports:
- "3000:3000"
depends_on:
- backend
restart: unless-stopped
networks:
default:
name: networth-network
Then run:
docker compose up -d
Open http://localhost:3000 and login with demo / password123.
| Variable | Default | Description |
|---|---|---|
SECRET_KEY | (auto-generated) | JWT signing key. Set for persistent sessions across restarts |
CREATE_DEMO_DATA | false | Set to true to create demo user with sample data on startup |
DATA_FILE | ../data/data.json | Path to the JSON database file |
Content type
Image
Digest
sha256:af938dc78…
Size
25.2 MB
Last updated
5 months ago
docker pull shri32msi/networth-tracker:frontend