SahrulRamadhani29/portfolio

KeJepret

Public source

Marketplace foto olahraga: pencarian wajah, watermark, checkout, saldo fotografer, dan withdrawal; kontribusi saya mencakup alur web/API dan integrasinya.

PBL Kampus

Proyek pembelajaran berbasis proyek (PBL) di kampus untuk penilaian kenaikan semester.

Penghargaan tim

Best PBL se-angkatan · Tingkat 2

Tim KeJepret meraih penghargaan Best PBL se-angkatan untuk Tingkat 2.

Lihat foto tim dan penghargaan
Empat anggota tim KeJepret berfoto bersama sambil membawa papan penghargaan Best PBL Tingkat 2.
Tim KeJepret dengan penghargaan Best PBL Tingkat 2. Perbesar foto
Kontribusi tim · furalmiqbadiBackend/API, integrasi AI & pembayaran, panel admin, dan deployment
Poster KeJepret dengan tiga layar mobile asli: login, home marketplace, dan daftar event pada preview lokal dengan database kosong.

Temukan momen larimu. Koleksi foto event olahraga, pencarian wajah, dan alur pembelian dalam satu marketplace. Cuplikan antarmuka · preview lokal dengan database kosong

Tampilan aplikasi Halaman masuk / Home marketplace / Daftar eventPerbesar

Sorotan kontribusi saya

Baca seluruh 8 modul kontribusi
Daftar isi · 8 modul kontribusi

Gambaran alur utama

6 langkah

Dari foto yang diunggah fotografer, pelari menemukan wajahnya, membeli foto, lalu memperoleh hak unduh. Admin menangani pengelolaan event dan penarikan saldo.

  1. 01Siapkan koleksi foto

    1. Event dan unggahan

      Admin & fotografer
    2. Preview dan indeks wajah

      Backend & layanan AI
  2. 02Temukan foto pelari

    1. Masukkan selfie

      Pelari
    2. Cari dan tampilkan kecocokan

      Backend & layanan AI
  3. 03Beli dan unduh

    1. Checkout dan konfirmasi

      Pelari & payment provider
    2. Foto asli dan saldo penjualan

      Pelari, fotografer & admin
Rincian proses dan percabangan
  1. Event dan unggahanAdmin & fotografer

    Admin mengelola event serta verifikasi fotografer. Fotografer mengunggah foto ke koleksi event yang sesuai.

  2. Preview dan indeks wajahBackend & layanan AI

    Foto disimpan di R2, preview diberi watermark, dan wajah diproses melalui API embedding untuk kebutuhan pencarian.

  3. Masukkan selfiePelari

    Pelari mengambil selfie atau mengunggah berkas. Backend menghubungkannya dengan referensi wajah pengguna.

  4. Cari dan tampilkan kecocokanBackend & layanan AI

    Wajah dibandingkan dengan kandidat foto. Hasil dipetakan ke koleksi aplikasi serta disimpan dalam sesi dan riwayat pencarian.

    Ada foto yang cocok?

    • Ada hasil. Pelari meninjau preview ber-watermark dan memilih foto untuk dibeli.
    • Belum ada hasil. Pencarian belum memberikan pilihan foto; pelari dapat mencoba input selfie lain.
  5. Checkout dan konfirmasiPelari & payment provider

    Item keranjang menjadi pesanan. Backend menghubungkan pembayaran Pakasir dan memeriksa status transaksi dari provider.

    Pembayaran terkonfirmasi?

    • Terkonfirmasi. Pesanan memperoleh hak unduh dan pencatatan penjualan dilanjutkan.
    • Belum terkonfirmasi. Hak unduh foto berbayar belum dibuka.
  6. Foto asli dan saldo penjualanPelari, fotografer & admin

    Pelari mengunduh foto yang dibeli. Fotografer melihat penjualan/saldo dan dapat mengajukan withdrawal untuk diproses admin.

Preview menggunakan watermark; pembayaran terkonfirmasi membuka hak unduh dan terhubung dengan saldo serta riwayat penjualan fotografer.

CASE_STUDY.mdProduk & kontribusi saya

Tentang KeJepret

KeJepret adalah marketplace foto olahraga yang mempertemukan pelari dan fotografer dalam satu platform. Pelari dapat mencari foto dirinya menggunakan selfie, melihat preview, membeli foto, dan mengunduh hasilnya. Fotografer mengunggah koleksi event, memantau penjualan, serta mengajukan penarikan saldo. Admin mengelola event, akun fotografer, dan operasional platform.

