Project - Mobile Dates & Calendar Personalization



Contributing Team

@Marco Morales

Earlier Discovery

Linked Initiatives

FC-0034 (Product / Design definition)


This initiative introduces an integrated in-app dates feature to our mobile applications, enhancing user engagement with course schedules. Users have the ability to sync these schedules (in bulk or course by course) with their personal calendars, ensuring they receive real-time updates on course changes, timely notifications for upcoming deadlines, and automatic schedule adjustments if a due date is missed. Within the app, these dates link directly to relevant course materials, offering streamlined access to content. Additionally, users can adjust course deadlines and set personalized course goals.


This initiative introduces an integrated in-app dates feature to our mobile applications, enhancing user engagement with course schedules. Users have the ability to sync these schedules (in bulk or course by course) with their personal calendars, ensuring they receive real-time updates on course changes, timely notifications for upcoming deadlines, and automatic schedule adjustments if a due date is missed. Within the app, these dates link directly to relevant course materials, offering streamlined access to content. Additionally, users can adjust course deadlines and set personalized course goals.


Key Use Cases

  • As a learner, I can effortlessly sync my course schedules with my personal calendar through easy-to-navigate app settings. I receive real-time updates, direct content access, and maintain an organized view by managing course visibility. Individual course control enhances my experience, keeping me aligned with my educational timelines.

  • As a provider, I facilitate a comprehensive calendar integration for learners, enriching their academic experience. This integration not only enhances user engagement but also ensures learners are continuously informed, granting them the autonomy to personalize their study timelines and interact with course content in a streamlined manner.


  • Stage 1: App-Level Dates Settings This stage lays the groundwork for the entire calendar functionality within the app. We will establish the core infrastructure necessary for syncing with external calendars. A new date settings area will be added to Account Settings and be updated as preferences for calendar syncing, course visibility, and automatic calendar cleaning are introduced. As detailed in future stages, we will need the ability to sync course dates for students into a calendar format / feed that learners can have calendars linked to their account.

  • Stage 2: Personal Calendar Syncing and Management Next is the ability to sync events to personal account calendars from the account settings page. A dedicated single calendar for a given learning site is created that can stay up to date with relevant event data based on learner settings. This stage involves creating a new calendar on the chosen account (iCloud / Google), with initial options for calendar management.

    • Not clear if it is possible to have events sync to an existing calendar, leaving this here in case technical discovery makes this possible, if not we will go with the new calendar option instead.

  • Stage 4: Course Level Dates Page From a course dates page learners can enable the calendar syncing functionality as well. The dates page itself allows learners to view all course deadlines in one place with links directly to the relevant content associated with a date. The calendar syncing workflow from stage 2 is connected to this, with additional course level controls such as the ability to stop syncing just a specific course’s dates into the learning site calendar.

  • Stage 3: App Level Dates From an app level dates page, upcoming deadlines across all enrolled courses are shown, with options for hiding / removing course dates from view + calendar sync. Direct links to associated content with deadlines is possible also from this screen.


  • App Provider: Any group building the new mobile applications for other site operators / learning academies using Open edX.

  • Learner: Any Open edX instance learner whose learning site relies on a multi-tenant app build model.

In Scope / Out of Scope

Based on the above use cases, we are breaking down on high-level scope as follows:

In Scope

Out of Scope

Ability for learners to sync educational schedules with personal external calendars.

Interactive Calendar Layouts: Proposals for daily, weekly, or monthly interactive calendar views within the app are considered future enhancements and are not part of the initial development phase.

Implementation of app-level settings enabling users to control calendar synchronization preferences, course deadline visibility, and ability to automate removal of past courses from the calendar view.


Ability to view and manage course-specific deadlines and events, including the option to enable or disable calendar syncing for individual courses, providing a more granular level of control over calendar content.


App level dates view presenting users with all deadlines across all enrolled courses.


Ensuring that any changes made in the course schedules, user preferences, or app settings are immediately reflected in the user's personal calendar and the app's calendar page.


MVP Specs

Features & Requirements

In order to realize this MVP, we believe the following features will be required. Refer to the following flow chart for more details:



App Level Date Settings View

