Skill Sharing Platform
Course hosting and delivery for local instructors, without a foreign platform's cut.
- Engagement
- Cambotix product
- Industry
- Education
- Year
- 2025
The challenge
Local instructors who wanted to sell courses online had two options: hand a significant share of revenue to an international platform and accept its pricing and content rules, or build a storefront themselves. Neither left them owning their audience.
Our approach
We built the API first and documented it in Postman before either client existed. The API is the actual product, while the admin portal and learner app consume its logic. This keeps the platform extensible because a second learner surface would not require reimplementing enrolment rules.
What it had to achieve
- Let an instructor publish and sell a course under their own terms
- Deliver video lessons reliably on mobile connections
- Track learner progress well enough to support completion
- Document the API so the platform can be extended or integrated
Architecture
The decisions that made the rest possible.
API-first with published documentation
Endpoints were designed and documented before the UIs, so enrolment, access and progress rules live in one place and both clients obey the same contract.
Enrolment as the access boundary
Lesson access derives from enrolment state rather than client-side checks, so a learner cannot reach paid content by manipulating the app.
Progress tracked per lesson, not per course
Granular progress makes resume-where-you-left-off reliable and gives instructors visibility into where learners stop.
What we delivered
- Express.js API with Postman-documented endpoints
- Next.js admin portal for course, lesson and enrolment management
- Flutter learner app with catalog, enrolment and video lessons
- Per-lesson progress tracking and resume
Outcomes
What changed once it was live.
- Instructors keep their pricing, content rules and learner relationship
- One documented API serves both the admin portal and the mobile app
- Learners resume exactly where they stopped, on any device
What we would do differently
Every project teaches something. Publishing it is how you tell whether a team is reflecting or just selling.
- Documenting the API before building the clients cost a week and saved more than that the first time a client needed changing.
- Deriving access from enrolment state server-side is non-negotiable for paid content. Client-side gating is not a security model.
Let's find out if this is worth building.
A 45-minute discovery call, free. You describe the problem, we tell you honestly what it takes, what it costs, and whether you should build it at all.