On this page
The Academic Scope & Domain Modeling
Developed as an end-to-end web engineering coursework project under the working title Belajar Pintar, this application explores the architecture of an online learning platform. Unlike simple content blogs, an LMS requires strict state boundaries between student progress, instructor course management, and administrative oversight.
The system was designed around two decoupled layers: an API service responsible for business rules, relational persistence, and role-based permissions, paired with a client-side single-page application focused on responsive study workflows, quiz interactions, and progress dashboards.
Backend Architecture: Django REST & PostgreSQL
The backend is built with Django and Django REST Framework, leveraging its modular application structure and native authentication layer. Data persistence is managed in PostgreSQL, structured across four primary domain models: identity and RBAC (JWT authentication), course and curriculum trees, enrollment progress state, and OpenAPI-documented RESTful endpoints wrapped in Docker containers.

Frontend Client: React & TanStack Query
The user interface was constructed with React, Vite, and Tailwind CSS, focusing on minimal layout shift during lesson navigation. Rather than relying solely on global state stores, the frontend utilizes TanStack Query to handle asynchronous server state.
This setup provides automatic caching, background revalidation, and optimistic updates for student interactions—such as bookmarking a lesson, submitting a quiz answer, or marking a module complete.

Decoupled Integration & Realistic Reflection
Building the frontend and backend as separate codebases provided valuable lessons in API contract management. While decoupled repositories offer clear separation of concerns, they also introduce coordination friction: frontend form validation rules must remain strictly synchronized with Django serializers to avoid cryptic submission errors.
As a student capstone project, the system successfully implements all core LMS workflows—from instructor course authoring to student quiz evaluation. Taking it to a commercial scale would require moving synchronous video uploads to an asynchronous cloud storage pipeline (such as AWS S3 with signed URLs), introducing Celery workers for automated certificate generation, and establishing comprehensive end-to-end integration test suites across the API boundary.
Where it stands.
Delivered
- Decoupled full-stack architecture pairing Django REST API with React SPA.
- TanStack Query integration with optimistic updates and background revalidation.
- Course catalog hierarchy, student enrollment state, and interactive quiz runner.
What remains
- Academic coursework prototype; video delivery relies on local storage rather than cloud object storage.