The "App Level Dates Settings" is a centralized feature allowing users to manage various aspects of their dates / calendar experience within the learning platform. This includes syncing preferences with external calendars, visibility controls for course deadlines, and archival settings for course calendars post-completion.


  • Access Point: Users can access date settings from their account settings. This ensures easy navigation without cluttering the primary interface.

  • Sync Preferences (Setting 1): Upon enabling calendar syncing, users should be prompted to select their sync destination (e.g., Google Calendar, Apple iCloud) and name their calendar for easy identification. This setting is crucial for personal organization and cross-platform consistency.

  • Preemptive Calendar Cleaning Setting (Setting 2) (Updated for proactive action): Within the settings, users encounter a toggle or checkbox labeled "Automatically remove course calendar upon completion." When this option is enabled, the system will automatically remove a course's calendar data from both the app-level calendar and any synced external calendar once the course is marked as completed. This automatic action is based on the user's preference set in advance, streamlining the management of course-related calendar entries and keeping the calendar updated with current and future courses.

Experience Suggestions / Notes

  • Intuitive Controls: The calendar settings should be designed with clear, easy-to-understand toggles or checkboxes. Tooltips or help icons can provide users with instant information on what each setting does, enhancing the user experience.

  • Visual Indicators for Sync Status: If a calendar is successfully synced with an external system, display a visual indicator (like a checkmark or sync icon) next to the calendar's name. This feature reassures users that the sync is active.

  • Prompt for Archival Action: Use non-intrusive yet noticeable prompts (like notifications or pop-ups) when asking users to decide on archiving or cleaning calendar data post-course completion.

Calendar Syncing

This control is accessible from the date settings page, and initiates the workflow for students syncing course / learning product level dates into a calendar of their choosing. Current focus is on adding events to a new calendar that can be renamed in either an iCloud / Google / OS level account.

  • Authentication Prompt: Selecting the sync option triggers an authentication process to ensure secure data handling. Users confirm their identities through a secure login or biometric verification, depending on their device capabilities.

  • Destination Selection: Destination Selection: Users are then asked to choose where they want their new calendar integrated. Operating system linked accounts (focus on iCloud + Google to start) should be selectable, and a new calendar will be created within this account initially named: “{Learning-Site-Name} Dates”

  • Calendar Naming and Setup: After successful authentication, users are redirected to their native mobile calendar app. Here, they can choose to add the educational events to an existing calendar or create a new one specifically for these events.

  • Note - ability to sync events into an existing calendar is likely too complex to justify presenting as an option for learners. Keeping as a reference here for now.

Automatic Sync for New Courses

After the initial sync setup, the system automatically recognizes the user's sync preferences for future course enrollments. This means:

  • When users enroll in new courses, the system automatically triggers a sync for these new course calendars with the user's personal calendar, based on their established preferences. There's no need for users to revisit the sync settings or re-initiate the sync process manually for each new course.

  • The 'sync' toggle in the settings doesn't reset to the 'off' position after the initial setup. Instead, it remains 'on,' indicating that the automatic sync feature is active. Users can choose to turn off automatic syncing at any time if they prefer to sync manually in the future.

A setting should be added to app level settings for Automatic Date Syncing that is default on but can be turned off, keeping new enrollments not syncing their dates unless they are added manually from app level settings or the course level dates tab.

Calendar Sync Toggling

If a user decides to toggle the app level calendar sync off, this action temporarily halts the automatic synchronization of course calendars with their personal calendar. Events and deadlines from courses enrolled during this period will not be synced to the user's personal calendar until they re- enable the feature. When the user toggles the sync back on, the system behaves as follows:

  • Re-initiation Prompt: The system recognizes that sync was previously set up and prompts the user with a message like, "Would you like to continue syncing with [Previous Calendar], or set up sync with a new calendar?"

  • Continuing with Previous Sync: If the user opts to continue with the existing setup, the system reactivates the sync without repeating the initial setup process. It automatically syncs the calendars for any courses enrolled while the feature was off, using the user's established preferences.

  • Setting Up New Sync: If the user wants to sync with a different calendar, the system initiates the setup process as if it were the first sync. Here, the user will go through the steps of selecting an existing calendar or creating a new calendar for sync.

  • Duplication Warning: In the case of setting up a new sync, the system warns about potential event duplication, as events from courses during the 'off' period might now be added to a different calendar. The warning could be, "Syncing with a different calendar may lead to duplicate events across multiple calendars. Do you want to continue?"

  • User Decision: The user has the option to acknowledge the duplication risk and proceed or to cancel and stick with the previous sync settings. If they proceed, they complete the new sync setup, and the system begins syncing with the newly selected calendar.

Course Date Exclusions

