Sheet 2 of 6 · Garapan · Exploded assembly
Garapan
Student freelance marketplace
Specification
- Role
- Fullstack Developer
- Team
- Capstone team project · I owned nearly the full build
- Stack
- Kotlin, Jetpack Compose, NestJS 11, Prisma, PostgreSQL, Next.js 16, TypeScript, Tailwind CSS, Midtrans, Firebase FCM, Socket.io, Cloudinary
- Repos
- mobile + admin public · API private
- Drawn by
- Praffi Ramadhani
- Date
- 2026-06-30
- Status
- archived
- Sheet
- 2 / 6
Overview
Garapan is an IT freelancer marketplace for Indonesian university students. Mahasiswa freelancers offer jasa and take projects; clients post work, hire, pay through escrow, chat, and review.
This started as a capstone team project. I owned nearly the full build across mobile, backend, and admin, including architecture, features, integrations, and shipping.
The problem
“That works until money, scope, delivery, and disputes enter the picture.”
Student freelancers and small clients often meet through chat groups and informal referrals. Without a shared order flow, escrow, and moderation, trust breaks down and both sides waste time.
Garapan turns that informal loop into a marketplace with clear roles, paid orders, wallet withdrawals, reviews, reports, and an ops console for the cases that need human judgment.
A1 · Part 1 of 5
Android app
Android client for mahasiswa and clients, covering auth, profiles, marketplace search, jasa and projects, proposals, orders, Midtrans checkout, wallet, chat, reviews, notifications, and support.
Built with
- Kotlin and Jetpack Compose
- MVVM, Clean Architecture, Hilt
- Retrofit, DataStore, Coil
- Google Sign-In, FCM, Midtrans Snap checkout
A debug APK is available from the mobile repository README.
Landing Page Bisnis UMKM
Mulai Dari
Rp 750.000
Andi Pratama
Web Development - Universitas Indonesia
Deskripsi Jasa
Responsive landing page with CMS-ready structure.
Ulasan Pelanggan
4.0
1 Ulasan
Garapan Demo Client
Landing page selesai sesuai brief dan mudah dipresentasikan.
Ringkasan Pesanan
Landing Page Bisnis UMKM
Oleh Andi Pratama
Metode pembayaran dipilih di halaman Midtrans setelah Anda mengetuk Bayar Sekarang.
Anda mengajukan sengketa
Menunggu tinjauan admin
Alasan
Pembayaran Jasa: Landing Page Bisnis UMKM
Laporkan Masalah Pesanan
Silakan jelaskan masalah secara rinci. Alasan ini akan ditinjau oleh Admin untuk penyelesaian escrow sengketa.
0/1000
Minimal 10 karakter.
Ajukan Dispute?
Pesanan akan dikunci dalam status sengketa dan dana escrow ditahan sampai admin menyelesaikan. Tindakan ini tidak dapat dibatalkan.
A2 · Part 2 of 5
Admin console
Internal Next.js ops dashboard for users, moderation, transactions, disputes, support chat, articles, analytics, and settings. The code is public at admin-garapan. The deployed console stays behind login, so the demo below rebuilds its dispute page.
Built with
- Cookie-based admin sessions through BFF route handlers
- React Query tables, moderation and dispute workflows
- Support chat with attachments, article management, dashboard analytics
Laporan Terbuka
1
Ditolak
0
Total Laporan
1
Selesai Diselesaikan
0
| ID Laporan | Pihak Terkait | Jenis Masalah | Status | Tanggal | Aksi |
|---|---|---|---|---|---|
| 80000000...0001 | CD Citra Digital Pelapor - Klien AP Andi Pratama Terlapor - Mahasiswa | Hasil pekerjaan belum sesuai ruang lingkup yang disepakati dalam brief. | Terbuka | 11 Nov 2026 | |
| Tidak ada hasil Coba sesuaikan kata kunci pencarian Anda atau periksa filter yang sedang aktif. | |||||
Menampilkan 1-1 dari 1 data
Dispute & Laporan
TerbukaPelapor (Klien)
Citra Digital
citra.klien@garapan.test
Terlapor (Mahasiswa)
Andi Pratama
andi.mahasiswa@garapan.test
Deskripsi Masalah
Hasil pekerjaan belum sesuai ruang lingkup yang disepakati dalam brief.
Keputusan Resolusi
Pilih keputusan escrow dan catat alasan resmi untuk audit internal.
Keputusan Tercatat
Keputusan Dana Escrow
Nominal Refund Klien
Catatan Resolusi Resmi
Diselesaikan pada
A3 – A5 · Parts 3 to 5
NestJS API
NestJS service for JWT auth, Google Sign-In, catalog, orders, escrow settlement, payments, chat, notifications, moderation, and admin endpoints, on Prisma and PostgreSQL.
Also on the API side
- Shared API contracts, so mobile and admin stay aligned on orders, reviews, notifications, and moderation states
- Health and readiness checks, and error monitoring
- A3 NestJS API auth · escrow · private
- A4 Payments & push Midtrans · FCM · Socket.io
- A5 PostgreSQL via Prisma
Key technical decisions
-
Split by client, not by feature.
Mobile owns the marketplace UX. The NestJS API owns auth, money movement, and domain rules. Admin owns internal ops behind a protected session, so marketplace users and moderators never share an app.
-
Payments stay explicit.
Midtrans handles checkout, while escrow settlement and wallet withdrawals stay under API control. Chat and push notifications keep both parties in the loop without turning the product into another unstructured chat group.
-
The backend stays private, on purpose.
It holds auth, payment, and settlement logic, so public proof lives in the mobile and admin repositories instead.
Current status
Archived as a completed capstone build.
The mobile repository and admin repository are public. The backend remains private. The admin deploy is an internal console behind login; the dispute demo above is a rebuild of one page.