Menu

Tree [581777] main /
 History

HTTPS access


File Date Author Commit
 .bundle 2025-03-23 Indranil Bhuin Indranil Bhuin [c0669c] Initial commit
 .github 2024-01-08 Indranil Bhuin Indranil Bhuin [8be964] Update issue templates
 __tests__ 2025-03-23 Indranil Bhuin Indranil Bhuin [c0669c] Initial commit
 android 2026-01-02 Indranil Bhuin Indranil Bhuin [89500e] feat: change to svg icons, using bottom sheet f...
 assets 2026-01-02 Indranil Bhuin Indranil Bhuin [ef08a1] fix: performance improvement overall
 ios 2026-01-12 Indranil Bhuin Indranil Bhuin [581777] fix: styles updated to globalstyles
 src 2026-01-12 Indranil Bhuin Indranil Bhuin [581777] fix: styles updated to globalstyles
 .eslintrc.js 2025-03-23 Indranil Bhuin Indranil Bhuin [c0669c] Initial commit
 .gitignore 2026-01-02 Indranil Bhuin Indranil Bhuin [8be70a] fix: major
 .prettierrc 2026-01-02 Indranil Bhuin Indranil Bhuin [89500e] feat: change to svg icons, using bottom sheet f...
 .watchmanconfig 2025-03-23 Indranil Bhuin Indranil Bhuin [c0669c] Initial commit
 App.tsx 2026-01-12 Indranil Bhuin Indranil Bhuin [581777] fix: styles updated to globalstyles
 CODE_OF_CONDUCT.md 2025-12-15 Indranil Bhuin Indranil Bhuin [ae614b] feat: version upgrade
 Gemfile 2025-03-23 Indranil Bhuin Indranil Bhuin [c0669c] Initial commit
 Gemfile.lock 2025-03-23 Indranil Bhuin Indranil Bhuin [c0669c] Initial commit
 LICENSE 2026-01-03 Indranil Bhuin Indranil Bhuin [bd80af] fix: minor
 README.md 2026-01-07 Indranil Bhuin Indranil Bhuin [30feea] fix: minor
 app.json 2026-01-02 Indranil Bhuin Indranil Bhuin [e1801f] fix: app name chnage to zero and bundle identif...
 babel.config.js 2026-01-02 Indranil Bhuin Indranil Bhuin [89500e] feat: change to svg icons, using bottom sheet f...
 bun.lock 2026-01-12 Indranil Bhuin Indranil Bhuin [581777] fix: styles updated to globalstyles
 declarations.d.ts 2026-01-02 Indranil Bhuin Indranil Bhuin [8be70a] fix: major
 index.js 2026-01-02 Indranil Bhuin Indranil Bhuin [ef08a1] fix: performance improvement overall
 jest.config.js 2025-03-23 Indranil Bhuin Indranil Bhuin [c0669c] Initial commit
 metro.config.js 2026-01-12 Indranil Bhuin Indranil Bhuin [581777] fix: styles updated to globalstyles
 package.json 2026-01-12 Indranil Bhuin Indranil Bhuin [581777] fix: styles updated to globalstyles
 react-native.config.js 2025-12-15 Indranil Bhuin Indranil Bhuin [ae614b] feat: version upgrade
 tsconfig.json 2026-01-02 Indranil Bhuin Indranil Bhuin [8be70a] fix: major

Read Me

    zero logo light

zero - Minimal Expense Manager

Zero is a lightweight, open-source expense tracking app for Android & iOS. Built with privacy-first approach — all your financial data stays on your device. No servers, no tracking, no data collection.

Screenshots

What's New in v2.0

  • WatermelonDB + SQLite — Migrated from Realm to WatermelonDB for better performance and long-term support
  • Faster load times — Lazy loading and optimized queries
  • Improved UI — Bottom sheets, better animations, refined design
  • Better data export — Export/import your data seamlessly across devices

Features

Expense Tracking

Add, edit, and delete transactions with customizable categories.

Category Management

Create your own categories with custom icons and colors.

Insights & Reports

  • Monthly spending breakdown with pie charts
  • Heatmap calendar showing daily expenses
  • Average per day calculations

Debt Tracking

Track money you owe or are owed. Manage debtors and individual debts.

Customization

  • Light & Dark themes (+ system default)
  • Multiple currency symbols
  • Personalized username

Data Control

  • Export all data as JSON
  • Import on new device
  • Delete all data option

Privacy First

  • 100% offline — no internet required
  • All data stored locally on device
  • Zero data collection

Tech Stack

Layer Technology
Framework React Native
Database WatermelonDB (SQLite)
State Redux + Redux Saga
UI Custom components + Lucide icons
Navigation React Navigation
Lists FlashList (performant lists)

Why WatermelonDB?

We migrated from Realm to WatermelonDB because:

  • Realm is deprecated — MongoDB announced end of support
  • SQLite is battle-tested — Powers millions of apps
  • Lazy loading — Only loads data when needed
  • Better React Native integration — Built specifically for RN
  • Smaller bundle size — Less bloat

Project Structure

src/
├── components/        # Reusable UI components
│   ├── atoms/         # Basic components (Button, Input, Text)
│   └── molecules/     # Composite components
├── screens/           # App screens
│   └── ScreenName/
│       ├── index.tsx      # UI component
│       ├── useScreenName.ts  # Business logic hook
│       └── style.ts       # Styles
├── watermelondb/      # Database layer
│   ├── models/        # Data models
│   ├── services/      # CRUD operations
│   ├── schema.ts      # Database schema
│   └── database.ts    # DB initialization
├── redux/             # State management
├── navigation/        # Navigation config
├── hooks/             # Global hooks
├── utils/             # Helper functions
└── sheets/            # Bottom sheet components

Getting Started

Prerequisites

  • Node.js 18+
  • Yarn or npm
  • Android Studio / Xcode

Installation

# Clone the repo
git clone https://github.com/indranilbhuin/zero.git
cd zero

# Install dependencies
yarn install

# iOS only
cd ios && pod install && cd ..

# Run the app
yarn android  # or yarn ios

Contributing

Contributions are welcome! Please read our Code of Conduct first.

License

This project is licensed under the BSD 2-Clause License.


Built with ❤️ in India

Embrace the simplicity of zero

MongoDB Logo MongoDB