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.