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.