Split bills with friends and family. Track, calculate, and settle expenses together, with a focus on offline-first, collaborative data synchronization.
- Offline-first architecture. Works without internet, syncs when you're back online
- Real-time collaboration. Changes sync across devices instantly via Automerge CRDTs
- Multi-party expense splitting. Supports equal splits, custom amounts, and weighted percentages
- Settlement calculations. Automatically calculates who owes whom
- Receipt attachments. Attach photos of receipts to expenses
- PWA & Native apps. Available as a Progressive Web App and native Android/iOS apps
- Multi-language support. Internationalized with Lingui (English & Spanish for now)
- Migration support. Import your data from other proprietary apps (currently only Tricount is supported).
Development, CI, and server containers use Node.js 26. Use pnpm through Vite+
(vp). Install Vite+ and the Node version recorded in
.node-version, then run from the repository root:
vp install
vp run dev- Check or build:
vp run check,vp run test, andvp run build. - Set up or troubleshoot tooling: Toolchain guide.
- Run native apps: Mobile setup.
- Understand the data flow: Architecture.
We welcome contributions! See our Contributing Guide for details on:
- Development setup and workflow
- Code style guidelines
- Testing requirements
- Pull request process
| Package | Description |
|---|---|
@trizum/pwa |
Main web application. React + Vite PWA with offline support |
@trizum/mobile |
Native mobile apps wrapper using Capacitor (Android & iOS) |
@trizum/server |
Sync server. Hono + Automerge repo for WebSocket synchronization |
@trizum/screenshots |
Automated screenshot generation for app stores using Playwright |
@trizum/logging |
Shared LogTape logging conventions and configuration helpers |
@trizum/tsconfig |
Shared TypeScript configuration |
This project is licensed under the MIT License. See the LICENSE file for details.
Horus Lugo 🚇 🚧 💻 📖 🎨 🛡️ 🔧 |
Mario Nachbaur 🤔 💻 🎨 |
ddavestic 🐛 |