This platform is an online learning platform developed and maintained at Aalto University ↗. Like many software systems, it has seen a handful of design iterations.
The first version of the platform, shown in Figure 1, was developed by Sami Sarsa, Jesper Pettersson, and Arto Hellas, who is responsible for the platform. The platform was initially created for the FITech 101: Digi & Data course series ↗, which is a series of courses in Finnish ranging from basics of programming to learning how to create mobile applications.
The first version of the platform relied on a number of technologies, where the user interface was created using React ↗ with GatsbyJS ↗, while the backend was a mixture of services, mainly developed with Node.js ↗ and Express ↗. Over time, the platform was expanded to support more versatile courses and technologies, and in the old form, it served more than 20,000 learners.
Like all software, the platform is a work in progress, and it’s codebase has seen several rewrites. Rewrites happen for a number of reasons, such as to improve the maintainability of the codebase, to fix breaking changes due to library updates, or to get away from technologies that are poorly supported.
In the current version, the backend is still a mixture of services, but it is mainly written with Hono ↗ and Deno ↗. The user interface has been also mainly rewritten using Astro ↗ and Svelte ↗. The current version of the platform has been developed by Marc Aquado, Manh Bui, Hannes Fant, Arto Hellas, Egor Kovalenko, Denis Kuznetsov, and Sami Sarsa.
The platform is currently closed source, but the plan is to open source it down the road. The key reasons for keeping the platform closed source are related mainly to technological debt, where the platform is still under development, and the codebase is not yet in a state where it would be easy to contribute to the platform. Despite this, we are happy to say that the platform is already being used outside of Aalto University, by some of the awesome folks at the University of Jyväskylä ↗.