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.
Organize your time, tasks, and notes in a calendar with synchronization across devices
AI translation
Organiza tu tiempo, tareas y notas en un calendario con sincronización entre dispositivos
AI summary · website and README
ProductivityHTML · JavaScriptGitHub @nicolleriveraOnlineOwner 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.
App de una sola página (index.html) con los datos guardados en Vercel Blob, así el mismo estado se ve desde el celular y la compu.Read the full README ↗
App de una sola página (index.html) con los datos guardados en Vercel Blob,
así el mismo estado se ve desde el celular y la compu.
api/data.js — función serverless que lee y escribe un único JSON
(centro-control-sharon/data.json) en el Blob store.
GET /api/data → { data, updatedAt } (data: null si todavía no hay nada).POST /api/data con { data: {...} } → guarda el estado completo.index.html — al abrir muestra la caché de localStorage (instantáneo, y sirve
sin conexión) y enseguida baja lo que hay en el Blob. Cada cambio se guarda local
al toque y sube al Blob 600 ms después.BLOB_READ_WRITE_TOKEN.APP_PASSWORD con un PIN. Sin esa variable el endpoint queda abierto a
cualquiera que conozca la URL. Con ella, la app pide el PIN una vez por
dispositivo y lo recuerda.Para correr local: npm i -g vercel && vercel dev (con vercel env pull para
traer las variables).
Solo existen tres y llegan el día antes: una entrega de la universidad que se acerca, un pago o cuota por vencer, y un hueco libre con un pendiente que cabe. Nunca avisa de recoger a Joel ni de entrar o salir de un turno, y no manda nada entre las 11 de la noche y las 6 de la mañana.
api/_avisos.js — qué se avisa y qué no. Es el contrato; si algo cambia,
cambia acá y en la Guía.api/push.js — guarda la suscripción del navegador (GET devuelve la llave
pública; POST guarda; POST con quitar:true borra).api/avisos.js — el trabajo diario. Lo dispara el cron de Vercel a la
1:00 UTC, que son las 8 de la noche en Colombia.| Variable | Para qué |
|---|---|
VAPID_PUBLIC_KEY | la llave que el navegador usa para suscribirse |
VAPID_PRIVATE_KEY | secreta — con ella se firman los avisos |
VAPID_SUBJECT | opcional, un mailto: de contacto |
CRON_SECRET | opcional pero recomendado: sin ella /api/avisos queda abierto |
Para generar un par nuevo: npx web-push generate-vapid-keys.
Si se cambian las llaves, todos los dispositivos hay que volver a suscribirlos.