The Personal Calendar Manager is a command-line Python application that provides basic calendar functionalities. It is designed as a lightweight and user-friendly tool for managing daily events without relying on external databases or graphical interfaces. Event data is stored in a plain text file, and all interactions are performed through a loop-driven console menu.
Users can:
- Display a full calendar for any month and year
- Add personal events by specifying a date and description
- View events assigned to a specific date
- Delete events based on date and description
- Calendar Display: View the calendar for any chosen month and year.
- Event Addition: Add events to specific dates. Events are stored in
events.txtin the formatYYYY-MM-DD | Description. - Event Viewing: Display all events for a selected date.
- Event Deletion: Remove a specific event by providing both date and description.
- Input Validation: Ensures dates follow the
YYYY-MM-DDformat. - Loop-Based Menu: Provides a continuous menu until the user chooses to exit.
- Safe File Handling: Handles missing files and invalid input gracefully.
- Python 3.x
- Built-in Modules:
calendar– for generating monthly calendarsdatetime– for validating and processing datesos– for file handling and compatibility
- File I/O: Events stored in a plain text file (
events.txt)
No external libraries or frameworks are required.
-
Clone the repository:
git clone https://github.com/nevsin/calendar-manager.git cd calendar-manager -
Run the program:
python main.py
-
Follow the on-screen menu to:
- Show calendar
- Add events
- View events
- Delete events
- Exit
- Monthly event overview (list all events for a selected month)
- Support for recurring events (e.g., birthdays, weekly meetings)
- Event sorting and grouping by date
- Search functionality by keyword or date range
- Backup and import/export of event data
- Graphical User Interface (e.g., Tkinter or PyQt)
This project demonstrates the use of Python to build a functional, console-based calendar application without external libraries. It reinforces core programming skills such as modular design, input validation, file handling, and user interaction.