NinjaExpense

Sign in to your account

First time? Complete Cloudflare 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 Cloudflare R2 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, per-user random salt). JWTs expire after 7 days. Login locked after 5 failed attempts. Admin role required for user/company management. All requests authenticated via the Cloudflare Worker.

Files: Receipts stored in Cloudflare R2 (private). Served via the authenticated Worker — files require a valid session to access.

Data: All users manage their own expenses and companies independently. Admin role is only for managing user accounts — admins do not see other users' expenses unless they turn on the "View all" toggle.

Tip: In Safari tap Share → Add to Home Screen for a phone app icon.