You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Welcome to Mike Scanlon and Kunj Joshi Calendar App: Version: 1
Mike Scanlon and Kunj Joshi are graduate students at Northeastern Univeristy. We became partners during our programming design
paradigm class for assignment 4.
We took inspiration from google calendar to create our own calendar app. Version 1 is currently a commandline interface that
allows the user to create calendar events, edit calendar events , print calendar events based on a search criteria,
export calendar to csv (google calendar compatible), and check status of a particular time.
We are very exited to continue working on this project at northeastern university and hope you enjoy following our commits
during our journey.
Instructions:
In order to run this program please follow these steps
-> 1) Navigate to the project directory and paste the following into the commandline: ./calendarApp.sh
-> 2) You will arrive at the Select Mode Screen where you will be asked to enter either: Interactive (or) Headless
-> 3) You have successfully run the program!
Features:
Create a Single Event
Syntax:
create event "<Event Name>" from <Start DateTime> to <End DateTime>
Example:
create event "Gym Chest Day" from 2025-03-05T08:15:00 to 2025-03-05T09:15:00
Flags:
--AutoDecline -> Automatically declines the event if there is a scheduling conflict.
--Location "<Location>" -> Specifies the event location.
--Visibility <public/private> -> Sets event visibility.
--Description "<Description>" -> Adds an event description.
Create a Recurring Event
Syntax:
create event "<Event Name>" from <Start DateTime> to <End DateTime> repeats <Weekdays> for <N> times
Example:
create event "Morning Run" from 2025-03-01T07:00:00 to 2025-03-01T08:00:00 repeats MRU for 10 times
WeekDays:
Weekdays are a representation of the days of the week Below are the chars that represent each day of the
week:
Monday (M), Tuesday (T), Wednesday (W), Thursday (R), Friday (F), Saturday (S), Sunday (U)
Flags:
--Location "<Location>" -> Adds event location.
--Visibility <public/private> -> Sets event visibility.
--Description "<Description>" -> Adds event description.
Create a Recurring Event Until a Date
Syntax:
create event "<Event Name>" from <Start DateTime> to <End DateTime> repeats <Weekdays> until <End Date>
Example:
create event "Yoga Class" from 2025-03-01T06:00:00 to 2025-03-01T07:00:00 repeats TWR until 2025-06-01
WeekDays:
Weekdays are a representation of the days of the week Below are the chars that represent each day of the
week:
Monday (M), Tuesday (T), Wednesday (W), Thursday (R), Friday (F), Saturday (S), Sunday (U)
Flags:
--Location "<Location>" -> Adds event location.
--Visibility <public/private> -> Sets event visibility.
--Description "<Description>" -> Adds event description.
Create an All-Day Event
Syntax:
create event "<Event Name>" on <Date>
Example:
create event "Independence Day" on 2025-07-04
Flags:
--AutoDecline -> Negates the creation of an event if an event is already scheduled.
--Location "<Location>" -> Adds event location.
--Visibility <public/private> -> Sets event visibility.
--Description "<Description>" -> Adds event description.
Create a Recurring All-Day Event for a fixed number of times
Syntax:
create event "<Event Name>" on <Date> repeats <Weekdays> for <N> times
Example:
create event "Hiking" on 2025-03-02 repeats SU for 5 times
WeekDays:
Weekdays are a representation of the days of the week Below are the chars that represent each day of the
week:
Monday (M), Tuesday (T), Wednesday (W), Thursday (R), Friday (F), Saturday (S), Sunday (U)
Flags:
--AutoDecline -> Negates the creation of an event if an event is already scheduled.
--AutoDecline -> Automatically declines the event if there is a another event at that same time.
--Location "<Location>" -> Adds event location.
--Visibility <public/private> -> Sets event visibility.
--Description "<Description>" -> Adds event description.
Create a Recurring All-Day Event Until a Given Date
Syntax:
create event "<Event Name>" on <Date> repeats <Weekdays> until <End Date>
Example:
create event "Weekly Team Meeting" on 2025-03-04 repeats T until 2025-06-04
WeekDays:
Weekdays are a representation of the days of the week Below are the chars that represent each day of the
week:
Monday (M), Tuesday (T), Wednesday (W), Thursday (R), Friday (F), Saturday (S), Sunday (U)
Flags:
--AutoDecline -> Negates the creation of an event if an event is already scheduled.
--Location "<Location>" -> Adds event location.
--Visibility <public/private> -> Sets event visibility.
--Description "<Description>" -> Adds event description.
Edit a Single Event Property
Syntax:
edit event <Property> "<Event Name>" from <Start DateTime> to <End DateTime> with <New PropertyValue>
Example:
edit event Location "Gym Chest Day" from 2025-03-05T08:15:00 to 2025-03-05T09:15:00 with "Home Gym"
Property:
Property is a field of a calendar item. List of acceptable properties are shown here:
start, end, name, location, description, visibility, weekdays, repeatTimes
Note:
1) Editing an Event with a property <End> or <Start> that overlaps with an existing event will cause the edit to fail.
2) Properties <Start> and <End> represent the StartDatetTime and EndDatetTime.
A User can edit these the Date or Time, or both, use delimeter 'T' between date and time
ex) <new PropertyValue> 2025-03-05 or 10:15:00 or 2025-10-05T010:15:00
Syntax: edit event end "Lift" from 2025-04-05T08:15:00 to 2025-03-05T09:15:00 with 2025-03-05
3) If you try to edit Weekdays or repeatTimes in a simple calendar event, the edit will fail
Edit All Events Starting on a specific Date Time
Syntax:
edit events <Property> "<Event Name>" from <Start DateTime> with <New Value>
Example:
edit events Visibility "Morning Run" from 2025-03-01T07:00:00 with private
Note:
1) Editing an Event with a property <End> or <Start> that overlaps with an existing event will cause the edit to fail.
2) Properties <Start> and <End> represent the StartDatetTime and EndDatetTime.
A User can edit these the Date or Time, or both, use delimeter 'T' between date and time
ex) <new PropertyValue> 2025-03-05 or 10:15:00 or 2025-10-05T010:15:00
Syntax: edit event end "Lift" from 2025-04-05T08:15:00 to 2025-03-05T09:15:00 with 2025-03-05
3) If you try to edit Weekdays or repeatTimes in a simple calendar event, the edit will fail
Edit All Events with the Same Name
Syntax:
edit events <Property> "<Event Name>" with <New Value>
Example:
edit events Description "Study Session" with "Kunj Study With Mike"
Note:
1) Editing an Event with a property <End> or <Start> that overlaps with an existing event will cause the edit to fail.
2) Properties <Start> and <End> represent the StartDatetTime and EndDatetTime.
A User can edit these the Date or Time, or both, use delimeter 'T' between date and time
ex) <new PropertyValue> 2025-03-05 or 10:15:00 or 2025-10-05T010:15:00
Syntax: edit event end "Lift" from 2025-04-05T08:15:00 to 2025-03-05T09:15:00 with 2025-03-05
3) If you try to edit Weekdays or repeatTimes in a simple calendar event, the edit will fail
Print Events for a Specific Day
Syntax:
print events on <Date>
Example:
print events on 2025-03-05
Print Events in a Specific Time Range
Syntax:
print events from <Start DateTime> to <End DateTime>
Example:
print events from 2025-03-05T08:00:00 to 2025-03-05T12:00:00
Export Calender to CSV
Syntax:
export cal <FileName>.csv
Example:
export cal absolute/path/to/my_calendar.csv
Show Status on a Specific Date/Time
Syntax:
show status on <DateTime>
Example:
show status on 2025-03-05T09:30:00
-> Prints "You are not busy at: <startDate>@<startTime> if you are Available
-> Prints "You are busy at: "<startDate>@<startTime> if you are not Available
Notes:
1) The output of the csv file follows expected google calendar formate.
See Format Here:
https://support.google.com/calendar/answer/37118?hl=en&co=GENIE.Platform%3DDesktop#zippy=%2Ccreate-or-edit-a-csv-file
Help
Syntax:
help
Note: Displays a help section with commands and fuctionality