SewMe
SewMe adalah platform online inovatif yang dirancang untuk menghubungkan penjahit dengan pembeli secara mulus. Pelanggan dapat dengan mudah mencari penjahit yang sesuai dengan kebutuhan dan preferensi khusus mereka. Situs web ini menawarkan berbagai fitur termasuk opsi penyesuaian khusus, pelacakan real - time pembuatan pakaian atau kemajuan perubahan, obrolan langsung dengan penjahit untuk komunikasi yang dipersonalisasi, dan transaksi pembayaran tanpa uang tunai yang aman. SewMe memastikan pengalaman yang lancar dan efisien bagi penjahit dan pelanggan, meningkatkan seluruh proses penjahitan.
2024
Situs Web
Laravel 11, Livewire, MySQL, Midtrans, Tailwind CSS
Masalah
Industri jasa jahit pakaian tradisional masih banyak bertumpu pada interaksi langsung secara manual. Pelanggan kerap kesulitan menemukan penjahit yang terpercaya, membandingkan portofolio dan tarif, serta mengomunikasikan ukuran tubuh spesifik tanpa harus datang berkali-kali ke lokasi fisik penjahit. Di sisi penjahit rumahan atau UMKM, pencatatan antrean pesanan sering berantakan, pencairan pembayaran berisiko macet, dan tidak ada sistem pelacakan progres pengerjaan yang transparan bagi konsumen. SewMe dirancang sebagai platform marketplace jasa jahit dan pakaian kustom yang menjembatani pelanggan, mitra penjahit terverifikasi, dan admin platform dengan sistem pembayaran aman (escrow cashless).
Peran saya
Proyek ini dibangun saat saya menjalani program magang di PT Unimasoft Teknologi Indonesia dalam tim pengembang. Saya memegang peran utama sebagai Lead Backend Developer (sekitar 79 commit), bertanggung jawab atas pemodelan basis data, alur transaksi pesanan kustom, integrasi pembayaran nontunai, dan sistem penarikan dana mitra penjahit:
- Perancangan Basis Data Relasional: Merancang lebih dari 39 migrasi database MySQL, mencakup skema verifikasi toko (
toko), katalog produk multi-gambar (product_images), pesanan (pesanan), spesifikasi ukuran kustom (custom_ukuran), serta ledger penarikan dana (tarik_uang). - Alur Order Jahit & Custom Measurement Engine: Membangun modul pemesanan khusus pakaian jahit di mana pelanggan bisa memilih produk dasar atau memasukkan ukuran badan presisi (lebar bahu, lingkar dada, lingkar pinggang, panjang lengan/celana) yang tersimpan berelasi pada pesanan.
- Siklus Hidup Status Pesanan (Multi-Stage Lifecycle): Merancang alur status pengerjaan bertahap (Menunggu Pembayaran $\to$ Menunggu Konfirmasi Penjahit $\to$ Dalam Proses Pengerjaan $\to$ Pengiriman $\to$ Selesai), dilengkapi validasi otorisasi agar penjahit hanya dapat memperbarui pesanan milik tokonya sendiri.
- Integrasi Payment Gateway Midtrans: Mengimplementasikan pembayaran nontunai via Midtrans Snap API dan webhook notification handler, mengamankan status pelunasan transaksi secara otomatis.
- Sistem Dompet & Penarikan Dana Penjahit (TarikUang): Mengembangkan sistem rekonsiliasi saldo penjahit berdasarkan pesanan yang telah tuntas, menghitung pemotongan biaya administrasi platform, dan menyediakan alur verifikasi pencairan dana manual/transfer bank oleh superadmin.
- Fitur Chat & Ulasan: Mendukung pengembangan modul pesan langsung (direct messaging) antara pembeli dan penjahit untuk konsultasi pemilihan bahan/kain, serta sistem ulasan rating bintang dan komentar pasca-pesanan selesai.
Arsitektur sistem
Platform dibangun di atas Laravel 11, memanfaatkan arsitektur MVC modern dengan integrasi Livewire 3 untuk komponen antarmuka yang reaktif:
- Model-View-Controller (Laravel 11): Mengelola autentikasi berbasis role (Customer, Mitra Penjahit, Admin), validasi form, dan middleware pengaman rute toko.
- Livewire 3 Components: Menyediakan interaktivitas dinamis pada keranjang belanja, filter katalog penjahit, dan feed percakapan pesan tanpa me-reload seluruh halaman.
- Midtrans Payment Gateway: Menangani metode pembayaran serbaguna (Virtual Account bank, GoPay, QRIS, kartu kredit) dengan mekanisme callback webhook yang memverifikasi tanda tangan transaksi (signature key).
- Relational Storage (MySQL): Menyimpan data transaksi pesanan, riwayat chatting, katalog pakaian, dan audit penarikan uang.
Endpoint & modul utama
| Modul / Route | Method & Path | Fungsi Utama |
|---|---|---|
| Autentikasi & Profil | POST /login, POST /register |
Manajemen sesi pelanggan dan pendaftaran mitra penjahit baru |
| Verifikasi Toko | GET /admin/toko, POST /admin/toko/verifikasi |
Validasi identitas dan izin usaha penjahit oleh superadmin |
| Pesanan Kustom | POST /pesanan/checkout |
Pembuatan pesanan lengkap dengan form parameter CustomUkuran |
| Detail & Tracking | GET /pesanan/{id}/detail |
Pelacakan progres status pengerjaan pakaian secara transparan |
| Update Status | POST /pesanan/{id}/status |
Penjahit memperbarui tahap pengerjaan (potong kain, jahit, selesai) |
| Midtrans Webhook | POST /midtrans-callback |
Menerima notifikasi settlement pembayaran dari Midtrans |
| Tarik Saldo Penjahit | POST /tarik-uang/tambah |
Pengajuan penarikan keuntungan hasil pesanan yang telah rampung |
| Rekonsiliasi Kas | GET /admin/tarik-uang |
Dashboard superadmin untuk verifikasi dan upload bukti transfer dana |
| Direct Chat | GET /chat/{toko_id}, POST /chat/send |
Percakapan konsultasi kain dan model pakaian langsung |
Tantangan teknis
1. Penanganan fleksibilitas ukuran pakaian kustom.
Berbeda dari e-commerce pakaian biasa yang hanya memiliki ukuran standar (S, M, L, XL), jasa jahit membutuhkan fleksibilitas ukuran tubuh pemesan. Jika parameter ukuran disimpan dalam kolom teks bebas, data sulit divalidasi dan rawan memicu kesalahan potong kain. Solusinya, dirancang tabel terpisah custom_ukuran yang terhubung via relasi one-to-one dengan tabel pesanan, memvalidasi setiap input numerik (dalam satuan sentimeter) sebelum pesanan diserahkan ke penjahit.
2. Rekonsiliasi keuangan dan pencegahan double-withdrawal.
Dana pembayaran dari pembeli ditahan oleh platform (escrow-like system) dan baru dapat dicairkan oleh penjahit setelah pembeli mengonfirmasi pesanan diterima atau status pesanan berubah menjadi Selesai (status 3). Pada controller TarikUangController, kalkulasi saldo sisa penjahit dihitung secara ketat dengan mengurangkan total pesanan lunas terhadap total permohonan penarikan dana yang berstatus diverifikasi.
3. Keamanan akses data pesanan multi-tenant (multi-penjahit).
Satu penjahit tidak boleh melihat pesanan, pelanggan, atau saldo toko penjahit lain. Query pesanan dibungkus menggunakan relasi Eloquent whereHas('produk', fn($q) => $q->where('user_id', Auth::id())) untuk menjamin data scoping yang ketat di tingkat database.
4. Keandalan webhook Midtrans.
Untuk mencegah manipulasi URL callback, status pesanan tidak langsung diubah dari redirect browser sisi klien. Sistem hanya menandai pesanan terbayar saat server menerima webhook resmi dari Midtrans dan lolos verifikasi enkripsi SHA512 antara order ID, status code, gross amount, dan server key.
Yang ingin saya perbaiki
- Mengimplementasikan WebSocket real-time (Laravel Reverb / Pusher) pada modul chat agar pesan muncul instan tanpa polling.
- Menambahkan integrasi ekspedisi logistik pengiriman (API RajaOngkir / Shipper) untuk kalkulasi ongkos kirim kain otomatis.
- Mengotomatiskan proses disbursement pencairan dana mitra penjahit menggunakan API Midtrans Iris Payout.
Simulasikan siklus hidup webhook Midtrans & proteksi idempotensi terhadap duplicate webhook atau replay attack pada sistem Kos Kita / SewMe.
POST /midtrans/webhook
Payload & SHA-512 Hash
Verifikasi Server Key
Midtrans API Double-Check
Cek Status Transisi
getOriginal('status')
DB::transaction
Assign Room & Invoice PDF
// System ready. Click one of the action buttons above to simulate.
Analisis dampak pembuatan Compound Index pada tabel tagihan (50.000 records) untuk cron job tengah malam.
ref (Index Seek)
idx_user_bulan_tahun
1 row
0.002% of table
1.2 ms
99.2% faster
O(log N)
B+ Tree Traversal
Proyek Lainnya

API perpustakaan digital: peminjaman, permintaan buku, akun premium, dan pembayaran denda nontunai.
- Node.js
- Express
- MySQL
- +3

Platform komunitas edukasi tergamifikasi: mini-game Phaser (Kitty Attack), pipeline skor real-time, dan leaderboard 10 besar.
- Next.js
- Node.js
- Express
- +3

Aplikasi Flutter untuk belajar bahasa isyarat dengan deteksi AI on-device secara offline dan gamifikasi.
- Flutter
- TensorFlow Lite
- MediaPipe
- +2