Lattice
A workspace for your research.
Plan workouts, track notes, and manage weekly schedule
AI summary · website content
ProductivityHTML · JavaScriptGitHub @jcm-book-libraryOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗A week planner and daily log that reads and writes a Google Sheet. One page (index.html), no build step, hosted on GitHub Pages.
jcm-book-library.github.io.Gym ★), so no column was added; the app strips it when showing the type.paper_url row to the sheet's Settings tab.The data lives in Supabase (project jcm-apps, schema brain); switched over on 8 Nov 2026. A device can still pick Google Sheet (archive) in Settings → Where your data lives. Settings also has sign-in (email and password, which works in a home-screen app, or an emailed link), Check (reads both and says what differs) and Copy Supabase → Sheet, the weekly backup: it previews the changes, makes hidden dated backup tabs (Plan backup 2026-10-21, newest 3 per tab), writes only the cells that differ, and checks the result. Copy Sheet → Supabase is gone, so the archive can't overwrite live data. Settings, Routine, Goals and Links are edited on the Setup tab.
supabase/SETUP.mdsupabase/01-schema.sql. Row Level Security lets only the signed-in owner read or write their rows; signed-out visitors get nothing. The publishable key in index.html is meant to be public.row_id (the app's handle on a row), user_id and updated_at.| Tab | Columns |
|---|---|
| Plan | ID, Date, End, Time, Title, Category, Type, Done, Countdown, Notes |
| Routine | Day, Category, Time, Title, Active |
| Log | Date, Steps, KM, Active mins, Pages, Max °C, Min °C, Mood, Note |
| Goals | Year, Month, Steps, KM, Active mins, Pages |
| People | ID, Name, Birthday, Last seen, To see, See every (days), Notes, Groups, Links, Next catch-up, Time, Catch-up plan, Plan ID |
| Lists | ID, List, Item, Status, Added, Notes |
| Notes | ID, Date, Topic, Note |
| Links | Name, Category, URL, Pin, Order, Notes |
| Settings | Key, Value, Notes |
Birthdays saved without a year are stored as 1904 (for example 1904-10-17); the page hides that year. The sheet's Birthday column shows day and month only.
People: Groups is a comma-separated list (for example IV, HFP). Links connects people as ID:Relationship, separated by semicolons (for example p008:Partner; p016:Parent of). A link only needs to be on one person; the other side shows it in reverse. A planned catch-up also creates an item on the Plan tab; Plan ID keeps the two in step, so change or remove catch-ups from the Family & Friends tab on the page.
Keep the column order. Rows can be added, edited or sorted by hand in the sheet; the page finds rows by ID.
tools/test.js runs the page in headless Chromium against a fake, in-memory Sheets API:
NODE_PATH=$(npm root -g) node tools/test.js /tmp/shots
NODE_PATH=$(npm root -g) node tools/test-supabase.js /tmp/shots
NODE_PATH=$(npm root -g) node tools/test-copyback.js