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 personal dashboard for living according to what matters most.
Translation pending
ProductivityTypeScript · CSSGitHub @tmorelli929OnlineOwner 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 private dashboard for three things: daily habits, your real week from Google Calendar, and the people you want to stay close to. (Life areas, missions, reflections and the AI coach from V1 are hidden for now; their data is kept and their code is in git history.)
This is V2 through Phase 2: the hosted foundation plus a read-only Google Calendar connection. Weekly planning (Phase 3), Gmail (Phase 4) and LinkedIn import (Phase 5) come next.
| Piece | What it does |
|---|---|
Next.js (src/app) | One project holds both the pages you see and the server code behind them, so there's no separate backend to run. |
Postgres (src/db/schema.ts) | Stores everything. Your dashboard is one document per user (the same shape as V1). People, conversations and commitments get their own tables so they can be searched and protected separately. |
Google sign-in (src/lib/auth) | You sign in with Google. Only emails in ALLOWED_EMAILS get in. Sessions are random tokens; the database only keeps a hash of each one. |
Coach (src/app/api/coach, src/lib/coach.ts) | The server builds a summary of your data, labels where each fact came from, and sends it to Claude. Your API key never reaches the browser. |
Scoring (src/lib/life) | Pure functions for XP, levels, alignment and relationship goals, covered by unit tests. |
Saves use a version number: if your phone and laptop edit at the same moment, the second save is refused and that device shows the newer version, so nothing is silently overwritten.
Nothing here costs money except the Anthropic API, which you cap yourself.
Create a private repository (for example kingdom) and push this code to it.
DATABASE_URL for you.https://kingdom-yourname.vercel.app.https://YOUR-APP.vercel.app/api/auth/google/callback and http://localhost:3000/api/auth/google/callbackAt console.anthropic.com, create an API key and set a monthly spend limit (e.g. $10) under Billing. Daily coaching typically costs a few dollars a month.
In Vercel → Settings → Environment Variables, add:
| Name | Value |
|---|---|
APP_URL | https://YOUR-APP.vercel.app (no trailing slash) |
AUTH_GOOGLE_ID | from step 3 |
AUTH_GOOGLE_SECRET | from step 3 |
ALLOWED_EMAILS | your Gmail address |
ANTHROPIC_API_KEY | from step 4 |
Never put these in code or send them in chat.
Click Deploy. The build runs the database migrations first (npm run vercel-build). Open your URL, sign in with Google, and import V1:
Add the site to your phone's home screen from the browser's Share menu.
https://YOUR-APP.vercel.app, the privacy policy to https://YOUR-APP.vercel.app/privacy, and add YOUR-APP.vercel.app under authorized domains. Save.Calendar access is separate from sign-in, read-only (calendar.events.readonly), and uses the same redirect URI, so nothing else changes in Google Cloud. Tokens are encrypted with AES-256-GCM. Disconnect revokes access with Google and deletes the tokens. Events are read live from Google and never stored; only meetings you confirm as being with someone are saved, as a conversation on that person's profile.
npm install
cp .env.example .env.local # fill in DATABASE_URL (any Postgres) and the rest
npm run db:migrate
npm run dev # http://localhost:3000
Set DEV_LOGIN=1 in .env.local to get a "Local dev sign-in" button that skips Google. It is ignored in production builds.
npm test # scoring, migration and network logic
npm run typecheck
Connections.csv from LinkedIn's own data export; no scraping.