KeJepret
Public sourceMarketplace foto olahraga: pencarian wajah, watermark, checkout, saldo fotografer, dan withdrawal; kontribusi saya mencakup alur web/API dan integrasinya.
Proyek pembelajaran berbasis proyek (PBL) di kampus untuk penilaian kenaikan semester.
Best PBL se-angkatan · Tingkat 2
Tim KeJepret meraih penghargaan Best PBL se-angkatan untuk Tingkat 2.
Lihat foto tim dan penghargaan


Temukan momen larimu. Koleksi foto event olahraga, pencarian wajah, dan alur pembelian dalam satu marketplace. Cuplikan antarmuka · preview lokal dengan database kosong
Sorotan kontribusi saya
- Membangun unggah foto, preview watermark berulang, penyimpanan R2, dan pemanggilan API embedding foto.
- Menghubungkan kamera/unggahan selfie, enrollment, face search, pemetaan hasil foto, serta sesi dan riwayat pencarian.
- Mengintegrasikan Pakasir, pemeriksaan status pembayaran, pembaruan pesanan, dan hak unduh foto yang sudah dibeli.
Daftar isi · 8 modul kontribusi
Gambaran alur utama
6 langkahDari foto yang diunggah fotografer, pelari menemukan wajahnya, membeli foto, lalu memperoleh hak unduh. Admin menangani pengelolaan event dan penarikan saldo.
01Siapkan koleksi foto
Event dan unggahan
Admin & fotograferPreview dan indeks wajah
Backend & layanan AI
02Temukan foto pelari
Masukkan selfie
PelariCari dan tampilkan kecocokan
Backend & layanan AI
03Beli dan unduh
Checkout dan konfirmasi
Pelari & payment providerFoto asli dan saldo penjualan
Pelari, fotografer & admin
Rincian proses dan percabangan
Event dan unggahanAdmin & fotografer
Admin mengelola event serta verifikasi fotografer. Fotografer mengunggah foto ke koleksi event yang sesuai.
Preview dan indeks wajahBackend & layanan AI
Foto disimpan di R2, preview diberi watermark, dan wajah diproses melalui API embedding untuk kebutuhan pencarian.
Masukkan selfiePelari
Pelari mengambil selfie atau mengunggah berkas. Backend menghubungkannya dengan referensi wajah pengguna.
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.
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.
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.
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
Teknologi inti
130 commit dalam 12 bulan terakhir
Semua branch| Nov | Des | Jan | Feb | Mar | Apr | Mei | Jun | Jul | Agu | Sep | Okt | Nov | |||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Minggu | |||||||||||||||||||||||||||||||||||||||||||||||||||||
| Senin | |||||||||||||||||||||||||||||||||||||||||||||||||||||
| Selasa | |||||||||||||||||||||||||||||||||||||||||||||||||||||
| Rabu | |||||||||||||||||||||||||||||||||||||||||||||||||||||
| Kamis | |||||||||||||||||||||||||||||||||||||||||||||||||||||
| Jumat | |||||||||||||||||||||||||||||||||||||||||||||||||||||
| Sabtu |
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.