

1 / 3About
Overview
Split is a complete, production-grade expense-sharing and bill-splitting app: a Flutter client (Android + iOS) and a Node.js backend built with Fastify 5, TypeScript, MongoDB and Redis. Friends and groups add expenses with any split method, see exact balances per currency with simplified debts, settle up by cash, UPI or bank (optionally through Razorpay), chat in groups with voice notes, get push notifications and track spending with reports and budgets. The money layer uses integer minor units with property tests and MongoDB transactions, so balances are always exact.
Key features
Groups, friends & balances
- Groups (home, trip, couple, other) with admins, invite links, QR join, archive and 30-day restore
- Friends with contact sync, personal invite links and QR scan; direct friend expenses outside groups
- Dashboard with overall owed / owe, filters, per-group and per-friend balances in every currency
- Simplified debts (minimum cash flow) and pairwise balances; display-only FX conversion
Expenses
- Equal, exact, percent, shares, adjustment and itemized splits with tax, tip and discount; multiple payers
- 16 categories, notes, dates, receipt photo with on-device OCR (ML Kit), saved split presets
- Comments, edit history, undo delete, recurring expenses and an offline queue that syncs later
Settle up, chat & insights
- Record cash / UPI / bank payments, open any UPI app with a pre-filled upi://pay link, optional Razorpay checkout
- Payment reminders (push + share text), activity feed, notification centre with per-type preferences and quiet hours
- Realtime group chat (Socket.IO) with edits, deletes, typing indicators and voice notes
- Reports by category and month, my share vs. paid, monthly budget with 80% / 100% alerts; CSV / PDF exports
- Android home-screen balance widget, biometric app lock, light / dark theme, server-driven force update
Accounts & backend
- E-mail + password with verification and reset, phone / e-mail OTP, Google and Sign in with Apple; JWT access / refresh rotation
- Fastify modular monolith: 20+ modules, Zod validation, argon2, rate limiting, field-level PII encryption
- BullMQ workers (recurring expenses, notifications, monthly summary, nightly balance reconciliation), FCM push, Resend / SMTP e-mail, S3 / Spaces or Cloudinary uploads
- Invite landing pages, privacy / terms / FAQ / delete-account pages, Android App Links and iOS Universal Links association files
What's included
- Full Flutter source code (about 30,700 lines of Dart) and backend source (about 11,500 lines of TypeScript)
- 60 backend unit tests (money, split, simplify, ledger) + 50 integration tests; 21 Flutter tests
- Root README (setup, configuration, Firebase, sign-in, rebranding, payments, deep links, signing, iOS, known limitations, troubleshooting), backend API reference and DEPLOYMENT guide
- .env.example documenting every variable, Docker Compose for a local MongoDB replica set + Redis, systemd + Caddy setup scripts, PM2 config, Dockerfile, Postman collection, Play upload tool
- Original code-drawn app icon and onboarding artwork with their generator scripts, signing template, LICENSE and CHANGELOG
- No private keys, Firebase files or server addresses: everything is a placeholder you replace with your own
Tech stack
- Mobile: Flutter (Dart 3.12+, tested on Flutter 3.47.4), Riverpod 3, go_router, Dio, socket_io_client, Firebase (Messaging, Crashlytics), google_sign_in, sign_in_with_apple, ML Kit, fl_chart, home_widget, in_app_purchase, razorpay_flutter
- Backend: Node.js 22, Fastify 5, TypeScript, Mongoose 8 (MongoDB 7 replica set), Redis + BullMQ, Socket.IO 4, Zod, jose, argon2, Vitest
- Android: AGP 9, Kotlin 2.2, Gradle 9.1, Java 17
Requirements
- Node.js 22+, MongoDB with replica-set transactions (MongoDB Atlas or the included Docker Compose) and Redis for production
- Flutter SDK (Dart 3.12.2+), Android Studio with JDK 17, Xcode for iOS
- Your own Firebase project and a server or hosting platform; optional MSG91 (SMS OTP), Resend / SMTP, S3 / Spaces, Razorpay
Setup in minutes
- Backend: npm ci, npm run infra:up (MongoDB replica set + Redis), copy .env.example to .env, npm run dev
- App: flutter pub get, flutterfire configure, then flutter run --dart-define=API_BASE_URL=http://10.0.2.2:5001
- Sign up, or use OTP with the development code from .env
- Deploy the API with the scripted Ubuntu + systemd + Caddy setup, PM2, Docker or a managed platform; build the app with your API URL
Monetization (ads/IAP)
- No ads included: the app is built for a clean, trustworthy finance experience
- Pro plan ready: Pro screen, in-app purchase client and server-side Play / App Store receipt verification (off by default via BILLING_ENFORCED)
- Razorpay integration for in-app payments between friends (optional, India; business KYC required)
Support & updates
Support is provided through the Aadhya Infotech DevStore: https://www.aadhya-infotech.com/DevStore/contact. Bug-fix updates for this package are published on the DevStore. You run the backend on your own server and accounts; please read the “Known limitations” section of the README before you publish.
Release history
- v1.1.010/5/2026
Split v1.1.0: first source release (Flutter app 1.1.0+3 + Fastify backend 1.0.0); fixes, original icon and artwork, full setup and deployment guides. See CHANGELOG.md.