A mobile-first interior design checklist tracker with Google Sheets sync.
Stack: Vanilla HTML + JS + Tailwind CDN + Google Apps Script
Features:
- Room-by-room checklist with progress tracking
- Per-item notes and budget tracking
- Priority view (Must Have / Should Have / Nice to Have)
- Summary dashboard with room progress, budget, and category breakdown
- Google Sheets sync for multi-device access (you + Foram)
- Offline-capable (localStorage fallback)
- No build step, no dependencies
- Create a new repo on GitHub (e.g.,
shivsagar-tracker) - Push all files to the
mainbranch:
git init
git add .
git commit -m "Initial commit"
git remote add origin https://github.com/YOUR_USERNAME/shivsagar-tracker.git
git push -u origin main- Go to Settings > Pages in your repo
- Set Source to Deploy from a branch, select
main, root/ - Save. Your site will be live at
https://YOUR_USERNAME.github.io/shivsagar-tracker/
The tracker works immediately with localStorage (no Google Sheets needed).
This lets you and Foram share the same data across devices.
- Go to sheets.google.com and create a new spreadsheet
- Name it "Shivsagar Interior Tracker" (or anything you like)
- Share it with Foram (optional, for viewing data directly in Sheets)
- In the Sheet, go to Extensions > Apps Script
- Delete any default code in the editor
- Copy the entire contents of
apps-script/Code.gsand paste it - Important: Change the
PASSPHRASEon line 20 to something only you and Foram know - Click Save (Ctrl+S)
- Click Deploy > New deployment
- Click the gear icon next to "Select type" and choose Web app
- Settings:
- Description: "Shivsagar Tracker API"
- Execute as: Me
- Who has access: Anyone
- Click Deploy
- Authorise when prompted (review permissions, allow)
- Copy the Web App URL (looks like
https://script.google.com/macros/s/AKfyc.../exec)
- Open your tracker site
- Tap the gear icon (top right) to go to Settings
- Paste the Web App URL
- Enter the same passphrase you set in Code.gs
- Enter your name (Darshan / Foram)
- Tap Save Settings
- Tap Sync Now to test
Do the same on Foram's phone with her name.
| Action | What happens |
|---|---|
| Check/uncheck item | Saved to localStorage instantly + synced to Sheet |
| Open the tracker | Loads from localStorage (fast) + fetches latest from Sheet in background |
| Sync Now (Settings) | Pulls latest data from Sheet, merges with local |
| Offline use | Everything works locally, syncs when back online |
Conflict handling: Last write wins. Since it's just 2 users, this is fine.
The tracker is designed to be reusable. To adapt it:
- Edit
js/schema.js- ChangePROJECT,PHASES,ROOMS, andALERTS - Create a new Google Sheet and deploy a fresh Apps Script
- Update the Web App URL in Settings
The sync layer (js/sheet-sync.js) and app logic (js/app.js) don't need changes.
shivsagar-tracker/
+-- index.html # Main page (loads Tailwind CDN + JS)
+-- js/
| +-- schema.js # Room/item definitions (swap for other projects)
| +-- sheet-sync.js # Google Sheets read/write module (reusable)
| +-- app.js # Main app: state, rendering, events
+-- apps-script/
| +-- Code.gs # Google Apps Script (paste into your Sheet)
+-- README.md # This file
- No tokens in the browser. The Apps Script URL is the only "secret" and it's an 80+ character random string.
- Passphrase on writes prevents anyone with the URL from modifying data.
- Data stays in your Google Sheet. No third-party services, no databases.
- Make the GitHub repo private if you want to hide the Apps Script URL from the source code.
Sync not working?
- Check that the Apps Script URL is correct (must end with
/exec) - Make sure you deployed as "Anyone" access
- Check the passphrase matches between Code.gs and Settings
- Open browser console (F12) for error messages
Apps Script errors?
- In the Apps Script editor, go to Executions (left sidebar) to see logs
- Run
testRead()andtestWrite()manually to debug
Data out of sync between devices?
- Open Settings > Tap "Sync Now" on both devices
- The last write wins, so the most recent save takes priority