Peran Saya dalam Project SpoorGo
SpoorGo adalah aplikasi pemesanan tiket kereta api berbasis web yang dikembangkan dengan teknologi modern Laravel 12, Livewire 3, dan Laravel Reverb untuk fitur realtime. Aplikasi ini dirancang untuk memberikan pengalaman pengguna yang cepat, aman, dan intuitif dalam mencari jadwal kereta (baik antarkota maupun lokal), memilih kursi, melakukan pembayaran melalui dompet digital internal, serta menyediakan dashboard khusus bagi operator untuk manajemen operasional di lapangan.
Sebagai Project Manager, saya bertanggung jawab penuh atas keseluruhan siklus pengembangan SpoorGo, mulai dari tahap perencanaan kebutuhan, pembuatan roadmap, koordinasi tim pengembang, pengelolaan timeline, hingga memastikan proyek dapat diselesaikan tepat waktu dan sesuai dengan visi yang telah ditetapkan.
Di samping peran manajerial tersebut, saya juga turun tangan langsung sebagai Backend Developer untuk bagian-bagian krusial, terutama dalam pengembangan:
- Logika server-side yang kompleks
- Integrasi berbagai API eksternal
- Pengolahan data transaksi & dompet digital
- Sistem keamanan autentikasi (termasuk OTP dan Google OAuth)
- Optimasi performa query database serta caching
Saat ini, SpoorGo telah berhasil di-deploy dan dapat diakses secara publik melalui subdomain resmi: https://spoorgo.healtech-aoen.com
Aplikasi ini merupakan bagian dari ekosistem HealTech — sebuah pryek dari organisasi mahasiswa Informatika Institut Teknologi Sains dan Kesehatan RS dr. Soepraoen yang bertujuan mengembangkan solusi teknologi untuk berbagai kebutuhan nyata, termasuk di bidang transportasi publik.
Fitur Utama SpoorGo (Ringkasan)
- Pencarian & pemesanan tiket kereta (intercity & lokal)
- Pemilihan kursi secara visual
- Sistem dompet digital dengan top-up & riwayat transaksi
- Autentikasi aman: Email + Password, Google OAuth, OTP untuk reset password
- Fitur realtime menggunakan Laravel Reverb (notifikasi saldo, update kursi, dll)
- Dashboard operator dengan hak akses terbatas (RBAC)
- Scan log aktivitas boarding (untuk operator di lapangan)
- UI responsif berbasis Livewire (tanpa banyak JavaScript custom)
Selanjutnya, saya akan menjelaskan beberapa file & struktur utama yang menjadi pondasi teknis dari aplikasi ini, mulai dari konfigurasi environment hingga organisasi kode.
1. File .env (Konfigurasi Environment) File .env merupakan pusat pengaturan konfigurasi aplikasi Laravel. 1.1 Konfigurasi Aplikasi Utama APP_NAME=SpoorGo APP_ENV=local APP_KEY=base64:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx APP_DEBUG=true APP_URL=https://spoorgo.healtech-aoen.com Penjelasan: • APP_NAME → Nama aplikasi (digunakan di title, email, dll) • APP_ENV → Lingkungan aplikasi (local/staging/production) • APP_KEY → Kunci enkripsi utama Laravel (wajib ada) • APP_DEBUG → Tampilkan detail error (aktif hanya saat development) • APP_URL → URL utama aplikasi (penting untuk link & OAuth) 1.2 Pengaturan Lokal & Bahasa APP_LOCALE=en APP_FALLBACK_LOCALE=en APP_FAKER_LOCALE=en_US 1.3 Logging & Keamanan Dasar BCRYPT_ROUNDS=12 LOG_CHANNEL=stack LOG_LEVEL=debug 1.4 Database (SQLite) DB_CONNECTION=sqlite Catatan: File database berada di database/database.sqlite Cocok untuk prototype, demo, atau pengembangan awal. 1.5 Session SESSION_DRIVER=file SESSION_LIFETIME=120 SESSION_ENCRYPT=false SESSION_SECURE_COOKIE=false 1.6 Cache & Queue CACHE_STORE=file QUEUE_CONNECTION=database 1.7 Realtime / Broadcasting (Laravel Reverb) BROADCAST_CONNECTION=reverb REVERB_APP_ID=my-app-id REVERB_APP_KEY=my-app-key REVERB_APP_SECRET=my-app-secret REVERB_HOST=localhost REVERB_PORT=8080 REVERB_SCHEME=http 1.8 Pengiriman Email (SMTP Gmail) MAIL_MAILER=smtp MAIL_HOST=smtp.gmail.com MAIL_PORT=587 MAIL_USERNAME=centralhisulive@gmail.com MAIL_PASSWORD=******** MAIL_ENCRYPTION=tls MAIL_FROM_ADDRESS=centralhisulive@gmail.com MAIL_FROM_NAME="SpoorGo!" 1.9 OAuth Google Login GOOGLE_CLIENT_ID=xxx.apps.googleusercontent.com GOOGLE_CLIENT_SECRET=xxxx GOOGLE_REDIRECT_URI=https://spoorgo.healtech-aoen.com/auth/google/redirect Catatan: Redirect URI harus sama persis dengan yang didaftarkan di Google Cloud Console. 1.10 Variabel Frontend (Vite) VITE_APP_NAME="${APP_NAME}"
2. File composer.json 2.1 Informasi Dasar Proyek "name": "laravel/laravel", "type": "project", "description": "The skeleton application for the Laravel framework.", "license": "MIT" 2.2 Dependensi Utama "require": { "php": "^8.2", "laravel/framework": "^12.0", "laravel/reverb": "^1.0", "laravel/socialite": "^5.14", "laravel/tinker": "^2.9", "livewire/livewire": "^3.0" } Fungsi utama: • Laravel core framework • Reverb → realtime websocket • Socialite → OAuth Google • Livewire → UI interaktif tanpa banyak JavaScript 2.3 Script Otomatis Setup Awal (yang biasa dijalankan) composer install cp .env.example .env php artisan key:generate php artisan migrate npm install npm run build
3. File routes/web.php (Routing Utama) Struktur Route SpoorGo: • Guest (belum login) - / - /login - /register - /forgot-password - /verify-otp - /reset-password • Google OAuth - /auth/google/start - /auth/google/callback - /auth/google/redirect • Semua route yang memerlukan login dilindungi: Route::middleware('auth')->group(function () { ... }); • Modul Kereta (prefix: /train) - Jadwal intercity & local - Pilih kursi - Checkout - Invoice • Modul Dompet (prefix: /wallet) - Top up - Riwayat transaksi - Debit (dummy untuk testing) • Area Operator (dilindungi middleware OperatorAccess) - Dashboard - Scan log - Manajemen user - Kelola jadwal & kursi - Manajemen stasiun
4. Daftar Model Utama (folder app/Models) • User • Ticket • Order • Schedule • Seat • Station • OtpCode • TopUpHistory • ScanLog • PaymentSystem (dummy)
5. Struktur Controller (folder app/Http/Controllers) Dikelompokkan berdasarkan domain/fitur: • AuthController → login, register, google oauth • ForgotPasswordController → reset password + OTP • TicketController → pencarian jadwal, pemesanan • CheckoutController → proses pembayaran & invoice • WalletController → top up, riwayat dompet • Operator/DashboardController • Operator/ScanController • Operator/UserController • Operator/ScheduleController • FaceVerificationController
6. Folder database/migrations
Folder database/migrations berisi seluruh file skema database aplikasi SpoorGo. Setiap file migration merepresentasikan perubahan struktur tabel dan dijalankan secara berurutan berdasarkan timestamp pada nama filenya.
Pendekatan migration memastikan:
- Konsistensi struktur database di semua environment
- Kemudahan rollback jika terjadi masalah
- Tracking riwayat perubahan database secara historis
- Kolaborasi tim yang lebih aman
Berikut adalah daftar migration utama yang digunakan dalam proyek SpoorGo, dikelompokkan berdasarkan fungsi:
6.1 Migration Default Laravel (Core Framework)
- 0001_01_01_000000_create_users_table.php Tabel utama untuk autentikasi pengguna Kolom penting: id, name, email, password, remember_token, created_at, updated_at
- 0001_01_01_000001_create_cache_table.php Tabel untuk menyimpan cache aplikasi (file atau database driver)
- 0001_01_01_000002_create_jobs_table.php Tabel untuk antrian job/queue Digunakan untuk proses asynchronous seperti pengiriman email, OTP, dan notifikasi
6.2 Master Data (Data Dasar Perkeretaapian)
- 2025_12_11_070421_create_stations_table.php Tabel stasiun kereta api Kolom utama: name, code, city, region, is_active
- 2026_01_07_044208_create_trains_table.php Tabel data kereta (kereta api itu sendiri) Digunakan sebagai referensi pada jadwal dan kursi
6.3 Logging & Keamanan
- 2025_12_13_095108_create_scan_logs_table.php Mencatat setiap aktivitas scan tiket oleh operator (QR / Face Recognition)
- 2026_01_04_040120_create_login_logs_table.php Log aktivitas login pengguna (untuk audit keamanan)
- 2026_01_07_040221_add_type_to_scan_logs_table.php Menambahkan kolom type (QR, Face, Gate, Manual)
6.4 Jadwal & Relasi Stasiun
- 2026_01_05_043422_create_schedules_table.php Tabel jadwal perjalanan kereta
- 2026_01_05_043423_create_jadwal_stasiun_table.php Pivot table (many-to-many) antara jadwal dan stasiun Menentukan urutan: stasiun asal → transit → tujuan
- 2026_01_07_040410_add_train_type_to_schedules.php Menambahkan kolom train_type (Intercity / Lokal) untuk filtering
6.5 Kursi & Tiket
- 2026_01_05_043425_create_seats_table.php Tabel kursi per kereta per jadwal Status: available, occupied, locked (saat checkout)
- 2026_01_06_200923_create_tickets_table.php Tabel tiket yang sudah dibeli pengguna Relasi ke: user, schedule, seat
- 2026_01_07_041500_enhance_tickets_table.php Penambahan kolom tambahan: status tiket, metadata, dll
- 2026_01_06_200000_create_ticket_verifications_table.php Mencatat hasil verifikasi tiket saat scan di gate/stasiun
6.6 Transaksi & Pembayaran
- 2026_01_05_043423_create_orders_table.php Tabel transaksi checkout (order ≠ ticket) Berisi informasi sebelum pembayaran selesai
- 2026_01_05_043424_create_payments_table.php Log detail pembayaran setiap order
- 2026_01_05_043425_create_payment_systems_table.php Tabel simulasi metode pembayaran (dummy debit, siap ekspansi ke QRIS/e-wallet)
- 2026_01_06_195426_create_top_up_histories_table.php Riwayat top-up saldo dompet pengguna
6.7 User Enhancement & Keamanan Tambahan
- 2026_01_05_080140_add_face_photo_to_users_table.php Kolom untuk menyimpan path foto wajah (face verification)
- 2026_01_05_085500_add_membership_type_column.php Kolom membership_type (dasar fitur premium di masa depan)
- 2026_01_06_183936_add_google_fields_to_users_table.php Kolom google_id, provider untuk integrasi Google OAuth
- 2026_01_06_195426_add_balance_to_users_table.php Kolom balance untuk saldo dompet digital SpoorGo Pay
- 2026_01_06_210000_create_otp_codes_table.php Tabel penyimpanan kode OTP (reset password, verifikasi email
7. File check_db_status.php
File ini adalah script diagnostik mandiri yang berjalan langsung melalui terminal (CLI) tanpa melalui route atau controller Laravel. Fungsi utama:
- Memverifikasi koneksi database SQLite berjalan normal
- Mengecek keberadaan tabel-tabel krusial
- Melihat struktur kolom tanpa harus masuk ke aplikasi
- Membantu debugging cepat saat proses deployment atau troubleshooting Struktur utama script:
Keuntungan Menggunakan SpoorGo
- Hemat waktu: Tidak perlu antre atau datang ke loket
- Lebih efisien: Perencanaan perjalanan jadi lebih mudah dengan data akurat
- Aman & transparan: Pembayaran digital + riwayat jelas
- Personalisasi: Data tersimpan, proses booking lebih simpel
- Ramah lingkungan: Kurangi penggunaan kertas tiket
Konteks Akademik & Relevansi SpoorGo Dalam dunia pendidikan teknologi informasi, SpoorGo menjadi studi kasus nyata tentang penerapan sistem informasi terintegrasi untuk layanan publik. Mahasiswa bisa mempelajari bagaimana antarmuka pengguna, database, keamanan, dan manajemen proyek bersatu dalam satu aplikasi. Proyek ini juga relevan dengan tema transformasi digital, user experience, dan inovasi teknologi untuk masyarakat. Untuk informasi lebih lanjut terkait Informatika Soepraoen <https://informatika.itsk-soepraoen.ac.id/>
Sebagai Project Manager & Backend Developer di baliknya, saya bangga melihat SpoorGo menjadi salah satu bentuk kontribusi nyata dalam memajukan teknologi informasi untuk kebutuhan sehari-hari.
Selamat mencoba SpoorGo di https://spoorgo.healtech-aoen.com/ Link Youtube untuk penjelasan lebih detail https://youtu.be/BPgaGfGtr24