SahrulRamadhani29/portfolio

kadomu.online

Private sourceMVP

Platform pembuat website kado personal: pilih template, isi cerita dan foto, lalu buat hadiah digital.

SoloMonorepo pelanggan/admin/API, template interaktif, pembayaran, media, dan siklus site
Source code private
Poster kadomu.online: home awal, pilihan momen dan template di home, serta formulir Detail Cerita dalam tiga layar mobile.

Kado personal. Cerita yang hidup. Pilih momen, tentukan desain, lalu lengkapi cerita dan foto untuk hadiah digitalmu. Dari halaman awal hingga formulir personalisasi

Tampilan aplikasi Home awal / Pilih momen & desain / Formulir Detail CeritaPerbesar

Sorotan kontribusi saya

Baca seluruh 8 modul kontribusi
Daftar isi · 8 modul kontribusi

Gambaran alur utama

6 langkah

Pelanggan mengubah template menjadi website hadiah personal. Validasi media, pembayaran, dan masa aktif menentukan kapan site dapat diakses penerima.

  1. 01Rancang hadiah personal

    1. Pilih kategori dan template

      Pelanggan
    2. Isi konten dan media

      Pelanggan
  2. 02Validasi dan bayar

    1. Periksa slug dan gambar

      API Hono
    2. Buat order dan invoice

      Pelanggan & provider Mayar
  3. 03Bagikan website hadiah

    1. Render site personal

      Sistem & penerima
    2. Kelola masa aktif

      Sistem & admin
Rincian proses dan percabangan
  1. Pilih kategori dan templatePelanggan

    Jelajahi katalog, buka preview template, lalu tentukan tampilan serta paket durasi hadiah.

  2. Isi konten dan mediaPelanggan

    Lengkapi cerita, pesan, data penerima, foto, atau musik sesuai kontrak konten template yang dipilih.

  3. Periksa slug dan gambarAPI Hono

    Validasi input serta ketersediaan slug; periksa berkas gambar dan optimalkan media sebelum dipakai oleh site.

  4. Buat order dan invoicePelanggan & provider Mayar

    Order dihubungkan dengan invoice. Backend memeriksa callback/status dan nominal pembayaran.

    Pembayaran sudah sesuai?

    • Pembayaran valid. Aktifkan site; callback berulang ditangani agar aktivasi tidak berulang.
    • Belum dibayar / belum valid. Site belum memperoleh status aktif dari pembayaran tersebut.
  5. Render site personalSistem & penerima

    Data site aktif dibaca melalui slug/subdomain. Template menampilkan konten dan interaksi personal untuk penerima.

  6. Kelola masa aktifSistem & admin

    Akses dan cache render mengikuti masa aktif site. Admin mengelola site/order; proses cleanup menangani data dan aset yang perlu dibersihkan.

Aktivasi site mengikuti verifikasi pembayaran. Payload dan cache render dibatasi masa aktif, dengan cleanup untuk data serta media terkait.

CASE_STUDY.mdProduk & kontribusi saya

Tentang kadomu.online

kadomu.online adalah platform pembuat website kado personal. Pelanggan memilih template, mengisi pesan dan cerita, menambahkan foto atau musik, lalu memperoleh website hadiah dengan slug/subdomain dan masa aktif. Dashboard admin digunakan untuk mengelola template, paket, pesanan, serta site yang dibuat.

Saya membangun aplikasi pelanggan, admin, API, dan paket bersama dalam satu monorepo. Pekerjaan saya mencakup pengalaman template, pembayaran, pengolahan media, serta siklus hidup website hadiah.

Kontribusi saya

Struktur monorepo dan kontrak bersama

Saya mengembangkan aplikasi pelanggan, aplikasi admin, backend Hono, dan paket shared untuk tipe data lintas aplikasi. Kontrak bersama menghubungkan masukan template, order, dan data site agar frontend serta API menggunakan bentuk data yang sesuai. PostgreSQL dan Drizzle digunakan untuk schema serta migrasi penyimpanannya.

Katalog, preview, dan personalisasi

