NinjaExpense

Sign in to your account

First time? Complete Supabase setup in Settings, then create your first user from the Users section.

NinjaExpense

Expenses

Add receipt

Take photo or upload file

Receipts, invoices, PDFs

Tap to open camera or choose file

Reports

0
Expenses
0.00
Total

Settings

Signed in

Receipt Reading (OCR)
Tesseract — runs on your device, works offline, no cost. Good for clear photos.
Backend (Cloudflare Worker)
Cloudflare Setup Guide

One-time setup (~15 minutes):

  1. Install Node.js, then run: npm install -g wrangler
  2. Run wrangler login — opens browser to sign in to Cloudflare (free account)
  3. Create D1 database: wrangler d1 create ninja-expense — copy the ID into wrangler.toml
  4. Create R2 bucket: wrangler r2 bucket create ninja-expense-receipts
  5. Run schema: wrangler d1 execute ninja-expense --file=schema.sql
  6. Set secret: wrangler secret put JWT_SECRET — type any random phrase
  7. Deploy: wrangler deploy — copy the Worker URL
  8. Paste URL above → Test connection → then create your first user below
Files: worker.js, wrangler.toml, schema.sql are available in your deployment folder.
Users

Add new user

Companies
Storage & Data

Local storage used

Calculating…

Files uploaded to Supabase Storage are automatically removed from this device. "Clear files in cloud" manually removes any remaining local copies.

About

Security: Passwords hashed with PBKDF2 (100,000 iterations) server-side. JWTs signed with HS256. All requests authenticated. Per-user data isolation enforced in the Worker.

Files: Receipts stored in Cloudflare R2 (10GB free). Served through the authenticated Worker — files are private and require a valid session to access.

Database: Cloudflare D1 (SQLite) — 5GB free, fast, globally distributed.

Tip: Browser Share → Add to Home Screen for a phone app icon.