🐝 A bill-splitting and expense tracking app
  • Python 47.5%
  • HTML 41.6%
  • CSS 9.9%
  • JavaScript 0.6%
  • Dockerfile 0.3%
Find a file
Kamil Marut 29c7121928
All checks were successful
Push Docker Image / push (push) Successful in 7m36s
feat: Add django-nitro-mailer for email logging
2026-05-14 18:27:05 +02:00
.forgejo/workflows fix: Use proper registry in image metadata 2026-03-26 12:25:39 +01:00
accounts fix(groups): Minor group fixes 2026-05-10 10:48:19 +02:00
expenses feat(htmx)!: Use HTMX to only render changing elements 2026-05-11 11:24:58 +02:00
groups feat(htmx)!: Use HTMX to only render changing elements 2026-05-11 11:24:58 +02:00
spendbee feat: Add django-nitro-mailer for email logging 2026-05-14 18:27:05 +02:00
tests feat(groups): Add GroupActivity admin 2026-05-10 13:01:22 +02:00
.dockerignore chore: Update .dockerignore 2026-05-09 23:26:15 +02:00
.env.example fix: Properly link to the favicon 2026-05-10 12:40:50 +02:00
.gitignore feat(!): Rewrite app in Django 2026-05-09 23:16:46 +02:00
AGENTS.md fix(groups): Minor group fixes 2026-05-10 10:48:19 +02:00
bun.lock feat(!): Rewrite app in Django 2026-05-09 23:16:46 +02:00
docker-compose.yml feat(!): Rewrite app in Django 2026-05-09 23:16:46 +02:00
Dockerfile build(docker): Export requirements.txt on $BUILDPLATFORM and remove wheels 2026-05-11 15:10:31 +02:00
entrypoint.sh feat(!): Rewrite app in Django 2026-05-09 23:16:46 +02:00
manage.py chore(linter): Fix many Ruff & mypy errors 2026-05-10 10:33:08 +02:00
package.json feat(!): Rewrite app in Django 2026-05-09 23:16:46 +02:00
pyproject.toml feat: Add django-nitro-mailer for email logging 2026-05-14 18:27:05 +02:00
README.md docs: Update README.md after rewrite 2026-05-09 23:19:22 +02:00
uv.lock feat: Add django-nitro-mailer for email logging 2026-05-14 18:27:05 +02:00

Spendbee

🐝 A bill-splitting and expense tracking app

Overview

Spendbee helps you track bills and expenses with friends. Create groups, add expenses, and see who owes what at a glance.

Features

  • User authentication
  • Create and join expense groups
  • Add expenses and split with selected members
  • Receipt scanning - Upload receipt photos and automatically extract items using AI (Mistral Document AI)
  • Multi-currency support - Track expenses in 30+ currencies with ECB exchange rates
  • Guest members - Add people without user accounts
  • Real-time balance calculation across currencies
  • Record debt settlements
  • View expense history and settlement history

Install

You can set up Spendbee using Docker or run it locally.

Docker

To set up Spendbee using Docker, follow these steps:

  • Clone the repository and navigate to the project directory.
  • Run docker compose up to start all containers

Local

You can also choose to run the webapp locally:

  • Clone the repository and navigate to the project directory.
  • Run uv sync to install dependencies using uv
  • Run uv run python manage.py runserver to start the development server

Environment

In both cases, you should use the .env.example file as a template for your environment variables. Copy it to .env and fill in the required values.

Usage

See entrypoint.sh for usage options.

To create an admin user, run docker compose exec web python manage.py createsuperuser and follow the prompts.

To apply database migrations, run uv run python manage.py migrate.

Development

In order to change the page's styles, you need to have Bun installed. Run bun run watch or bun run compile to compile TailwindCSS styles.