Theory

The task and the grading checklist

The task

Build a working command-line app that manages a list of your own items — a task tracker, movie watchlist, gym log, game backlog, expense list, book list — your choice. It must run, save your data, load it back, and let you search and summarize it.

The next steps build a complete sample (a task tracker), file by file. Your project must have a different theme but the same skeleton.

Grading checklist (required features)

  • A record type — a struct with at least 3 fields (e.g. Title string, Priority int, Done bool).
  • A menu loopfor + switch, repeats until "quit". Handles bad input without crashing.
  • Add — create a new item from user input, append to a []Item.
  • List — print all items, numbered.
  • Mark / edit one item — change an item in place using a pointer (*Item).
  • Search / filter — find items by keyword in the title, or filter by done/not-done. Prints only matches.
  • Map lookup — build a map[string]Item (or a map[string]int index) and fetch one item by its title.
  • Summary stat — print a count/summary, e.g. "3 of 7 done", "2 high-priority".
  • Save & load — write items to a file, read them back on startup so data survives a restart.
  • At least 4 functions with clear jobs — main mostly calls functions, it doesn't hold the logic.
  • Clean code — passes gofmt and go vet with no warnings.