Semua karya

DMS Platform

Situs publik, CMS, dan platform pembelajaran untuk bisnis pelatihan.

Tahun
2026
Peran
Desain dan pembangunan
Jenis
Platform · Situs publik, CMS, LMS
Stack
Next.js 16 · .NET 10 · PostgreSQL 17 · MinIO · TipTap
Landing page situs publik dengan jalur layanan untuk bisnis dan peserta

Masalah

Sebuah bisnis pelatihan menjalankan situs publik, katalog kursus, dan data peserta di tempat terpisah. Platform ini menyatukannya: satu situs publik, satu CMS untuk editor, dan dashboard pembelajaran untuk peserta.

Batasan

  • Tiga peran dengan visibilitas berbeda: editor, reviewer, dan administrator.
  • Rich text disimpan sebagai TipTap JSON dan disanitasi saat disimpan maupun saat dirender.
  • Konten Indonesia dan Inggris dari record yang sama.
  • Pembayaran di luar cakupan rilis pertama; model data harus menyisakan ruang untuk itu.

Sistem

API
.NET 10 modular monolith dengan modul Identity, Content, Catalog, dan Learning. ASP.NET Identity dengan JWT berumur pendek dan refresh token berotasi; FluentValidation pada setiap input.
Konten
PostgreSQL 17 untuk konten terstruktur, MinIO untuk media dengan presigned URL. Section landing, banner, artikel, dan record kursus berbagi satu audit trail.
Klien
Next.js 16 untuk situs publik, CMS admin, dan dashboard peserta. Primitif shadcn/ui dengan struktur komponen atomik; security header diatur di konfigurasi Next.

Keputusan

  1. 1.

    Modular monolith, bukan microservice

    Satu deployable dengan batas modul yang eksplisit. Content dan Learning bisa diekstrak nanti tanpa mengubah kontrak API.

    Tradeoff Disiplin modul ditegakkan lewat review, bukan lewat jaringan.

  2. 2.

    Sanitasi dua kali

    TipTap JSON disanitasi saat disimpan dan lagi saat dirender. Konten tersimpan tidak pernah dipercaya.

    Tradeoff Render lebih mahal; record yang tercemar tidak bisa mencapai pembaca.

  3. 3.

    Admin hanya desktop

    CMS mengasumsikan ruang kerja 1440px dan meruntuhkan rail menjadi ikon. Situs publik dan dashboard peserta responsif.

    Tradeoff Editor tidak bisa menerbitkan dari ponsel; permukaan editing tetap terbaca.

  4. 4.

    Hanya DTO

    Tidak ada entity yang melewati batas HTTP. Overposting mustahil secara konstruksi.

    Tradeoff Lebih banyak kode mapping per fitur.

Layar

Editor kursus di CMS: form detail di samping pohon kurikulumKatalog kursus mandiri dengan hargaIndeks artikel di situs publik

Status

MVP dalam pengerjaan, berjalan di deployment dev. Repositori privat.

Bukti