When you are a professor with 80 students who submit hundreds of files to you every week, what do you do? One answer: you build your own learning management system (LMS).
Students do not name their files intuitively (“Untitled.pdf”), nor do many include their names on their homework. Some students submit inappropriate file formats or 1 gigabyte files. Some students don’t submit their homework at all.
This system isn’t a strict LMS. It’s a way to manage the insanity of tracking and organizing thousands of student files. It was built with HTML, CSS, JavaScript, and PHP over the course of a year, and it uses SQLite as a backend.
The LMS also integrated lightly with the course website (built with Jekyll). When announcements were committed to the website via git, a special git hook sent personalized emails with the contents of the announcement to each student. Students could elect to quell these announcements, if desired.
Visual Documentation

Log in screen. Background photography of artwork from the Amsterdam Light Festival.

Upload files for a given assignment.

File listing of a student’s files. Includes a summary of missing files and indicates overdue assignments.

A panel to toggle various email notifications from the system. One of the notifications is a weekly email with a report listing all of the submitted and overdue homework assignments.

An activity log. It also lists when new announcements have been published on the course website.

Change the account password.

This status report is an administrator screen. I could see an overview of all the students and all of the assignments and whether they’d been submitted.

The status report also included a detailed listing of every students’ files. Hovering over a students name would summon a download icon to download a zip file of all of that students’ files. Hovering over an assignment name would summon a download icon to download a zip file of all of that assignment’s files.

Logged out. Background photography of artwork from the Amsterdam Light Festival.