Back to projects

StudyBuddy

2024

Spaced-repetition flashcard app built during university to prep for exams, with a scheduling algorithm tuned for cramming season.

University project — team of 2

ReactNode.jsSQLitePWA

Overview

StudyBuddy is a flashcard app built for a university software engineering course. It implements spaced repetition (a simplified SM-2 algorithm) so review sessions focus on the cards a student is about to forget.

Problem

Existing spaced-repetition apps assume months of steady daily use. Students cramming for an exam in the next 5–7 days needed a scheduler that compresses review intervals instead of spreading them across weeks.

Approach

  • Implemented a modified SM-2 algorithm with a configurable "exam mode" that caps intervals at the number of days left until the exam.
  • Built as a PWA so it works offline during library sessions with poor wifi.
  • Deck import/export via CSV so cards could be shared between teammates.
function nextInterval(easeFactor: number, daysLeft: number): number {
  const ideal = Math.round(easeFactor * 1.3);
  return Math.min(ideal, Math.max(1, daysLeft));
}

Tech stack

React frontend with IndexedDB for offline card storage, a small Node/Express API for account sync, SQLite on the backend since the whole project ran on a single shared VM for the semester.

Outcome

Submitted as the final project for the course, used by both team members (and a handful of classmates) to study for finals. Grading feedback specifically called out the exam-mode scheduler as a thoughtful deviation from textbook SM-2.

Note: this is a mock case study written for portfolio demonstration purposes.