- Goal: Python CustomTkinter-based checklist desktop app for users aged 60–70
- Core Features: Dynamic UI generation from
checklist.json+ HWP file integration - User Characteristics: Requires large fonts, clear buttons, and simple flow
- Set up Python virtual environment
- Install CustomTkinter and required packages
- Design project folder structure
- Initialize Git
- Implement
checklist.jsonparser- JSON load and validation function
- Node classification by type (
title1→title2→section) - Tree builder function for hierarchy
- Design data model classes
- Base class
ChecklistNode - Subclasses:
Title1,Title2,Section
- Base class
- Basic state management system
- Mechanism to save/load checkbox states
- Progress calculation logic
- Company name input field (large font)
- HWP file upload feature
- File selection dialog
- File validation (hwp extension)
- Display upload status
- [확인] button → Navigate to checklist screen
- Define overall window size and minimum size
- Define left sidebar area
- Define right main content area
- Define bottom navigation area
- Implement responsive layout (handle window resizing)
- Render
title1items as buttons - Display company name + "3차 보고서" at the top
- Highlight currently selected
title1
- Handle
title1button click events - Context switch logic for main page
- Visual feedback for selection (background, border)
- Enlarge button size (minimum height 60px)
- Increase font size (minimum 16pt)
- Apply high-contrast colors
- Display current
title1.labelas a large title - Show progress (steps completed vs total)
- Display
title2children of the currenttitle1as steps - Format: Step number + label (e.g., "1. 위험성평가 사전준비")
- Show checkmark (✓) for completed steps
- Highlight current step
- On click, move to the selected
title2section - Implement scroll/page transition animation
- Auto-save current state before moving
- Display all
sectionunder the selectedtitle2 - Show
section.labelas subsection headers - Render
itemsas checkbox lists
- Individual check/uncheck functionality
- Save state immediately upon changes
- Provide visual feedback based on status
- Add "Select/Deselect All" button for each section
- Large button size for easy touch interaction
- Show current selection state
- Calculate completion rate for each section
- Check completion conditions for
title2steps - Update stepper UI to reflect completion
- Implement [이전] [다음] buttons
- Enable sequential navigation across
title2steps - Disable buttons at first/last step accordingly
- Track current step
- Save state on page transitions
- Move to Final Review Page after completing the last step
- Display all checked items in original hierarchy
- Order:
title1→title2→section→ checkeditems - Use indentation and bullet points for readability
- Place [HWP 변환] button at the bottom
- Define external function call interface
- Implement placeholder (exclude actual conversion)
- Notify user if conversion fails
- Validate required fields
- Display error messages in large font/high contrast
- Save checkbox states in JSON/SQLite
- Restore state on app restart
- Store separately by company/file
- Calculate and save overall progress
- Track step completion status
- Optimize auto-save timing
- Font size option (default ≥ 16pt)
- Apply high-contrast color theme
- Enlarge touch target size (≥ 44px)
- Tab navigation between elements
- Enter/Space keys for checkbox interaction
- Arrow keys for step navigation
- Handle high-resolution displays
- Auto-detect system DPI
- Proportional resizing
- Test all checklist scenarios
- Test state saving/restoration
- Test file upload and conversion
- User testing with 60–70 age group (if possible)
- Verify compliance with accessibility guidelines
- Validate error handling scenarios
- Optimize large checklist loading performance
- Improve UI responsiveness
- Optimize memory usage
- Generate exe file using PyInstaller
- Validate included dependencies
- Set icon and metadata
- Write user manual (large fonts, include screenshots)
- Prepare installation guide
- Include sample
checklist.jsonfile
| Phase | Estimated Duration | Dependencies |
|---|---|---|
| Phase 1 | 1–2 days | - |
| Phase 2 | 2–3 days | Phase 1 |
| Phase 3 | 1–2 days | Phase 1, 2 |
| Phase 4 | 2–3 days | Phase 1, 2, 3 |
| Phase 5 | 3–4 days | Phase 1, 2, 4 |
| Phase 6 | 1–2 days | Phase 4, 5 |
| Phase 7 | 2–3 days | Phase 5, 6 |
| Phase 8 | 2–3 days | Phase 5 |
| Phase 9 | 2–3 days | All previous phases |
| Phase 10 | 2–3 days | All previous phases |
| Phase 11 | 1–2 days | Phase 10 |
Total Estimated Duration: 19–32 days (approx. 3–5 weeks)
-
CustomTkinter Korean font issues
- Risk: Medium
- Mitigation: Bundle font files and configure system fonts
-
HWP file compatibility
- Risk: High
- Mitigation: Research external libraries and prepare alternatives
-
Accessibility requirements
- Risk: Medium
- Mitigation: Validate usability early with prototypes
-
Windows environment compatibility
- Risk: Medium
- Mitigation: Test across different Windows versions
- Start Phase 1: Set up development environment and implement data parsing
- Technical Validation: Test CustomTkinter Korean font support and research HWP libraries
- Prototype Development: Implement MVP version with core features first