221.1 Project brief

This section models the development of a simple Task Tracker app, designed using object-oriented principles and built through an agile, sprint-based process.

Purpose

The Task Tracker helps users organise and manage personal tasks via a command-line interface. It supports creating, viewing, and completing tasks using a simple, text-based workflow. The application prioritises clean object-oriented design that can be refined and extended over time.

Intended audience

The app is designed for individual users who prefer or are comfortable with command-line interfaces. It assumes users can respond to text-based prompts and type simple commands. No GUI or advanced configuration is required.

Core features (MVP)

The minimum viable product (MVP) will support the following functionality:

  • Create a new task with a title, description, and due date

  • Display a list of all tasks, showing completion status

  • Mark a task as completed or uncompleted

  • View detailed information about a selected task

  • Store multiple tasks in memory for the session

Planned extensions (future sprints)

These features are not required for Sprint 1 but may be added in later sprints:

  • Filter tasks by status or due date

  • Sort tasks alphabetically or by due date

  • Save tasks to a file and load them on startup

  • Add categories, tags, or priority levels

Constraints

Functional constraints:

  • No user authentication or multi-user support

  • Command-line interface only

  • No mouse or GUI interaction

Technical constraints:

  • All data stored in memory for MVP (no persistence)

  • Written in Python using the standard library only

  • Designed using object-oriented principles

Design approach

The application will use object-oriented design, with the following structure:

  • Each task will be represented as an instance of a Task class

  • A separate class, TaskManager, will manage the list of tasks and provide methods for user operations (e.g. add, remove, display)

  • The main script will act as the controller, handling user input and calling relevant methods

  • Agile development will guide the process, with short sprints, testing, and documentation integrated from the beginning

Last updated

Was this helpful?