Project idea

Build a complete Python application that lets users:

This project combines concepts from:

🧩 Features of the app

The app will allow the user to:

  1. add a task
  2. view all tasks
  3. mark a task as completed
  4. add an event with a date
  5. view all events
  6. show days remaining until each event
  7. save everything in a SQLite database
  8. use a clean modular project structure

📁 Real Project Structure

task_event_manager/
│
├── main.py
├── database/
│   └── app.db
├── app/
│   ├── __init__.py
│   ├── db.py
│   ├── models.py
│   ├── task_service.py
│   ├── event_service.py
│   └── utils.py
└── README.md

✅ Full Solution

▶️ How to run the project

  1. Create the folders exactly as shown.
  2. Save each file in its correct location.
  3. Make sure the database/ folder exists.
  4. Run:
python main.py

🧠 Example usage

Add a task

Choose an option: 1
Enter task title: Finish Python capstone
Task added successfully.

View tasks

--- Tasks ---
[✗] (1) Finish Python capstone

Add an event

Choose an option: 4
Enter event name: Final Exam
Enter event date (YYYY-MM-DD): 2026-12-20
Event added successfully.

View events

--- Events ---
(1) Final Exam - 2026-12-20
   Days remaining: 45

🔍 What this capstone teaches

This project combines multiple course lessons in one real application.

From Lesson 3 — Functions

The app uses several functions like:

This keeps the code modular and reusable.

From Lesson 4 — OOP

The Task and Event classes represent real objects.

From Lesson 6 — Error Handling

The app uses try/except for:

From Lesson 8 — Modules & Packages

The code is split into:

From Lesson 9 — Dates & Time

The app calculates how many days remain until each event.

From Lesson 10 — SQLite

The project stores tasks and events permanently in a real SQLite database.

🛠 Possible improvements

You can extend this project with:

  1. delete tasks
  2. delete events
  3. edit tasks and events
  4. add event time, not just date
  5. sort events by nearest date
  6. export tasks/events to CSV
  7. add priorities to tasks
  8. create a Tkinter GUI
  9. build a Django web version
  10. add login/user accounts