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.
taskboard for me.
Translation pending
ProductivityTypeScript · CSSGitHub @seun9eunOnlineOwner 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 single-page dashboard over Google Tasks and Google Calendar. Without a signed-in
Google account it runs in demo mode against local sample data.
Google API access tokens last an hour, and a browser-only app cannot renew one
without either a popup or a user gesture — Google removed the silent iframe
flow. So the OAuth exchange happens server-side instead:Read the full README ↗A single-page dashboard over Google Tasks and Google Calendar. Without a signed-in Google account it runs in demo mode against local sample data.
Originally exported from AI Studio: https://ai.studio/apps/35469fc6-e9fb-44b3-92b7-9958aa8bb99f
Google API access tokens last an hour, and a browser-only app cannot renew one without either a popup or a user gesture — Google removed the silent iframe flow. So the OAuth exchange happens server-side instead:
/api/auth/login sends the user to Google's consent screen./api/auth/callback trades the code for a refresh token, checks the account
against ALLOWED_EMAILS, and stores the refresh token inside an encrypted,
HttpOnly session cookie. There is no database./api/token turns that cookie into a fresh access token. The page calls it on
load and again whenever a Google request comes back 401./api/logout clears the cookie.The browser never holds a long-lived credential, and the session survives reloads, restarts and other devices.
In production Vercel serves everything under api/ as serverless functions. In
development the same files run inside Vite through the dev-api plugin in
vite.config.ts, so there is one implementation of each
endpoint rather than two.
In the project you want to own this app:
Enable the Google Calendar API and the Google Tasks API.
Configure the OAuth consent screen and publish it to production. While it is in testing, refresh tokens expire after 7 days and you will be signed out every week. An unverified published app shows a warning screen on first consent, which you can accept for personal use.
Create an OAuth client of type Web application and add these authorized redirect URIs:
http://localhost:3000/api/auth/callbackhttps://<your-app>.vercel.app/api/auth/callbackA desktop-type client will not work — it has no redirect URI for the web.
Copy .env.example to .env and fill in all four values. Set the
same four in Vercel under Project Settings → Environment Variables.
ALLOWED_EMAILS is the access control for the whole deployment. The dashboard
sits on a public URL, so an empty list lets nobody in — that is deliberate.
npm install
npm run dev # http://localhost:3000
The port is pinned with --strictPort. If Vite fell back to another port the
redirect URI would no longer match and sign-in would break.
Changing .env needs a dev server restart; it is read once at startup.
| Command | Does |
|---|---|
npm run dev | Vite dev server plus the API endpoints on port 3000 |
npm run build | Production build into dist/ |
npm run lint | tsc --noEmit |
npm run check | Session cookie sealing self-check |