Skip to content
Back to projectsCase study · arbeetrate

Fundia - how we built an online learning platform

We designed and built an online learning platform for high school students: courses split into short lessons, plus a custom editor where the Fundia team creates interactive lesson content.

Share
Share on X
Share on LinkedIn
Share on Facebook
Copy link
Overview of the Fundia interface: lessons, progress, badges and ratings

Facts

Project type
Online learning platform with a custom content admin
What we delivered
Product design, UX/UI design and full-stack development
Industry
EdTech, education
Status
In production
Where to find it
fundia.sk

About the platform

Fundia is an online learning platform aimed primarily at high school students and school leavers. Students choose from a range of courses, pick the one they need right now and work through it lesson by lesson.

There is no shortage of material online, yet students lose time in it. Videos and study notes cover everything broadly, repeat a lot and scatter the essentials across ten different places. Courses on Fundia are built on the opposite principle: no filler, and exactly the scope a student sitting their finals actually needs to know.

Along the way the platform shows how far they have come: a learning streak, a daily goal and badges for milestones reached.

The other half of the product is the admin, where the Fundia team builds courses and articles themselves. New content is written in a browser, not in a ticket for a developer.

Learning streak, lesson progress and an activity heatmap
Streak and activity
Student metrics: completed lessons, time spent, daily goal and badges
Personal metrics
A wave interference simulation and an interactive gravity visualisation
Simulations and visualisations
Badge overview and the detail of an earned badge
Badges
Star ratings for a lesson and a leaderboard of the best rated lessons
Lesson ratings

The challenge

At first glance a learning platform looks like “a website with articles”. In practice we ran into several problems an ordinary website never has to solve:

  • Content that is more than text. A lesson needs to render mathematical notation in LaTeX, alternate between content types in any order and carry interactive simulations and quizzes as well. Off the shelf CMSes handle this with third party extensions that cannot be tailored, so authors end up pasting images instead of real content.
  • A student who comes back tomorrow. Content on its own does not keep anyone learning. The platform has to know exactly where a student is in a course, how much of the lesson is behind them and what comes next, reward consistency with badges and streaks, and let them genuinely work with the content rather than just read it. That meant tracking progress at the level of individual lesson parts and getting that data into the interface without turning it into another drag on page load.
  • A fast site on top of living content. Public pages have to be fast and easy to index, yet the content changes daily. So we had to settle what gets pre-rendered and cached, how long a cache entry may live and, above all, when it invalidates itself, so that an edit in the admin shows up on the site within seconds and without deploying a new version.
  • A product that will grow. It was clear from the start that new content types, subjects and paid courses would follow. The architecture had to absorb all of it without a rewrite.
The goal: build a platform where authors create rich content on their own, the public site stays fast and the whole solution keeps growing without major surgery.

How we built it

Content as building blocks

The key decision was the data model. A lesson is not one long text: a course splits into lessons, a lesson into sections and a section into blocks of text, image or video. Authors arrange them in any order and every block type is rendered by its own component.

As a result, a new feature is not a rebuild of the system but a new block type. Content states (draft, coming soon, published) and the access levels that pave the way for subscriptions were just as easy to add.

Course contents: lessons and sections in different states, completed, active, locked and coming soon
Course contents: lessons and sections in different states

A custom editor instead of an off the shelf CMS

The biggest technical challenge was the editor. We built it on TipTap and added our own extensions for the technical and interactive content the lessons need. Authors assemble a lesson from ready made elements and never have to work around anything with images.

What really matters is how the content is stored. A lesson is not saved as finished HTML but as a structured document: a tree of elements where every paragraph, formula or definition carries its own type and properties. The content therefore does not depend on how the site happens to look today.

That has three practical consequences. The editor and the public site read the same document, so authors see exactly what students will get. Changing the design is a matter of components, not rewriting hundreds of stored lessons. And because the content is a data structure, it can be reused elsewhere, for example in the blog, which runs the very same editor.

Lesson editor: an article block with interactive content, course contents on the right
The lesson editor with custom extensions for interactive content.

The admin

In the admin the team manages courses, lessons and the blog, uploads media and follows how the platform is used on a clear dashboard. We built the interface on the accessible components of Radix UI with a design of our own.

Feedback right next to the content

Content authors need to know which lesson works and which one students drop out of. At the end of every lesson we therefore ask students how they liked it, and the rating is stored with that lesson. It takes a single click, so there are enough answers to add up to a usable signal.

The Fundia team then sees the average rating and the number of responses for every lesson in the admin, plus a leaderboard of the best rated ones. Feedback does not end up in a spreadsheet: it points straight at the lessons and sections to rewrite or expand.

The second source is the usage itself. Alongside the ratings we track how students behave in the content: how many start a lesson and how many finish it, which section progress usually stalls at and which content they keep coming back to. The team sees not only what students said, but what they actually do, and can shape the content accordingly.

Why not an off the shelf solution

Off the shelf LMS / CMSFundia
Content authoringImages of equations and a limited editorA custom editor for technical and interactive content
ExtensibilityWaiting for a plugin or a new releaseInteractive simulations and new formats ship without touching existing lessons
Lesson structureOne long page of textShort sections with their own pace and completion state
Student motivationA course completion percentageStreaks, a daily goal and badges for milestones
DesignA templateAn interface designed from scratch

An off the shelf solution would have saved the first few months, but every further requirement would have run into its limits. Our solution rests on a block based content model and a purpose built editor, so the platform can change as its content changes.

The result

We delivered the complete platform, from the public site with the courses to the admin where the content is created. Today the Fundia team has:

  • a fast public site with courses and a blog,
  • an editor where they build interactive lessons themselves,
  • an admin with a clear view of how the platform is used
The result is a platform the Fundia team extends without depending on developers, and an architecture ready for more subjects, interactive simulations and subscriptions.
Fundia on mobile: the platform home page
Home page on mobile
Fundia on a laptop: course overview and progress
A look at the platform features

Tech stack

The technologies the platform runs on:

Next.jsReactTypeScriptRadix UICSS ModulesTanStack QueryReact Hook FormTipTapKaTeXHonoZodOpenAPIDrizzle ORMPostgreSQLBetter AuthMinIOResendStripePostHogCloudflare TurnstileDockerCaddyHetznerGitHub Actions

Have an idea for a product with a similar scope? Get in touch

Share
Share on X
Share on LinkedIn
Share on Facebook
Copy link
Similar projects
Fintech · Accounting · B2B

A company information system that saves hours of admin

Read case study
Contact

Get in touch with us!

Have questions or ideas? We'd love to hear from you. Reach out anytime and let's connect.

Contact Us

Fundia - how we built an online learning platform | Arbeetrate