Skip to content

oss-apps/split-pro

Repository files navigation

SplitPro Logo

SplitPro

An open source alternative to Splitwise

To our App »

About

SplitPro aims to provide an open-source way to share expenses with your friends.

It's meant to be a complete replacement for Splitwise.

It currently has most of the important features.

  • Add expenses with an individual or groups
  • Overall balances across the groups
  • Multiple currency support
  • Upload expense bills
  • PWA support
  • Split expense unequally (share, percentage, exact amounts, adjustments)
  • Push notification
  • Download your data
  • Import from splitwise

More features coming every day


Why

Splitwise is one of the best apps to add expenses and bills.

I understand that every app needs to make money, After all, lots of effort has been put into Spliwise. My main problem is how they implemented this.

Making pro features or asking money to remove ads is fine, But asking money for adding Expenses (Core feature) is frustrating.

I was searching for other open-source alternatives (Let's be honest, any closed-source product might do the same and I don't have any reason to believe otherwise).

I managed to find a good app spliit.app by Sebastien Castiel but it's not a complete replacement and didn't suit my workflow sadly. Check it out to see if it fits you.

That's when I decided to work on this

Tech stack

Getting started.

Prerequisites

  • Node.js (Version: >=18.x)
  • PostgreSQL
  • pnpm (recommended)

Self Hosting

Prerequisites

  • Docker
  • Docker compose plugin
  • .env file with all the required secrets and env vars (make sure to uncomment POSTGRES_HOST, POSTGRES_PORT, POSTGRES_USER, POSTGRES_PASSWORD)

Instructions to deploy (it's just one command away)

docker compose build && docker compose up -d

Domain setup, SSL certs and reverse proxy

Prerequisites

  • nginx
  • certbot
  • certbot nginx plugin

Nginx Guide for RedHat based systems (Fedora, RHEL, CentOS etc)

Add a new conf file to your nginx configuration for this application

sudo cp ./splitpro-nginx.conf /etc/nginx/conf.d/

Validate the new config

sudo nginx -t

If everything looks good, you can go ahead and restart nginx to reflect the new config (You can also reload it but I prefer restart)

sudo systemctl restart nginx

Now let's install certbot to request a free SSL cert from letsencrypt

sudo dnf install -y certbot python3-certbot-nginx

Request the certificate

sudo certbot --nginx -d splitpro.domain.com

and that's it!

Setup Backups

Prerequisites

Create a folder called as .bps in root's home dir

mkdir /root/.bps

Update the script.sh to have your own target email address instead of [email protected]

Copy the backup script into .bps location

cp ./backup/script.sh /root/.bps/

Add the cron job in the crontab

crontab ./backup/crontab.txt

Run locally

  • Copy .env.example to .env to the root directory and add the required env variables.
  • R2 related env is for cloudflare R2 used to upload and can be set up here
  • RESEND env could be obtained by creating a free account on here
  • Run pnpm install
  • Run pnpm db:push or pnpm prisma:prod to populate db migrations
  • Run pnpm dev