Saya membangun pemilihan kategori/template, preview, formulir personalisasi, halaman pesanan, serta halaman sukses. Konten pelanggan dihubungkan dengan kontrak data template agar pesan, cerita, penerima, foto, serta musik dapat digunakan pada website hadiah yang dipilih.

Interaksi template dan pengalaman penerima

Saya mengerjakan state template, pembukaan konten, pengungkapan pesan panjang, kontrol musik, dan progres interaksi. Saya juga menangani respons terhadap preferensi reduced motion. Registry template menghubungkan pilihan katalog dengan komponen serta kebutuhan konten yang dipakai ketika site dirender.

Order, pembayaran Mayar, dan aktivasi

Saya mengembangkan validasi input, pemeriksaan/reservasi slug, pembuatan order, dan penghubung invoice Mayar. Saya memeriksa callback, status provider, serta nominal pembayaran sebelum aktivasi site. Penanganan callback berulang membantu menjaga agar pembayaran yang sama tidak memicu aktivasi yang berulang.

Validasi, optimasi, dan penyajian media

Saya menambahkan pemeriksaan tipe serta isi awal berkas gambar, optimasi dengan Sharp, pemrosesan media template, dan pembuatan aset QR. Payload render menyajikan data site menurut slug/subdomain sehingga konten personal dapat dimuat oleh template yang sesuai.

Masa aktif, cache render, dan cleanup

Saya membedakan order belum dibayar, site aktif, serta site kedaluwarsa pada proses aplikasi. Cache render dibatasi oleh masa aktif site. Saya mengerjakan cleanup aset dan penghapusan site agar hubungan antara data database serta media yang perlu dibersihkan tetap dapat dikelola.

Dashboard admin, autentikasi, dan deployment

Saya membangun pengelolaan kategori, template, paket durasi, order, site, demo, serta dashboard. Session admin menggunakan hash Argon2. Saya juga menyiapkan pemisahan web, admin, dan API melalui konfigurasi Docker serta Nginx agar kebutuhan tiap aplikasi dapat dikelola sesuai perannya.

Kontrak template dan pemeriksaan kualitas

Saya memperkuat hubungan progres interaksi dengan penyelesaian template, menambahkan pemeriksa AST TypeScript, dan mengembangkan validator bukti yang terikat fingerprint source. Saya menulis tes callback, visibilitas, serta progres penyelesaian untuk memeriksa perubahan yang dapat memengaruhi aktivasi site dan pengalaman penerima hadiah.

Bidang & teknologi inti

Bidang proyek

Full-stack WebFrontend EngineeringBackend & APIData & Databases

Teknologi inti

ReactTypeScriptHonoDrizzle ORMPostgreSQLMayarTailwind CSSDocker

153 commit dalam 12 bulan terakhir

Semua branch
NovDesJanFebMarAprMeiJunJulAguSepOktNov
Minggu
Senin
Selasa
Rabu
Kamis
Jumat
Sabtu
Arahkan ke kotak untuk melihat tanggal.
SedikitBanyak
Streak saat ini0 hari
Streak terpanjang dalam periode9 hari
Hari aktif dalam periode51 hari
Data terverifikasi · pembaruan dijadwalkan tiap jam.
Cara perhitungan · 1 repo · 1 branch

Commit milik saya yang terjangkau dari seluruh branch remote saat sinkronisasi. Satu SHA dihitung sekali, termasuk jika ada di beberapa branch atau fork. Merge commit dikecualikan. Tanggal memakai waktu author dalam WIB, bukan waktu push. Streak saat ini tetap berjalan bila commit terakhir kemarin dan hari ini belum selesai.

Ini kalender commit dengan cakupan semua branch, sehingga angkanya dapat berbeda dari kalender contributions GitHub yang juga memiliki jenis aktivitas dan aturan branch sendiri. Kalender ini khusus untuk proyek yang sedang dibaca.

Riwayat kontribusi

153 commit non-merge milik saya · Seluruh branch · Data 3 November 2026.

Kembali ke semua proyek