Saya mengerjakan backend web/API, integrasi layanan AI dan pembayaran, penghubung antarmuka, serta kebutuhan deployment dalam tim pengembangan KeJepret.

Kontribusi saya

Struktur backend, database, dan akses peran

Saya menyusun model, migrasi, controller, serta route untuk foto, pencarian, keranjang, pesanan, unduhan, dan saldo. Saya menghubungkan jalur web dengan API agar proses yang sama dapat digunakan oleh tampilan aplikasi dan integrasi layanan. Middleware peran memisahkan akses pelari, fotografer, dan admin sesuai aktivitasnya.

Unggah foto, watermark, dan penyimpanan media

Saya mengerjakan alur unggah foto fotografer, penyimpanan objek melalui adapter S3 ke Cloudflare R2, serta pembuatan watermark berulang pada preview. Saya juga menghubungkan unggahan dengan pemanggilan API embedding agar foto yang masuk dapat digunakan dalam pencarian wajah. Perbaikan upload dan URL media menjadi bagian dari pekerjaan ini.

Selfie, enrollment, dan pencarian wajah

Saya menghubungkan input kamera atau unggahan selfie dengan enrollment wajah pelari dan layanan face search. Saya menyesuaikan kontrak parameter antara Laravel dan FastAPI, termasuk identitas pelari serta daftar foto kandidat. Hasil dari layanan AI dipetakan kembali ke foto aplikasi, kemudian disimpan sebagai sesi dan riwayat pencarian untuk ditampilkan kepada pengguna.

Keranjang, checkout, dan detail pesanan

Saya membangun proses pengambilan item keranjang menjadi pesanan, penyimpanan detail pembelian, serta hubungan antara pengguna, foto, dan transaksi. Pada jalur web, saya menggunakan transaksi database dan penguncian baris untuk operasi terkait agar perubahan status pesanan serta pencatatan data saling mengikuti.

Integrasi pembayaran dan hak unduh

Saya mengintegrasikan Pakasir, memeriksa status transaksi dari provider, dan memperbaiki pembaruan status pembayaran pada aplikasi. Pembayaran yang terkonfirmasi dihubungkan dengan hak mengunduh foto yang telah dibeli. Saya turut memperbaiki jalur unduhan dan penggunaan HTTPS agar tautan foto dapat digunakan dengan benar dari antarmuka pengguna.

Saldo, penjualan, dan withdrawal fotografer

Saya mengerjakan pencatatan saldo fotografer, riwayat penjualan, serta pengajuan withdrawal. Pekerjaan ini menghubungkan hasil transaksi pembeli dengan informasi yang dibutuhkan fotografer dan proses penarikan di sisi admin. Saya juga menambahkan notifikasi penjualan beserta penghubungnya ke tampilan fotografer.

Halaman pengguna dan panel admin

Saya menghubungkan halaman Blade untuk login/registrasi, event, profil, pencarian, keranjang, serta riwayat dengan data aplikasi. Pada panel Filament, saya mengerjakan resource yang terkait pengelolaan dan verifikasi fotografer serta withdrawal. Saya juga memperbaiki navigasi dan tampilan mobile pada bagian yang saya tangani.

Deployment dan penyelesaian masalah integrasi

Saya menambahkan Dockerfile serta konfigurasi startup untuk kebutuhan hosting. Saya memperbaiki mixed content, URL watermark, batas unggahan PHP, proses upload, dan unduhan HTTPS. Pekerjaan ini menghubungkan konfigurasi aplikasi, media, dan server agar alur yang digunakan pelari maupun fotografer berjalan konsisten.

Layanan pengolahan wajah yang dihubungkan ke platform ini dijelaskan lebih lanjut pada proyek terkait KEJEPRET-AI.

Bidang & teknologi inti

Bidang proyek

Backend & APIAI EngineeringFull-stack WebComputer VisionData & Databases

Teknologi inti

LaravelFilamentPostgreSQLFastAPIInsightFacePakasirCloudflare R2Docker

130 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 periode4 hari
Hari aktif dalam periode8 hari
Data terverifikasi · pembaruan dijadwalkan tiap jam.
Cara perhitungan · 1 repo · 5 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

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

Contoh commit public

Bukti kontribusi

Kembali ke semua proyek