From the app level settings, it should be possible to see a list of courses with their dates syncing to the calendar, and a way for learners to uncheck active courses from being included.

Options to only sync dates from active / upcoming courses should be considered as a way to help limit dates being shown from inactive courses that learners no longer care about. TBD on exact settings / options - to be explored.

App Level Dates Page

The "App-Level Dates Page" feature consolidates all user course deadlines, schedules, and activities in one central hub within the app. This comprehensive view ensures users can quickly review all course level dates (excluding any courses excluded from calendar syncing).

Dates is to be added as a dedicated tab in the main navigation menu of the application.

  • Comprehensive List View: Upon accessing the page, users see a chronological list of all upcoming deadlines and activities from their enrolled courses, each tagged with the course identifier and status.

    • UX Suggestion: Implement a smooth scrolling feature, with a clear visual hierarchy (e.g., bolder text for closer deadlines; grayed out/crossed out for passed deadlines) that guides users' eyes naturally through their schedule.

  • Hyperlinked Course Items: Each listed item is clickable and redirects users to the specific course content or assignment page, streamlining the navigation process.

  • Course Visibility Customization (MVP Feature): Users can “filter” (not deleting) which courses they see on their calendar, avoiding clutter from courses that are less relevant or already completed (users can choose to turn on “deleting the finished courses calendars”/Feature 1 in settings as well) .

    • UX Suggestion: Provide a clear filtering interface, such as dropdown menus or toggle switches, that respond immediately to user input, reinforcing a sense of control.

App Level Dates- Calendar View

(Option to explore) - Calendar View (Interactive): Explore the possibility of a more interactive calendar layout, where users can view their schedule in a daily, weekly, or monthly format, with easy navigation between these views.

Course Level Dates Page

The "Course-Level Calendar Page" serves as a dedicated hub within each course, displaying all relevant deadlines and activities for that specific course. This feature enhances user focus and management of individual course schedules, with the added functionality of custom sync settings to personalize calendar integration further.

  • Access Point: Users access the Course-Level Calendar Page via a visible 'Dates' tab or icon within the course's main page, ensuring immediate navigation from the course content.

  • List View of Deadlines: Upon entry, users are presented with a chronological list of deadlines specific to the current course. Each deadline is hyperlinked, allowing users to click and be redirected to the corresponding course content or assignment page for immediate access and action.

  • Sync Toggle at Course Level: Unique to the Course-Level Calendar Page is the ability for users to control calendar sync settings for that particular course. A toggle is provided to enable or disable syncing for the course's calendar with their external personal calendar.

    • If the learner has never synced course dates before, they are asked whether they would like to sync dates for all courses or only this specific course. The resulting choice should slightly update the rest of the syncing workflow to either repflect that only this course’s dates are being synced, but to inform learners about options for broader account level syncing.

    • (Option) Only have this message / feature reflect app level syncing on first sync, even if initated from the course level screen. This would mean discovery fo rthis feature would come from either date settings in account settings, app level dates page, or cours elevel dates page.

  • Real-Time Sync Status: The page should also display the current sync status, informing users whether the course calendar is being synced with their external calendar. If the user has toggled off syncing, a visual indicator should make it clear that this course's deadlines are not being shared with any external calendar.

Adjust Deadlines (Course Level)

A workflow should exist for updating the dates of a course when they are in the past, allowing learners to Shift Dates from the course home page + course dates tabs.


Adjust Deadlines (App Level)

Explore this shift dates messaging also being bubbled up to the app level dates page if any courses have had their deadlines pass.

Feature behavior

  1. X

Technical Open Questions

We anticipate the following to some of the key questions that we will need answered during technical discovery. 

  • Q: What service can provide the event feed for each user based on their platform level dates? How can mobile consume / access this date for syncing with a learner selected account + calendar ID.

Successful Rollout: UI Considerations

We believe there is some risk in … We believe that organizations will need time to …. Therefore, we want to be conscious about how …. 

We are proposing the following to help drive adoption:

  • New User Product Tour: X

Product & UX/UI FAQ

The following represent our Product view of key questions. However, we look to the UX/UI and technical teams to validate these as needed.

Q: How ..



Q: Can a ..



Q: What kind of user experience for …



Q: Is it possible to..



Q: Will we …



Q: How will ..



Q: Decision on ..


Future Direction

The following features are not part of the MVP but may be added during future development of this product. They are offered here only for consideration as MVP platform decisions are made that may impact future opportunities. 



  • X



  • X



  • X

UI Examples