Skip to content
400+ students enrolled
Full StackLiveEducation · 2026

MITOVKA

Online beauty academy public course catalog + private student portal with video lessons, certificates, and bank-card checkout. End-to-end build.

Role
Full Stack
Year
2026
Category
Education
Stack
React 19Redux ToolkitReact RouterStyled ComponentsVimeo Player APIChart.js / RechartsNode.jsExpressSequelizeMySQLJWTNodemailerRaiffeisen Bank 3-D Secure gateway

01 · Outcomes

What the build actually shipped.

Numbers, not adjectives. The stats below are pulled from production. Anything still live, still measured.

400+

ENROLLED STUDENTS

active on the platform

2026

IN PRODUCTION

live, with real payments

End-to-end

FRONT · BACK · ADMIN

users, courses, checkout

Operator-grade

ADMIN TOOLING

the academy runs the platform

02 · Overview

What it does.

A full beauty academy platform combining e-commerce and e-learning. Visitors browse a public course catalog; after purchase they enter a private student portal that streams video lessons (Vimeo), tracks lesson-by-lesson progress, and issues completion certificates on request. Checkout runs on a custom Raiffeisen Bank 3-D Secure integration in RSD, with signed callbacks and an order-reconciliation layer that recovers any payment left pending. A separate admin panel manages courses and lessons, reviews certificate applications, runs promo-code campaigns, and reports on sales through interactive charts and spreadsheet export. Built end-to-end React 19 SPA front end and a hardened Node/Express + MySQL back end (JWT auth, rate-limiting, transactional email).

04 · Decisions

The choices that shaped the build.

Tech is downstream of decisions. These are the calls made early enough to compound the right way. The ones a code review six months later still agrees with.

Raiffeisen 3-D Secure over Stripe

The academy charges in RSD with local cards, so the integration goes straight to the bank's acquiring with 3-D Secure auth plus signed callbacks and a reconciliation layer so no payment is left "pending".

MySQL over NoSQL

Orders, courses, lessons, progress, and certificates are densely related, and checkout needs transactional consistency a relational DB with Sequelize holds that tighter than a document store.

Vimeo over self-hosted video

Video lessons stream through the Vimeo player adaptive bitrate and content protection without building and scaling our own streaming pipeline.

Let’s build

Have something to ship?

I take 4–5 freelance projects a year. Cold pitches welcome. I reply within 24 hours on weekdays.

hello@suzunovic.dev