SplitPro is a self-hosted, open-source alternative to Splitwise designed for individuals and groups who want full control over their expense tracking data. Built with modern web technologies including Next.js, tRPC, and PostgreSQL, it offers a complete expense management solution without paywalls or ads. Unlike closed-source alternatives that monetize core features like adding expenses, SplitPro ensures all functionality is freely available. The project supports community translations, data export, and import from Splitwise, making it ideal for users seeking privacy, customization, and long-term sustainability in personal finance tools.
What You Get
- Add expenses for individuals or groups - Create and manage shared expenses with multiple participants, supporting both equal and custom splits by percentage, amount, or adjustment.
- Multi-currency support with BETA conversion - Track expenses in different currencies and use built-in rate providers (Frankfurter, Open Exchange Rates, NBP) to convert balances automatically.
- Upload expense bills - Attach receipts or images directly to expenses for record-keeping and audit trails.
- PWA support - Install SplitPro as a progressive web app for offline access and home screen icon integration on mobile devices.
- Download your data - Export all expense history and group balances in a structured format for backup or migration.
- Import from Splitwise - Seamlessly migrate your existing expense data from Splitwise into SplitPro with one-click import.
- Simplify group debts - Automatically calculate and visualize net balances across groups, reducing manual reconciliation.
- Push notifications - Receive real-time alerts for new expenses, payments, or balance updates from group members.
- BETA recurrent transactions - Set up repeating expenses (e.g., rent or utilities) to auto-generate recurring entries.
- BETA bank account transaction integration - Connect via GoCardless or Plaid to import bank transactions and auto-match them with expenses (requires third-party account).
- Community translations - Contribute or use translations in multiple languages via Weblate, with full UI localization support.
Common Use Cases
- Building a shared living expense tracker - Roommates managing rent, groceries, and utilities across multiple currencies and payment methods, using SplitPro to avoid manual calculations and ensure transparency.
- Creating a travel group expense system - Friends on a multi-country trip tracking daily spending in EUR, USD, and PLN with automatic currency conversion and receipt uploads.
- Problem → Solution flow: Manual expense tracking leads to disputes → SplitPro automates balancing - Users manually calculate who owes whom after group outings, leading to confusion; SplitPro auto-calculates net balances and sends notifications when debts are settled.
- Team/workflow scenario: DevOps teams managing shared cloud costs - Technical teams using SplitPro to allocate and track cloud service expenses among members, with data export for accounting reconciliation.
Under The Hood
This project is a modern, full-stack web application built with TypeScript and Next.js, designed to manage personal and group finances with a focus on multi-currency support and real-time transaction synchronization. It serves as an expense tracking platform that integrates with banking services and offers a modular architecture for extensibility.
Architecture
This codebase follows a monolithic structure centered on Next.js, with clear separation between UI, business logic, and data access layers.
- Adopts a monolithic architecture with Next.js as the core framework, organizing code into API routes, components, and backend services
- Well-organized module structure with distinct layers for data access (Prisma), business logic (services), and presentation (components)
- Employs design patterns like strategy pattern in currency rate providers and factory pattern in bank transaction services
- Component interactions are managed through React hooks, form handling, and UI primitives with clear separation between UI and logic
Tech Stack
It leverages a modern tech stack built around TypeScript, Next.js, and a variety of third-party libraries for enhanced functionality.
- Built with TypeScript and Next.js, utilizing React as the core UI library with a strong emphasis on type safety and modern JavaScript features
- Heavily relies on Prisma for database management, integrates with tRPC for API handling, and uses UI libraries such as Lucide React, Radix UI, and Tailwind CSS
- Utilizes pnpm as the package manager, with Prisma for database migrations and Next.js for building the application, alongside tools like Jest for testing and Oxlint for code quality
- Employs Jest as the primary testing framework with jsdom for environment simulation, ensuring robust test coverage and validation of components
Code Quality
It demonstrates solid development practices with consistent TypeScript usage and component-based structure, though some areas could benefit from improved testing.
- Consistent use of modern TypeScript practices and component-based architecture throughout the codebase
- Emphasis on user experience through UI components and integration with external services like Plaid and push notifications
- Moderate test coverage with a focus on unit and integration testing, though not exhaustive
- Code consistency is generally strong but could be improved with more comprehensive linting and style enforcement
What Makes It Unique
This platform distinguishes itself through its comprehensive financial management capabilities and integration with real-time banking data.
- Combines real-time financial data synchronization with a modular architecture that supports multiple banking providers and currency conversion services
- Offers multi-currency support and internationalization features, making it suitable for global users
- Integrates seamlessly with Plaid for transaction fetching and push notifications for real-time updates
- Designed as a scalable solution for both personal expense tracking and group finance management