TreeMap
A free, open-source disk-space visualizer. Squarified treemap, duplicate hunting, disk-full forecasting, and cleanup that only ever moves files to the Trash.
A shared family device for weekly schedule notices with manual corrections
AI summary · revised during review
ProductivityJavaScript · CSSGitHub @matt-howsamOnlineOwner 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
matt-howsam/family-hub
Translation pending
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
Release 1 shell. Next.js App Router on Vercel, Postgres on Neon.
npm install
git init && git add -A && git commit -m "shell"
It deploys and renders before you connect a database. Without
DATABASE_URL the week letter falls back to the seeded anchor and the
correction button is disabled — the footer says no database, so the state is
never ambiguous. Connect Neon and it becomes writable.Read the full README ↗Release 1 shell. Next.js App Router on Vercel, Postgres on Neon.
npm install
git init && git add -A && git commit -m "shell"
# push to GitHub, then import at vercel.com/new
It deploys and renders before you connect a database. Without
DATABASE_URL the week letter falls back to the seeded anchor and the
correction button is disabled — the footer says no database, so the state is
never ambiguous. Connect Neon and it becomes writable.
Vercel project → Storage → Create Database → Neon. DATABASE_URL is set
for you across all environments.
Run the schema once. schema.sql is safe to re-run — every statement is
idempotent (if not exists, on conflict do nothing) — so re-applying
it after a schema change (like the meal planner's tables) never
duplicates anything.
psql "$DATABASE_URL" -f schema.sql
No psql, or on an OS Homebrew has stopped supporting it on? Use the
project's own database dependency instead — no extra install:
node scripts/apply-schema.mjs "postgres://...connection string..."
The connection string is in Vercel → the project → Storage → the Neon
database → Connection string (or the .env.local tab).
Redeploy. The footer note disappears and the week letter becomes tappable.
app/page.jsx the wall — server component, force-dynamic
app/api/week/route.js GET current letter, POST a correction
components/Clock client — the server has no idea what time it is
components/WeekLetter client — one tap to correct
lib/week.js the cycle logic, no UI, fully testable
lib/calendar.js Lindisfarne term dates 2026-27
lib/db.js Neon, with a graceful no-database path
app/tokens.css the design system, untouched
schema.sql one table
Remembered state, not a calculation from a distant origin. The school's A/B
cycle carries across term breaks and years with no reset, so a fixed anchor
drifts silently. week_anchor holds the last known letter and the Monday it
applied to; weekLetter() rolls forward one flip per school week.
Holiday weeks hold the letter rather than consuming a flip. Any correction
becomes the new anchor, so a wrong letter is wrong once.
Confirmed by Matt, Monday 7 September 2026: Week B, whole school, one cycle for every year level. This independently validates the model — the SEQTA reading of 10 August (Week B) rolls forward four school weeks and four flips to land on B.
isSchoolWeek tests overlap, not membership. Terms 4 in both years begin
on a Tuesday because the Monday is a pupil-free day; those are still school
weeks. Testing the Monday alone would drop the week and invert the letter for
the rest of the year.
Watch 12 October. That is the first real test — the pupil-free Monday, the holiday hold, and the Term 4 flip to A all land at once. Check it against SEQTA that morning.
All date maths runs on Australia/Sydney via lib/week.js#today(). Vercel
servers are UTC; using new Date() directly for a calendar date would roll it
over at 10am Sydney time and change the week letter mid-morning. Never call
new Date() for a date — call today().
Nothing writes except the week letter. The household and family cards are
static markup in the shape the API will fill. Read-only is the default for
every surface; the fridge and phones share one responsive layout, and edit
controls appear only when the device identifies as a person rather than
role=display.