How to log a session

Every entry is a markdown file with frontmatter, one file per topic per date. There's no app to sign into — the Log today form on your hub page just builds that file for you and hands you off to GitHub to commit it.

The two statuses

Completed

You studied that day. Requires:

  • Topic — free text, up to 40 characters (e.g. dsa, python).
  • Title — what the session covered, up to 120 characters.
  • Minutes — a whole number from 1 to 480 (8 hours).

Excused

You didn't study, but it doesn't break your streak. Requires:

  • Reason — free text, up to 200 characters.

Excused entries don't carry a topic — they cover whichever topic's streak you're looking at that day.

No entry at all for a scheduled day = missed, no excuse. That's the only way to break a streak.

Notes (optional)

Anything below the frontmatter — up to ~1000 characters via the form — is a free-text journal note. It shows up on your hub page under the entry. Skip it if you've got nothing to add.

Logging more than one topic in a day

There's no topics: [] list — instead, log one completed file per topic, all sharing the same date. Streaks, the calendar, and the dashboard all read per-topic, so same-day entries for different topics never collide. The form always names the file <date>-<topic>.md (e.g. 2026-09-16-dsa.md and 2026-09-16-python.md) so this works with zero extra steps — just fill in the form again for the second topic.

What if I don't use the form?

The form is just a convenience — it builds the exact same file you'd write by hand. See src/content/config.ts for the full schema, or copy an example from logs/example-person/ (a completed and an excused entry are both there) and commit it directly.