πŸ“… Amir's Daily Planner

Local only
Click an empty area on the grid to add a block. Click a block to edit, mark missed, or delete.

Tasks (unscheduled pool)

Notes

What days am I free?

Shows open windows (30+ min, factoring your routines & commute) so you can see when to book something.

Goals

Weekly Review

Personal settings

Recurring weekly routines

These auto-fill matching weekdays (gym, study blocks, classes, etc). Edit/add/remove here.

Cloud sync (optional, for phone + laptop)

This app works fully offline in one browser by default. To keep your phone and laptop in sync, create a free Firebase project (5 min, no coding) and paste its config below:

  1. Go to console.firebase.google.com β†’ Add project (free tier).
  2. In the project, click "Build β†’ Firestore Database" β†’ Create database β†’ Start in test mode.
  3. Click the gear icon β†’ Project settings β†’ scroll to "Your apps" β†’ click the web icon (</>) β†’ register an app.
  4. Copy the firebaseConfig object shown and paste it below.
  5. Open this same file on your other device and paste the same config there too.

Whoop integration (live recovery, sleep & strain)

Pulls your recovery %, sleep performance, HRV, and strain directly from Whoop each morning and uses it to adjust your plan (lighter day when recovery is low, bedtime suggestion based on last night's actual sleep). This needs a small free backend since Whoop's login can't be done safely from a plain file. One-time setup:

  1. Go to developer-dashboard.whoop.com, sign in with your Whoop account, create a Team, then create an App.
  2. Under Scopes, check: read:recovery, read:sleep, read:cycles, read:profile, offline.
  3. Leave the Redirect URI box open for now β€” you'll fill it in after step 4.
  4. Go to dash.cloudflare.com (free account) β†’ Compute (Workers & Pages) β†’ Create β†’ Create Worker. Give it any name β€” this becomes your Worker's web address, e.g. https://your-worker-name.yoursubdomain.workers.dev.
  5. Open the Worker's code editor, delete the sample code, and paste in the contents of the whoop-worker.js file provided alongside this planner. Click Deploy.
  6. In the Worker's Settings β†’ Bindings, add a KV Namespace binding: create a namespace (any name) and set the variable name to exactly TOKENS.
  7. In Settings β†’ Variables and Secrets, add: WHOOP_CLIENT_ID (plain), WHOOP_CLIENT_SECRET (encrypt, from the Whoop dashboard), REDIRECT_URI (plain, set to https://your-worker-name.yoursubdomain.workers.dev/callback), and APP_SECRET (encrypt β€” make up any long random password, you'll reuse it below).
  8. Go back to the Whoop Developer Dashboard and paste that same .../callback URL as the Redirect URI on your App, then save.
  9. Enter your Worker's base URL and the APP_SECRET password below, click Save, then Connect to Whoop β€” a tab opens for you to log in and approve access once. Close it when you see "Connected to Whoop."
Not configured yet.
Click an empty area to add a block for that day. Click a block to edit it.
Click a day to open it in the Today view.

Edit block