A self-hosted freelance budgeting app with a React UI, FastAPI backend, automatic git backup to GitHub, and over-the-air updates from PyPI.
Quick Install
One-liner that sets up everything (venv, service, auto-start):
curl -sSL https://raw.githubusercontent.com/Delaunay/freemace/master/install.sh | bash
This will:
Create /opt/freemace/ with a Python venv and data directory
Install uv if not already available
Install the latest freemace package from PyPI
Start a systemd user service on port 5002
After installation, open http://localhost:5002 in your browser.
Manual Install
pip install freemace
Then run the server:
freemace serve --port 5002
Configuration
After installing, you can configure git backup and auto-updates from the Settings page in the web UI, or via the CLI:
# Set up automatic git backup to GitHub
freemace setup-git git@github.com:username/freemace-data.git
# Check for and install updates
freemace update --restart
# View or change configuration
freemace config
freemace config auto_update true
Useful Commands
sudo systemctl status freemace # check service status
sudo systemctl restart freemace # restart
sudo journalctl -u freemace -f # view logs
Features
Budget spreadsheet with income/expense tracking, categories, and pivot summaries
CSV import/export
Dark/light theme
Automatic git backup to GitHub on every save
SSH key generation and guided GitHub setup from the UI
Auto-update from PyPI with service restart
One-command installation with systemd service
Metadata
Release files for freemace 0.9.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| freemace-0.9.0.tar.gz | 224.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| freemace-0.9.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 448.5 kB
Release files / freemace-0.9.0.tar.gz
| Download URL | freemace-0.9.0.tar.gz |
|---|---|
| Size | 224.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3cc68a4125d61ef71d21ec1491b1847ae54e8b48b2473f8df53ca2dd3a68ef3c
|
|
BLAKE2b-256 checksum How to use checksums |
dcee9ab0b36f5c0cfb69e05d83b048de8c2891f8c9b79c2dd7ea171e6f4ac8c0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 23, 2026.
Transparency logRelease files / freemace-0.9.0-py3-none-any.whl
| Download URL | freemace-0.9.0-py3-none-any.whl |
|---|---|
| Size | 224.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f0a1abc6ebb2a8befc5fce8466c01226dc59af223d93fefd76c1e0106d3fbb1d
|
|
BLAKE2b-256 checksum How to use checksums |
4cb7ec7d2444cbedd53a4e69163dec00755546c6d9a5da2a0a25cba2fda6205b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 23, 2026.
Transparency log