Mia is a private, offline-first Progressive Web App (PWA) to track projects, finances, study, meals, and workouts. All data stays on your device in IndexedDB — no account, no backend, no analytics.
Available in Italian and English (choose on first visit or under More → Language).
| Area | Features |
|---|---|
| Home | Daily journal: to-dos, expenses, study, meals, workouts, project updates; month overview |
| Projects | Goals with status, progress logs, idle reminders |
| Finance | Income & expenses, categories, expense groups, credit-card statements with line items |
| Study | Sessions with duration and subject |
| Health | Meal diary + physical activity |
| More | PDF reports, JSON backup/restore, PIN lock, reminders, language |
Mia is a static site — no build step.
# Clone the repo
git clone https://github.com/Mast232/Mia.git
cd Mia
# Serve over HTTP (required for service worker)
npx serve .Open the URL shown (e.g. http://localhost:3000). Use localhost or HTTPS so the service worker can register.
Live app: https://mia-eight-phi.vercel.app/
Install Mia from that URL (or your own deploy) on your phone or desktop:
- Open https://mia-eight-phi.vercel.app/ in Safari
- Tap Share → Add to Home Screen
- Launch Mia from the home screen icon
- On first launch: choose language, then set a 4–6 digit PIN
Links from WhatsApp open in Safari’s in-app browser, not the installed PWA. Use “Received a link? Import it here” on Home to paste shared to-do links.
- Open https://mia-eight-phi.vercel.app/ in Chrome
- Tap the menu → Install app / Add to Home screen
- Choose language and PIN on first run
- Open https://mia-eight-phi.vercel.app/
- Click the install icon in the address bar (or browser menu → Install)
- Mia runs in its own window like a native app
Mia/
├── index.html # Entire UI + application logic (main file for features)
├── i18n.js # Italian / English strings and language helpers
├── guide-i18n.js # Bilingual in-app guide and onboarding content
├── fonts.css # Embedded Inter & Fraunces fonts (base64)
├── sw.js # Service worker (offline cache + updates)
├── manifest.json # PWA manifest (name, icons, theme)
├── jspdf.umd.min.js
├── assets/ # Background & hero illustrations (WebP)
└── *.png # App icons
To add a feature, edit index.html (and i18n.js if you add user-visible text).
- Storage: IndexedDB on your device only
- PIN: Convenience lock (once per day), not encryption
- Backup: More → Export backup →
.jsonfile - Restore: More → Import backup (replaces current data)
- Reports: PDF generated locally via jsPDF; share with the system sheet
- To-do sharing: Optional link export (base64 in URL hash); no server involved
Export a backup before clearing browser data or uninstalling.
See SECURITY.md for the security model and how to report issues.
The repo is set up for Vercel (vercel.json included): push to main to deploy.
Any static host works: Netlify, GitHub Pages, Cloudflare Pages, etc. Serve the root folder over HTTPS.
After deploy, bump the cache version in sw.js (const CACHE = 'mia-vXX') when you change index.html or i18n.js.
- Cache: Service worker uses network-first for
index.html, cache-first for assets - Version:
APP_VERSIONinindex.htmldrives the “What’s new” card - DB schema:
DB_VERinindex.html; migrations run inindexedDB.onupgradeneeded - Language: Persisted in IndexedDB meta keys
langandlangChosen
python3 -m http.server 8080
# open http://localhost:8080Issues and pull requests are welcome. Keep changes focused; match existing patterns in index.html.
MIT — see LICENSE. You are free to use, modify, and distribute Mia with attribution.