Curriculum as a service: An internal tool

Codelicious was signing on schools left and right, but the in-house team tasked with packaging and maintaining their curriculum content were hard pressed to keep pace with demand.
📁 My Roles
Product Manager, UX Designer
⏱️ Duration
5 months
✔️ Key Results
A course materials database and MVP web-app for managing it, automation of certain high-touch course building activities
🏢 Organization
Codelicious is a B2e startup serving grades 3-8 educators. They deliver project-based coding curricula which empower educators to teach coding skills regardless of their own computer science experience
🙋 Stakeholders📝
Cross-functional Codelicious team, Volunteer developers


Winter break for K-12 students was peak season for Codelicious. A short window to update all the content within the curriculum and to package new courses to the specifications of what the schools had decided to teach in the rapidly approaching Spring Semester. It was heroic work for the Codelicious team, but unsustainable. Staffers needed more effective tools than Google Docs and Google Sheets for managing curricula. They needed tools to offload repetitive tasks to, something to lighten the load, something to give them the chance to enjoy their own well-earned holiday vacations.

The process of creating Codelicious courses involved pulling individual lesson plans or supporting documents from a course materials library. This was organized using a library classification system of Codelcious' design.

Chalkboard graphic breaking down the classification system
Chalkboard excerpt from a team meeting breaking down the library classification system

Once course materials were selected, they had to be distributed through modules, each roughly equivalent to one day of class and based upon the specifications of a given school and/or school teacher. One class might be 45 minutes three times a week, another might be two hours once a week. For either case, course materials would be broken up or merged together in order to build a full course curriculum. As our volunteer team was coming onboard, this process was fully-manual. However, Codelicious had a patent and a plan to invest in a more automated process. One that would free up their team to devote their resources to making even more effective curriculum rather than be distracted by packaging and repackaging it.

Parts of the Solution

Part 1: The Database
The course materials library had been organized in a Google Sheet when we kicked off the project. Both to add extra layers of security and to better interface with the data it held, our team designed and built a Firebase database as a more sustainable management system for the Codelicious library.

Part 2: The Web-app
While the Google Sheet hadn't been a scalable way to manage and operate the library, it had been a usable one for the Codelicious team. To give them a way to interface with the data stored in the database we built a web-app intended to be used as an internal tool to edit, add to, and generally interface with the database.

Part 3: Automation scripts
After building the database and web-app we didn't have the bandwidth to continue to a fully automated course building system. However, we did add in "macro-like" areas of automation. These included scripts which automatically:

- Populated a given course with correctly arranged lesson plans based on library metadata and specifications from the relevant teacher regarding the length of their course and class sessions.

- Generated the i-Frames needed to insert a lesson plan into the Learning Management System a particular school was using.

- Generated syllabi which provided information about their associated course and overviewed all the lesson plans therein.

- Listed state educational standards covered by a given course.

The Web-app

Write-up relevant to this section still in progress
Library interface of the Codelicious app
Unfiltered state
Filtered state of the Library
Filtered state
Spreadsheet import/export facilitated mass update functions
Spreadsheet import/export facilitated mass update functions
Selected course materials could be added to any existing course
Selected course materials could be added to any existing course
New documents and other course materials could be added to the database
New documents and other course materials could be added to the database