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.
my list of life ig
Translation pending
ProductivityHTML · JavaScriptGitHub @FayfayNEAOnlineOwner 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
Loading the full README. The saved excerpt is shown below.
A daily checklist that syncs across your devices, with a small API your agents can post
priorities into. One static index.html, three serverless functions, and Vercel Blob as
the store. Live at https://checklist-tracker-pi.vercel.app.
Anyone with the URL can make an account; no invite code is needed. Setting
SIGNUP_CLOSED=1 shuts that again, leaving invitations as the only way in. Each account gets its own
list; nothing is shared between them.Read the full README ↗A daily checklist that syncs across your devices, with a small API your agents can post
priorities into. One static index.html, three serverless functions, and Vercel Blob as
the store. Live at https://checklist-tracker-pi.vercel.app.
Anyone with the URL can make an account; no invite code is needed. Setting
SIGNUP_CLOSED=1 shuts that again, leaving invitations as the only way in. Each account gets its own
list; nothing is shared between them.
Three environment variables turn accounts on:
| Variable | What it does |
|---|---|
AUTH_SECRET | Signs session and agent tokens. Must be at least 16 characters — until it is, accounts stay switched off and /api/auth answers 503. Never rotate it casually: everyone gets signed out. |
INVITE_CODE | Only matters while SIGNUP_CLOSED=1: then it's what someone has to type to create an account. |
SIGNUP_CLOSED | Optional. 1 turns open signup off, so only invitations work. |
OWNER_EMAIL | The account that inherits the list which predates accounts. Set this before signing up with that email. |
APP_SECRET | The original single passphrase. Still valid, still points at the owner's list, so scripts and bookmarks made before accounts keep working. Safe to remove once nothing uses it. |
RESEND_API_KEY | Optional. Lets the owner email an invitation instead of copying the link by hand. Without it, invitations are still created — they just aren't delivered. |
MAIL_FROM | Optional, required alongside RESEND_API_KEY. The sending address, e.g. [email protected]. It has to be on a domain verified with Resend; their sandbox sender only delivers to your own address. |
Setting them up:
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))" | vercel env add AUTH_SECRET production
echo "some-code-you-pick" | vercel env add INVITE_CODE production
echo "[email protected]" | vercel env add OWNER_EMAIL production
vercel --prod
Then open the app, choose make one, and sign up with the OWNER_EMAIL address — that
account picks up the existing list rather than starting empty.
The owner gets an invite someone panel under the gear. Give it an email address and it makes a code of its own — good once, revocable until it's used — along with a link that fills the code in for whoever opens it. That link is the reliable path; emailing it is a convenience on top.
If RESEND_API_KEY and MAIL_FROM are set, the invitation is emailed as well. Be aware
that Resend's sandbox sender only delivers to the address that owns the Resend account, so
sending to a friend needs a domain you've verified with them. The panel says plainly when
a message didn't go out, and the invitation still exists to copy by hand.
The original shared INVITE_CODE keeps working alongside personal codes, so anything
already handed out is unaffected.
state.json the owner's list (predates accounts; left exactly where it was)
inbox.json the owner's queue of agent-posted tasks
u/<id>/state.json one list per account
u/<id>/inbox.json one queue per account
users/<sha256(email)>.json { id, email, salt, scrypt hash }
invites/index.json every invitation and whether it's been used
Passwords are scrypt hashes with a per-account salt. Sessions are HMAC-signed tokens rather than rows in a table, so there's nothing to expire or clean up.
users/<hash>.json out of the blob store by hand.SIGNUP_CLOSED=1; scrypt is
what makes guessing a password slow.index.html and only shown to the owner's account.
Anyone determined enough to read the page source can still see them.npm run dev:local # then open http://localhost:4325/dev
The real page and the real api/ handlers over an in-memory store, seeded with an owner
account and three pretend people (Mika, Jo, Ren) who each have a colour, a background,
stickers, a day, a backlog and a mood, and follow each other. /dev switches between
them with one tap. Nothing touches the live site's data, it all resets on restart, and
dev/ is kept out of deploys by .vercelignore.
vercel dev # needs the env vars above, and writes to the real blob store
api/ is Node serverless functions; index.html is the whole client.