Memo

Phase 1 — Data model & SQLite

Define minimal schema and data access for text notes and checklist notes. Keep logic simple, UI-agnostic, and deterministic.

  • Tables: notes, checklist_items
  • CRUD functions
  • Foreign keys for checklist items
  • Simple input validation (non-empty titles)

Functional result: database initializes and basic create/read/update/delete work for both note types across app restarts.


Phase 2 — Minimal GUI: text notes

Create a Tkinter window with a notes list and an editor pane for plain text notes.

  • List of notes (titles)
  • New note, select note
  • Text editor area
  • Save action to SQLite

Functional result: user can create a text note, edit its content, save it, close the app, reopen, and see the note persisted.


Phase 3 — Checklist notes GUI

Add checklist editing UI: add/remove items and toggle checked state.

  • Note type: checklist
  • Add item, remove item
  • Toggle checked/unchecked
  • Persist items order and state

Functional result: user can create a checklist note, manage items, save, close, reopen, and find the checklist exactly as last saved.


Phase 4 — Finish & robustness

Stabilize flows and error handling without expanding scope.

  • Basic exception handling
  • Delete note + cascade items
  • UI refresh after DB operations
  • Minimal field validation

Functional result: common errors show clear messages; saves don’t corrupt data; simple delete works for notes and their items, with UI reflecting changes immediately.