This semester, several university modules shipped slide decks but not full lecture notes. A course-notes website was built to close that gap and make study material easier to access for classmates.
The project is live at: https://course-notes-five.vercel.app/
What the Site Includes
Content is organized by module and then by lecture so students can move directly to the exact topic they need. Each course area includes:
- Lecture notes that follow lecture order and structure
- Flashcards with spaced repetition (rate cards -> scheduled review)
- Further resources for topics that need extra context
The current modules include Software Systems Design, Operating Systems and Computer Networking, and Artificial Intelligence, plus a small personal section.
AI as an Editorial Accelerator, Not a Final Authority
AI was used primarily to improve speed and consistency: transforming rough lecture material into clearer first drafts, extracting key terms, and generating initial flashcards. Every output was then reviewed and corrected before publishing.
The result is intended as a study aid, not a replacement for lectures, official material, or critical reading.
Architecture Overview
The platform is a Next.js App Router project deployed on Vercel.
Lecture PDFs are stored in Cloudflare R2 (S3-compatible object storage) and delivered through an API route that supports HTTP Range requests. That Range support is important because browser PDF viewers can fetch files incrementally instead of downloading entire documents upfront.
As a resilience fallback, matching files can also exist under /public/pdfs/. If R2 is unavailable, or if a file is missing remotely, the API route can serve the local copy so client behavior remains consistent.
Lecture discovery follows the same philosophy: remote and local sources are combined so module pages remain populated even when one source is degraded.
Flashcards, further-reading links, and course definitions are maintained as TypeScript data files in the repository. Review scheduling uses SM-2, with learner progress stored in browser localStorage rather than a backend database.
Practical Lesson: Asset Storage and Asset Delivery Are Different Problems
One useful lesson from this build is that choosing object storage is only part of the solution. Performance and reliability depend on delivery strategy.
R2 is cost-efficient and straightforward for large static assets, but user experience improved most when three delivery decisions were combined:
- Incremental fetch support through HTTP Range requests
- Cache-friendly responses at the edge for repeated access
- Graceful fallback paths to local assets when remote reads fail
This combination reduced avoidable full-file transfers, improved repeat-load behavior, and kept content available during partial service issues.
Why Publish It Openly
A key motivation was to close the gap between what students often need and what slide-based courses usually provide. Many modules require extra definitions, context, and worked explanations that are hard to recover quickly from slides alone.
Without shared notes, students often spend extra time rewatching recordings or searching external resources that may not match module scope. Publishing structured notes, flashcards, and aligned references makes that missing layer easier to reach.
It also helps classmates who miss lectures stay synchronized with course progress and revisit difficult topics with less friction.
The broader takeaway is simple: educational tools become more useful when they are built as reliable systems, not just content repositories.