SahrulRamadhani29/portfolio

Ram Digital Store

Private source

Toko produk digital dengan guest checkout, reservasi stok, pembayaran QRIS, invoice, dan pengiriman produk.

SoloFull-stack toko digital, reservasi stok, rekonsiliasi QRIS, admin, dan pengujian
Source code private
Poster Ram Digital Store: home awal, katalog pada home yang sama, dan formulir checkout dalam tiga layar mobile.

Produk digital. Alur belanja simpel. Jelajahi katalog di home, tinjau rincian belanja, lalu lengkapi formulir checkout. Home dan formulir checkout sebelum pesanan dibuat

Tampilan aplikasi Home awal / Katalog di home / Formulir checkoutPerbesar

Sorotan kontribusi saya

Baca seluruh 8 modul kontribusi
Daftar isi · 8 modul kontribusi

Gambaran alur utama

6 langkah

Pembelian tanpa akun menghubungkan pilihan produk, reservasi stok, konfirmasi QRIS, dan pemenuhan digital. Status provider menjadi dasar penanganan pembayaran.

  1. 01Pilih dan pesan produk

    1. Katalog dan keranjang

      Pembeli
    2. Buat order dan reservasi

      Backend toko
  2. 02Verifikasi pembayaran

    1. Bayar tagihan pesanan

      Pembeli & provider QRIS
    2. Rekonsiliasi status

      Backend toko
  3. 03Penuhi dan kirim pesanan

    1. Pemenuhan sesuai jenis produk

      Sistem & admin
    2. Invoice dan tindak lanjut

      Pembeli & admin
Rincian proses dan percabangan
  1. Katalog dan keranjangPembeli

    Pilih produk, jumlah, serta beberapa item dalam satu keranjang. Checkout dapat dilakukan tanpa membuat akun.

  2. Buat order dan reservasiBackend toko

    Sistem memeriksa ketersediaan, mereservasi stok, dan menghubungkan item dengan order induk serta akses halaman pesanan.

  3. Bayar tagihan pesananPembeli & provider QRIS

    Tagihan QRIS dihubungkan dengan order. Status diterima melalui webhook dan pemeriksaan ke provider.

  4. Rekonsiliasi statusBackend toko

    Verifikasi callback dan status provider menentukan kelanjutan order, termasuk saat callback datang terlambat.

    Apa hasil pembayaran?

    • Pembayaran sah. Lanjut ke pemenuhan produk digital.
    • Kedaluwarsa tanpa pembayaran. Reservasi dilepas agar stok tersedia kembali.
    • Pembayaran terlambat / tidak sinkron. Gunakan rekonsiliasi dan recovery admin; jangan menganggapnya otomatis gagal.
  5. Pemenuhan sesuai jenis produkSistem & admin

    Order sah membuka detail/hak akses produk akun, atau mengikuti jalur upgrade akun pengguna sesuai jenis pembelian.

  6. Invoice dan tindak lanjutPembeli & admin

    Invoice serta email dihubungkan ke order. Admin menangani pengiriman ulang atau recovery ketika proses kirim bermasalah.

Reservasi stok, expiry, dan status provider dihubungkan melalui rekonsiliasi; pemenuhan produk mengikuti pembayaran sah serta jenis pesanan.

CASE_STUDY.mdProduk & kontribusi saya

Tentang Ram Digital Store

Ram Digital Store adalah toko produk digital dengan katalog, keranjang, pembelian tanpa akun, pembayaran QRIS, pemenuhan produk, invoice, dan dashboard admin. Aplikasi membedakan pembelian produk akun dari layanan upgrade akun pengguna serta menghubungkan stok dengan status pembayaran.

Saya mengembangkan frontend, backend, database, integrasi pembayaran, pengiriman digital, dan pengujian proyek ini. Fokus teknisnya mencakup konsistensi reservasi stok dan penanganan perubahan status transaksi.

Kontribusi saya

Katalog, keranjang, dan guest checkout

Saya membangun halaman katalog, kategori, detail produk, pemilihan jumlah, serta keranjang multi-item. Saya mengerjakan checkout tanpa akun dan halaman pesanan berbasis token agar pembeli dapat mengikuti pembeliannya. Item keranjang dihubungkan dengan order induk untuk menyatukan status pembayaran dan keluaran pesanan.

Pengelolaan produk dan operasional admin

Saya mengembangkan pengelolaan produk, kategori, stok, pesanan, serta popup promosi. Saya menambahkan impor CSV/XLSX, ekspor stok, dan pencarian pesanan pada server. Pemuatan grafik dashboard ditunda agar komponen tersebut tidak ikut membebani pemuatan awal halaman admin.

Reservasi stok dan expiry pesanan

Saya mengerjakan perhitungan stok tersedia/terjual, reservasi ketika checkout, serta pelepasan reservasi saat pembayaran tidak selesai. Saya juga membedakan jalur pemenuhan produk akun dan upgrade akun pengguna. Validasi input impor membantu menjaga kesesuaian data stok dengan proses yang memakai data tersebut.

Integrasi QRIS dan verifikasi webhook

Saya menghubungkan provider pembayaran, termasuk pengembangan integrasi KlikQRIS, dengan tagihan pesanan. Saya memeriksa callback/webhook dan mengonfirmasi status kepada provider sebelum meneruskannya ke pembaruan order. Proses ini menjadi penghubung antara informasi pembayaran eksternal dan hak akses produk pada aplikasi.

Rekonsiliasi pembayaran dan recovery

Saya menangani callback terlambat, transaksi yang belum ditemukan, serta pembayaran yang terkonfirmasi setelah order lokal kedaluwarsa. Saya menambahkan rekonsiliasi dan recovery melalui admin agar perbedaan waktu antara polling, callback, serta job expiry dapat ditangani pada status pesanan yang terkait.

Pengiriman digital, invoice, dan email

Saya menghubungkan pembayaran sah dengan pemenuhan produk, pengungkapan detail, invoice, dan pengiriman email melalui Brevo. Saya memperbaiki pengiriman ulang invoice dari order induk keranjang, retry email, dan kontrol kirim admin. Masa tampil detail produk mengikuti resolver durasi akses yang ditetapkan aplikasi.

Database dan kontrol akses admin

Saya memigrasikan runtime penyimpanan ke PostgreSQL dan melepaskan ketergantungan runtime Supabase sebelumnya. Saya mengerjakan autentikasi admin, perlindungan mutasi same-origin, validasi Turnstile, dan pemeriksaan pembayaran. Saya juga menghubungkan kebutuhan penyimpanan objek, pengolahan gambar, dan spreadsheet dengan operasional toko.

Pengujian kasus transaksi

Saya menulis tes Vitest untuk verifikasi pembayaran, race condition, expiry, recovery, serta resolver durasi akses. Skenario tersebut membantu memeriksa hubungan order, stok, dan status provider ketika proses datang pada waktu berbeda, termasuk pada keranjang yang memiliki beberapa item dan pemenuhan yang terkait order induk.

Bidang & teknologi inti

Bidang proyek

Full-stack WebBackend & APIData & DatabasesSoftware Quality

Teknologi inti

Next.jsTypeScriptPostgreSQLKlikQRISPakasirCloudflare R2VitestTailwind CSS

73 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 periode2 hari
Hari aktif dalam periode19 hari
Data terverifikasi · pembaruan dijadwalkan tiap jam.
Cara perhitungan · 1 repo · 2 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

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

Kembali ke semua proyek