Skip to content

πŸ’Έ A modular, type-safe personal finance system for humans β€” track, plan, visualize, and evolve your entire financial ecosystem πŸŒ±πŸ“Š

License

Notifications You must be signed in to change notification settings

egohygiene/wealth

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Wealth

Part of the Ego Hygiene ecosystem

Wealth is a small personal finance "operating system." It brings your income, spending and savings into one place so you can focus on decisions rather than spreadsheets. The goal is to reduce money stress and help you learn by doing.

It might be useful if you:

  • want a clear overview of where your money goes
  • deal with gig work or other unpredictable income
  • are moving through a big life transition and need a simple plan

The project is still evolving, but the aim is to make budgeting approachable and to give you tools that grow with your situation.


Tech overview

This repository contains utilities, a minimal API and a starter UI. Below is the main stack.

Layer Technology
Frontend React (Vite)
Backend FastAPI
Auth Keycloak or Google OAuth2
Database Postgres
CLI Click-powered tools
Schema Pydantic financial models

API

The FastAPI service lives under services/api. It uses Keycloak for authentication and also supports Google OAuth2 login.

Set the following environment variables with your Google credentials:

GOOGLE_CLIENT_ID=<client id>
GOOGLE_CLIENT_SECRET=<client secret>

Start the API for development with:

uvicorn services.api.main:app --reload

UI

A Vite + React application is located in apps/ui. Install dependencies with pnpm:

cd apps/ui
pnpm install

Run the development server:

pnpm dev

The UI relies on VITE_API_BASE_URL and related variables to know where the API and authentication services live. These values are read from the .env.* files used by Docker Compose so each environment automatically points to the correct services.

Docker Compose

Several compose files make it easy to run the API and UI in different environments. The base configuration lives in docker-compose.base.yml, with environment-specific overrides for development, staging, demo and production.

Example usage for development:

docker-compose -f docker-compose.base.yml -f docker-compose.development.yml up --build

The compose setup now includes an Apache service for the UI. In development it exposes ports 8085 and 8086 for HTTP and HTTPS by default.

To use a different environment replace development with production, staging or demo and provide the matching .env.* file.

Releases

This project uses Changesets for versioning. When you make changes that should trigger a release, run:

pnpm changeset

Commit the generated file inside .changeset/. Merging to main will trigger the release workflow which versions and publishes any packages.

Linting

MegaLinter checks formatting and common issues across all packages. Run it locally with:

task lint

To automatically fix problems run:

task lint:fix

Nix development environment

The repository includes a small flake.nix describing the tooling used in development. If you have Nix installed you can enter a shell with all required packages using:

nix develop

The dev container is configured to install Nix and use this flake, providing a consistent setup across machines. The devtools feature verifies asdf and the task command from the Nix packages, then installs MegaLinter so you can run task lint directly inside the container.

Pre-commit hooks

Fast checks run automatically via pre-commit. The dev container installs the tool and runs pre-commit install for you. If working outside the container make sure pre-commit is available and run:

pre-commit install

Hooks like Black and Prettier will then execute before each commit.

Secret scanning

The repository includes a gitleaks configuration. Scan for secrets locally with:

task secrets

The pre-commit hook also runs gitleaks using the .gitleaks.toml file.

Commit messages

This repository uses commitlint to enforce the Conventional Commits specification. After running pnpm install Husky installs a commit-msg hook that runs commitlint automatically. Make sure your commit messages follow the standard so the hook passes.

Documentation

The documentation is built with Docusaurus. To run it locally:

cd docs
pnpm install
pnpm start

Changes pushed to main will automatically build and publish the site to GitHub Pages.

About

πŸ’Έ A modular, type-safe personal finance system for humans β€” track, plan, visualize, and evolve your entire financial ecosystem πŸŒ±πŸ“Š

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published