Modern, installable progress tracker built with plain HTML, CSS, and JavaScript.
- Dashboard, habits, CP log, dev log, roadmap, reviews, money tracking
- New Resources tab to save your personal links and notes
- Stronger local saving with main + backup storage keys
- Export/import JSON backup
- Install as desktop app (PWA) with shortcut support
Option 1: Open directly
- Open index.html in Chrome or Edge
Option 2: Run a local server (recommended for installable app features)
- In project folder run: python3 -m http.server 8080
- Open: http://localhost:8080
- Open the app in Chrome or Edge (prefer server URL like http://localhost:8080)
- Go to Settings tab
- Click Install as Desktop App if visible
- If button is hidden, use browser menu:
- Chrome: More tools > Create shortcut (check Open as window)
- Edge: Apps > Install this site as an app
After install, you can launch it from desktop/app launcher like a normal app.
The app saves to browser localStorage. Data can appear missing when:
- You switch between different URLs/origins (file:// vs localhost vs deployed URL)
- Browser storage is blocked (private mode or strict settings)
- You clear site data/cache
Now the app writes to:
- beast_tracker_v2 (main)
- beast_tracker_backup_v2 (backup)
- beast_tracker_v1 (legacy compatibility)
Best practice:
- Always use one URL consistently
- Keep regular JSON backups from Settings > Export All Data
- Open the app with one stable URL only.
- Use http://localhost:8080 instead of opening file directly.
- Do not use Private/Incognito mode.
- In browser settings, allow site data and cookies for localhost or your deployed domain.
- Add one test record in any tab.
- Go to Settings and check Last Saved time updates.
- Restart browser and PC.
- Open the same exact URL again.
- If data is still missing, use Import Data from your last JSON backup.
- Keep weekly backups with Export All Data.
This project is a static app, so the default database is browser storage.
- Primary store: localStorage key beast_tracker_v2.
- Secondary store: localStorage key beast_tracker_backup_v2.
- Recovery store: IndexedDB snapshot store progress_tracker_db.
- Use one browser and one URL for daily usage.
- Export backup JSON every week or before major edits.
- Save backup file to Google Drive or another external location.
- Before changing device or domain, Export on old URL and Import on new URL.
If you want data to sync automatically across devices, move from browser-only storage to a backend database.
- Create a Supabase project.
- Create a table for tracker_data with columns id, user_id, payload_json, updated_at.
- Add Supabase JS client in the app.
- On each save, write payload_json to Supabase.
- On app load, fetch latest payload_json and merge with local snapshot.
- Keep local backup as fallback when offline.
Current project already supports robust local persistence and manual migration by Export/Import.
- Open Resources tab
- Add title, type, URL, and notes
- Click Add
- Open saved links directly from the table
- Delete any resource using the X button
Everything is saved in the same local data object and included in export/import backups.
- Push this project to a GitHub repository
- Go to vercel.com and sign in with GitHub
- Click Add New > Project
- Import your repository
- Framework preset: Other
- Build command: leave empty
- Output directory: leave empty
- Click Deploy
Vercel will host the static files directly.
Important for your data:
- localStorage is per browser and per URL
- Local data from localhost is not automatically copied to vercel.app URL
- Use Export on localhost, open deployed app, then Import to restore
- index.html: Main app UI and logic
- manifest.json: PWA install metadata
- sw.js: Service worker for app shell caching
- icon-192.svg: App icon
- icon-512.svg: App icon