Skip to article frontmatterSkip to article content

Milestone 3: GUI with Modeling & Architecture

Utah Valley University

Overview

In previous milestones, you transformed your vision into clear requirements, built your first models, and delivered a functional CLI-based MVP. That was like constructing the frame of a house; the structure was sound, but the rooms were bare and the layout simple. Now, it’s time to add architecture, style, and a better living experience.

In this milestone, you will evolve your To-Do List app from a basic working prototype into a structured, scalable, and more user-friendly system. Just as professional teams refine blueprints before moving to full-scale construction, you will update your UML diagrams to reflect a well-defined architecture, design wireframes or mockups for an intuitive GUI, and restructure your code using the Model-View-Controller (MVC) pattern. Along the way, you’ll apply SOLID principles to improve maintainability and prepare your codebase for future features.

This is also where you will take the first step away from the command line by integrating a basic GUI, giving users a visual interface to interact with. Finally, you will manually validate that your refactored design works as intended, capturing proof of improved modularity, separation of concerns, and user experience.

By the end, you’ll have updated models, UI prototypes, refactored code following SOLID and MVC with GUI integration, and manual validation, preparing for pattern integration next. Continue using GitHub releases for versioning.


Learning Objectives

Upon successful completion of this milestone, you will be able to:


Tasks and Instructions

1. Team Meetings

Coordinate team efforts through structured meetings.

2. Refine UML Modeling

Update diagrams to align with new architecture and principles—focus on incorporating MVC and SOLID impacts.

3. UI Design Planning

Create visual plans for the GUI to guide implementation.

4. Architecture and Principles Implementation

Restructure code emphasizing modularity and best practices.

5. Manual Validation & Testing

Confirm the refactored app functions correctly.

6. GitHub Project Board

7. Individual Reflections

8. GitHub Releases


Submission Checklist

Submit via Canvas:

A .md file containing:

Repository Documents

GitHub Releases

GitHub Project Board


Evaluation Rubric (100 Points)

CriteriaPointsDescription
Team Meetings5Detailed, actionable minutes with clear agendas
Refined UML Modeling10Updated use case and class diagrams
UI Design Planning15Well-designed wireframes or mockups
Architecture & Principles Implementation50Effective MVC setup, SOLID refactoring, and GUI integration
Manual Validation10Comprehensive scenarios with proof
Individual Reflections10Insightful responses, including principles discussion

Penalties: 20% for missing progress check after first week.


Resources

Textbook

Beginner Friendly Resources

Tutorials

GUI Libraries for Python

Best Practices

Example Folder Structure After MVC Adoption

task_manager_app/
├── src/
│   ├── models/
│   │   └── task.py            # Data models (e.g., Task class)
│   │   ├── task_manager.py    # Manages task storage and operations
│   │   └── ...                # Any additional data models
│   ├── views/
│   │   ├── cli_view.py        # CLI output functions
│   │   └── gui_view.py        # GUI components (e.g., Tkinter windows)
│   │   └── templates/         # Templates for rendering UI (optional, for advanced GUIs)
│   ├── controllers/
│   │   └── task_controller.py   # Business logic
│   │   ├── cli_controller.py    # Controller for CLI
│   │   ├── gui_controller.py    # Controller for GUI
│   │   └── ...                  # Additional controllers if needed
│   ├── utils/                 # Shared utilities
│   │   ├── file_handler.py    # JSON/CSV handling logic
│   │   └── helpers.py         # Helper functions used across the project
│   └── main.py                  # Entry point to run the app (select CLI or GUI)
│   └── config.py                # Configuration and constants
│── tests/                  # Test cases
│   ├── test_task.py         # Tests for Task model
│   ├── test_task_manager.py  # Tests for TaskManager logic
│   ├── test_cli_view.py      # Tests for CLI view
│   ├── test_gui_view.py      # Tests for GUI view
│   └── test_controller.py    # Tests for controllers               
└── docs/                # Documentation
    # Existing docs...
    ├── meeting_minutes/
    │   ├── milestone_1/
    │   ├── milestone_2/
    │   └── milestone_3/
    ...

All Project Milestones

  1. Milestone 1

  2. Milestone 2

  3. 📌 Milestone 3

  4. Milestone 4

  5. Milestone 5

  6. Presentation

  7. Final Submission