Skip to content

mrkaye97/medici

Repository files navigation

Medici

Medici is a minimalistic, self-hostable alternative to Splitwise for managing group expenses. Named after the Florentine House of Medici, it focuses on simplicity and privacy while providing all the essential features you need.

Why Medici?

  • Privacy-first: Self-host your financial data instead of trusting third parties
  • Minimalistic: Clean, distraction-free interface with only essential features
  • Easy deployment: Single Docker Compose command to get started
  • No subscriptions: Own your data, no recurring fees
  • Open Source: Fully transparent codebase, no hidden agendas
  • No tracking: No ads, analytics, or data collection
  • No limits: Unlimited pools, friends, and expenses without hidden fees

Features

Core Functionality

  1. Pools: Create groups ("pools") to organize expenses by context (roommates, trips, etc.)
  2. Friend Management: Add friends and organize them into relevant pools
  3. Smart Splitting:
    • Set default split percentages per pool for quick expense entry
    • Split expenses evenly or with custom percentages
    • Automatic debt simplification to minimize transactions
  4. Expense Tracking:
    • Categorize expenses for better organization
    • Add detailed descriptions and notes
    • Track who paid and who owes what

Analytics & Insights

  1. Spending Analytics: View top spending categories
  2. Debt Overview: See who owes you money and how much you owe others at a glance
  3. Payment Integration: Add Venmo handles for easy payment requests and settlements

Privacy & Control

  1. Self-hosted: Keep your financial data on your own infrastructure
  2. Open Source: Full transparency and customizability
  3. No tracking: No analytics, ads, or data collection

Screenshots

View Pools

Friends View Profile View

Pool Details

Roommates Yosemite Trip

Add Expenses

Add Expenses

Quick Start

Docker Compose (Recommended for Self-Hosting)

The easiest way to get Medici running is with Docker Compose:

curl -O https://raw.githubusercontent.com/mrkaye97/medici/main/compose.example.yaml
docker compose -f compose.example.yaml up

Then visit http://localhost:3000 to get started.

For production, make sure to change AUTH_SECRET_KEY to a secure value in the compose file.

Local Development Setup

For development or if you prefer running without Docker:

Prerequisites:

Detailed Setup Steps:

  1. Install Prerequisites:
# Install Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source ~/.cargo/env

# Install diesel CLI
cargo install diesel_cli --no-default-features --features postgres

# Install just
cargo install just

# Install Node.js and pnpm (using your preferred method)
# On macOS with Homebrew:
brew install node pnpm
  1. Database Setup:

Run the database with docker compose: docker compose up -d

  1. Clone and Configure:
# Clone the repository
git clone https://github.com/your-username/medici.git
cd medici

# Set up environment files
just set-env-backend
just set-env-frontend

# Review and edit .env files as needed
cat server/.env
cat frontend/.env
  1. Initialize and Start:
# Run the complete setup (installs dependencies, runs migrations)
just setup

# Start development servers in separate terminals:

# Terminal 1: Frontend (React dev server)
cd frontend && pnpm dev

# Terminal 2: Backend (Rust server with hot reload)
cd server && cargo watch -x run

The development setup will be available at:

  • Frontend: http://localhost:3001
  • Backend API: http://localhost:8000

About

A minimalist Splitwise-like expense-sharing app

Resources

License

Stars

Watchers

Forks

Contributors