You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Split bill Gacoan โ gak pusing lagi urusan bayar-bayaran!
Aplikasi web untuk menghitung pembagian tagihan makan bareng secara otomatis. Khusus dirancang buat menu Mie Gacoan.
๐ Project Overview
GacoSplit lahir dari masalah klasik: abis makan bareng, pada sibuk ngitung pake kalkulator HP, ujung-ujungnya ada yang ngerasa dibayarin kurang atau kebanyakan. Aplikasi ini nyelesain itu semua โ tinggal masukin pesanan, beres.
Cara Kerja
Tahap
Kegiatan
1
Buat sesi dan masukin nama temen-temen yang ikut makan
2
Pilih menu Gacoan โ ada yang pesen sendiri, ada yang dimakan bareng
Aplikasi ini monolitik โ backend dan frontend jalan dalam satu server Spring Boot. User buka halaman di browser, JavaScript ngomong sama API backend, backend ngurus data dan perhitungan.
Tech Stack
Layer
Teknologi
Backend
Java 17+, Spring Boot 4.0.6, Maven
Frontend
Thymeleaf, Vanilla JS, TailwindCSS v3 (CDN)
Database
H2 (file-based: ~/test)
ORM
Spring Data JPA + Hibernate 7
๐ Struktur Proyek
Lokasi
Konten
src/main/java/.../gacosplit/
Kode backend โ controller, service, model, repository
src/main/resources/templates/
Halaman Thymeleaf (HTML)
src/main/resources/static/
Aset frontend statis โ CSS, JavaScript
src/main/resources/static/js/
app.js, api.js, github.js โ logika frontend
src/main/resources/static/css/
styles.css โ kustom styling
public/
Aset branding & visual โ Banner, Logo, UI preview screenshot
docs/
Dokumentasi lengkap โ lihat tabel di bawah
๐ Function Penting
Function
Lokasi
Penjelasan
hitungTagihan()
app.js
Otak perhitungan di frontend โ ngitung total + PPN tiap orang
renderSummary()
app.js
Nampilin hasil perhitungan ke layar biar user bisa liat
formatHasil()
app.js
Ubah hasil jadi teks rapi buat di-copy ke WhatsApp
calculate()
SessionController.java
Endpoint API yang panggil CalculationService buat hitung tagihan
findBySessionIdAndIsSharedTrue()
ItemRepository.java
Query otomatis buat ambil semua item bersama dalam satu session