# Tally Daily, weekly and monthly expense tracking. Data is saved privately (local storage on web, on-device storage in the app). No account. There are two versions: - **This folder (plain web)** — no dependencies, no build step. Start it below. - **`expo-app/` (React Native + Expo)** — one codebase that runs as a website and as iOS/Android apps. Needs Node.js 20+; see `expo-app/README.md`. ## Start ```sh cd "/mnt/c/workspace/expense tracker" python3 server.py ``` Open **http://localhost:8000** in your browser. To use another port: `PORT=8080 python3 server.py`. ## Features - **Sidebar views** — Daily, Weekly, Monthly and All expenses with live counts, each group with its own total. - **Categories** — Food, Transport, Household, Utilities, Shopping, Health, Beauty, Entertainment, Other. - **Repeats** — mark an expense Daily, Weekly or Monthly. Repeating entries appear under “Repeating expenses” with the next due date and a one-click **Log next occurrence** button. - **Summary** — totals plus a per-category spending breakdown for whatever is shown. - **INR amounts** — everything is shown in rupees (₹) with Indian digit grouping. - **Search and filters** — by text, category and repeat type. - **Edit / delete** — every entry can be changed or removed. - **Sample data** — realistic entries are loaded on first run so each view has content. Use **Clear all** to start empty and **Load sample data** to add them back. ## Deploy Live at **https://tally.shaebali.com** (Dokploy app `tally`, built from the `main` branch of the `shaebali/tally` Gitea repo). To ship: commit, push to `main`, then trigger `application.deploy` on Dokploy. Cloudflare caches `app.js`/`styles.css` at the edge, so every deploy that changes them must bump the `?v=` query in `index.html` or visitors keep getting the old files until the edge entry expires. ## Files - `index.html` — page structure - `styles.css` — styling - `app.js` — all logic (views, repeats, storage) - `server.py` — zero-dependency local server (the project runner)