Deep dive2023
Student Ninja logo

Student Ninja

Turn a pile of syllabi into a calendar that nags you at the right time.

Role
Solo

Student Ninja was my first real end-to-end build: a Django app that parses uploaded class schedules out of Excel and PDF files, turns them into an interactive calendar, and emails reminders before things are due. Archived now, but it is where the full-stack habit started.

Overview

Every semester starts the same way: five syllabi in five formats, deadlines scattered through paragraphs and tables, and no single view of what is due when. Student Ninja ate the files and produced one calendar.

It was a Django web app with a JavaScript calendar front end, file parsing on upload, task management, and a background job system for email reminders.

System map
Schedule uploadExcel + PDFDjango appparser + calendarCelery workerCrontab scheduleEmail remindersautomated
drag to exploreFrom syllabus files to scheduled nagging.

The problem

Deadlines lived in documents, not in tools. Copying them into a calendar app by hand took an evening and got stale the first time a professor moved a date.

The fix: parse the documents students already have, and make the reminders automatic so forgetting requires effort.

The build

Uploads were parsed server-side into structured events that auto-populated an interactive calendar rendered with JavaScript. Tasks could be added, edited, and checked off alongside the parsed schedule.

Reminders ran through Django background tasks on a Celery and Crontab setup, sending emails ahead of due dates. Getting scheduled jobs, parsing, and a web UI working together was my first taste of real systems plumbing, and I have been chasing that feeling since.

Outcomes

Deployed and used through my own semesters, then archived in 2023 as coursework ended.

As a first full build it covered an honest amount of ground: file parsing, data modeling, a dynamic front end, and scheduled background jobs. The projects since have better architecture, but this one proved the loop: idea, build, ship, iterate.

Built with
DjangoPythonJavaScriptHTML/CSSCelery
At a glance
2023
Archived after real semester use
1st
Full end-to-end build: parse, schedule, remind
0
Deadlines retyped by hand

Want to see more?

Explore the rest of my work, or get in touch about a project.