🗓️

Optimise My Coursework

Jan2026 - Mar2026

A coursework scheduling platform that helps students transform deadlines into structured, manageable study plans through configurable scheduling strategies, visual workload analytics, and calendar-based planning.

View Live Demo Explore Screenshots

Overview

Optimise My Coursework is a full-stack scheduling tool designed to help students plan coursework more realistically across the academic term. Instead of only seeing assignment deadlines, users can generate an optimised schedule based on their preferred working pattern, scheduling strategy, and personal buffer preferences.

Main idea: break large coursework tasks into a practical day-by-day plan, then present the result in both visual and calendar-based formats that students can immediately act on.

The Problem

Students often know what they need to complete, but not how to distribute that workload effectively over time. Coursework deadlines tend to cluster, and without structure, it is easy to leave work too late or create unsustainable spikes in effort. We wanted to build a system that turns deadline data into a realistic, personalised study schedule.

Core Functionality

Scheduling Strategy Selection

Users can choose between different scheduling approaches such as Earliest Deadline First, MinMax for balancing daily load, or a Late scheduler depending on how they prefer to organise their work.

Working Hours Configuration

Students can define their available working window, allowing the generated schedule to reflect realistic daily study capacity rather than assuming unlimited time.

Buffer-Based Deadline Protection

A custom buffer feature lets users artificially bring deadlines forward by several days, creating a safety margin and reducing the risk of last-minute completion.

Dual Visualisation Output

The generated schedule is displayed through both a workload chart and an interactive calendar view, helping students understand their plan at both a high level and a day-by-day level.

How It Works

The platform is powered by a FastAPI backend and a React frontend. The API accepts two major inputs: a coursework array containing task information such as start date, deadline, and expected completion time, and a config object that stores optional user preferences such as strategy, working hours, and buffer.

Whenever a user changes these settings in the interface, the frontend dynamically updates the JSON payload sent to the backend. The backend then computes an optimised ScheduleResult, which is rendered immediately in the UI.

Example: if the user changes the buffer from 0 to 2, the system recalculates a plan that finishes two days earlier than the actual deadline.

Technical Highlights

Responsive Workload Visualisation

We used Chart.js to render the workload chart as a stacked bar chart. To improve presentation quality across devices, we also implemented a custom mathematical hook that dynamically adjusts the chart aspect ratio, preventing awkward stretching on different screen sizes.

Customised Calendar Experience

For the calendar interface, we integrated @fullcalendar/react and extended it with custom behaviour. The generated schedule is transformed into calendar events, and event hover states display custom HTML tooltips showing exact task durations.

Mobile-Responsive UX

Using custom React hooks for mobile detection, the calendar automatically adapts to smaller screens by hiding heavier desktop views and defaulting to touch-friendly day or list layouts.

Calendar Export

We also implemented an export feature that converts the generated schedule into a standards-compliant .ics file, allowing students to import their optimised schedule directly into Outlook or Google Calendar.

Live Demo

A public demonstration build is available for interactive exploration. Visitors can test the scheduling interface directly and also inspect the API documentation that powers the system.

Public demo: scientia.decesare.dev

Tip: try changing the scheduling strategy, working hours, or buffer value, then compare how the workload graph and calendar output update.

Impact

This project turns abstract deadline information into a personalised and actionable study plan. By combining configurable scheduling logic with intuitive visual outputs, it helps students manage coursework more proactively, reduce deadline pressure, and integrate academic planning with their wider personal schedule.

Tech Stack

React TypeScript / JavaScript FastAPI Chart.js @fullcalendar/react Tippy.js ICS Export

Screenshots

These screenshots show the main interaction points and outputs of the platform.

Scheduler choice interface

Scheduler Choice

Users can choose from multiple scheduling strategies, allowing the system to adapt to different workload preferences and study habits.

Working hours configuration

Working Hours & Buffer Setup

The configuration panel allows students to define realistic working hours and add a safety buffer that brings deadlines forward.

Workload bar chart view

Workload Graph

Built using Chart.js, the stacked bar chart transforms raw schedule data into an immediate overview of required effort across the term.

Calendar schedule view

Calendar View

The interactive calendar converts the schedule output into readable events, helping students inspect workload at the daily level.