This repository implements a bakery-themed command-line project management tool. It is designed to manage users, bakery projects, and tasks using an interactive and modular CLI.
Features include:
- Object-oriented design using classes, inheritance, encapsulation, and dynamic behavior
- JSON persistence for users and projects
- Role-based authentication with password hashing
- Interactive menu plus argparse subcommands for structured CLI usage
- External package usage via
richfor polished terminal output
Install dependencies:
pip install -r requirements.txt
Run the interactive CLI:
python main.py
Use subcommands directly, for example:
python main.py register --name alice --password secret --role Member
python main.py create-project --user admin --password admin123 --name "Bakery Launch" --description "Plan bakery opening"
python main.py add-task --user admin --password admin123 --project "Bakery Launch" --title "Design menu" --description "Choose pastry offerings" --assignee alice --due 2026-07-01
python main.py list-projects --user admin --password admin123
python main.py list-users --user admin --password admin123
python main.py list-tasks --user admin --password admin123 --assignee alice
python main.py edit-task --user admin --password admin123 --project "Bakery Launch" --task "Design menu" --description "Finalize pastry list"
register— add a new userlogin— validate credentialscreate-project— create bakery project plans (Manageronly)add-task— add a task inside a projectassign-task— assign an existing task to a user (Manageronly)complete-task— mark a task completelist-projects— show current projects (optionally filter by owner)list-users— display registered userslist-tasks— display tasks assigned to a specific useredit-task— update a task description, due date, or assigneeproject-details— inspect a project's tasks
Project and user data are saved to project_data.json.
Run tests with:
pytest -q
-
A default admin account is seeded when the data file is empty:
- username:
admin - password:
admin123
- username:
-
The repository includes a sample
project_data.jsonfile to show file-based persistence structure.