Case Study / 04


BERSIHINAJA.

Clean, modern web platform interface for a cleaning service marketplace application.

The Vision

BersihinAja is an award-winning on-demand cleaning service platform rebuilt from CodeIgniter 3 to Laravel 13 + Livewire 4 SPA. It features 3-role RBAC (admin, customer, worker), Midtrans payment with webhook signature verification, a worker KYC verification system, regional order pool matching with pessimistic row locking, and Haversine GPS geofencing to enforce on-site worker attendance.

BERSIHINAJA detail 1
BERSIHINAJA detail 2
+3

Development Roadmap

Phase 01: Database Architecture & Authentication

Designed PostgreSQL schema with 10+ tables (users, services, packages, orders, order_workers, order_packages, reviews). Implemented Spatie Permission for three-tier role-based access (customer, pekerja, admin) and Google OAuth login via Laravel Socialite.

Phase 02: Landing Page & Service Catalog

Built responsive landing page with hero section, service showcase, and "how it works" flow. Developed dynamic service catalog (Small/Medium/Large) with package add-ons, and region-based filtering using Indonesia Wilayah API for province and regency selection.

Phase 03: Order System & GPS Geofencing

Implemented Livewire-powered order creation form with real-time total calculation, GPS coordinate capture via browser Geolocation API, regency-based worker filtering, and multi-worker selection with minimum cleaner validation per service tier.

Phase 04: Midtrans Payment Integration

Integrated Midtrans Snap API for secure payment processing with order confirmation page, snap token generation, payment callback handling, and sandbox simulator for development testing. Supports automatic order status updates on successful payment.

Phase 05: Worker Dashboard & Order Pool

Built worker dashboard with KYC verification flow (KTP upload, region selection), availability toggle, and earnings tracking. Implemented real-time order pool system where workers can browse unclaimed paid orders and claim them with one click.

Phase 06: Admin Dashboard & Management

Developed admin panel with analytics overview (total orders, revenue, user counts), CRUD service manager with image upload and package assignment, user management with role filtering, and order management with status tracking across all stages.

Phase 07: UI/UX Polish & Multi-role Routing

Applied daisyUI custom theme with consistent dark aesthetic across all pages. Implemented role-based routing (customer → landing, pekerja → worker dashboard, admin → admin panel), order history with receipt generation, and profile management with avatar upload.