Skip to content
dboskPublic

About

Handle TA bookings for lab sessions, tutorials etc.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Repository files navigation

nytid

A CLI and library for managing TA bookings, course schedules, sign-up sheets, employment contracts, time tracking, and task management. Every interactive workflow has a scriptable equivalent, so repetitive tasks can be handed off to Cron or AI agents.

Command overview

courses — manage course registries and configurations

Maintain a set of course registries (directories of course data), add or remove courses, and configure per-course settings such as Canvas URLs and TimeEdit ICS links.

nytid courses ls
nytid courses new DD1310
nytid courses config DD1310

schedule — view and export combined schedules

Display a unified schedule that merges course events, external ICS calendars, and pending tasks. Export the result as an ICS file for import into any calendar application.

nytid schedule show
nytid schedule next      # every detail of the next event, links included
nytid schedule ics > schedule.ics
nytid schedule external add https://cloud.timeedit.net/…

signupsheets — generate TA sign-up sheets

Generate CSV sign-up sheets from the course schedule so that TAs can indicate which lab sessions they want to work. The sheets are designed for Google Sheets.

nytid signupsheets generate DD1310
nytid signupsheets set_url DD1310 https://docs.google.com/…

hr — employment contracts and time sheets

Compute employment data from completed sign-up sheets: generate amanuensis contracts, produce time sheets for hourly-employed TAs, and summarize hours per course.

nytid hr amanuensis create DD1310
nytid hr timesheets generate DD1310
nytid hr time DD1310

Instead of a time sheet for the extra (or missed) sessions of one period, the difference can be carried into the next contract by letting --start reach back before the contract period:

nytid hr amanuensis create DD1310 --period 25/26-2 --start 2025-08-25

track — track time on activities

Track time spent on course activities with free-form labels. Start a label directly, or launch a command or tmux shell from the same entry point. View statistics, export to JSON/CSV/ICS, and edit past entries.

nytid track start DD1310 grading
nytid track start email --run mutt
nytid track stop
nytid track today
nytid track stats weekly

todo — task management with agent support

Priority-based task list with working-directory capture, notes, and GitHub issue sync. Tasks can be started interactively or handed off to AI agents in headless mode. Tasks can wait for other tasks: todo ready and todo next offer only the tasks that nothing blocks, and the schedule view automatically slots those, and the tasks already in progress, into free time. A task that others wait for shares their urgency: it ranks as high as the most urgent of them and is due when they have to start.

nytid todo add "Grade assignment 3" --prio 2
nytid todo ls
nytid todo ready
nytid todo start 5
nytid todo done
nytid todo sync

prompt-nytid — fast status for shell prompts

A separate, minimal entry point that prints the current todo context and the currently tracked labels as two machine-readable lines. In a tracked tmux window the context is the chain from the root task down to the window's current task (353>356>359, the task an ID-less todo done there would complete); elsewhere it is the active todo ids. It skips the CLI's import overhead so it is cheap enough to run on every shell prompt render:

readarray -t _nytid < <(prompt-nytid --who "$USER")
# ${_nytid[0]} = todo context, ${_nytid[1]} = tracked labels

utils — room availability and other utilities

nytid utils rooms set-url https://… "Sal A" "Sal B"

Quick start

pip install nytid
nytid courses registry add kth ~/courses
nytid courses new DD1310
nytid schedule show

Where the data lives

nytid keeps its configuration in ~/.config/nytid/config.json and its data (todos, time tracking, caches) under ~/.nytid. Set NYTID_HOME to move all of it at once, for example to try a new version or run a script on throw-away data:

NYTID_HOME=/tmp/nytid-sandbox nytid todo ls

The configuration then lives in $NYTID_HOME/config.json and the data directly under $NYTID_HOME.

Documentation

For a full introduction and design overview, read the PDF found in the latest release.

About

Handle TA bookings for lab sessions, tutorials etc.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages