SURIMA League
Klasemen yang bisa dipercaya karena satu mesin menghitungnya.
SURIMA League mencatat hanchan sekali, menghitung placement, uma, oka, dan chombo dari aturan musim itu sendiri, lalu menjaga klasemen yang selalu berjumlah nol.
Alur satu hanchan saat ini
6 langkah
- MusimAturan dan uma ditetapkan
- EntriEmpat kursi, skor mentah
- PratinjauMesin berjalan langsung
- SimpanPoin dibekukan saat entri
- KlasemenOka diturunkan, berjumlah nol
- KembaliPemain membaca tabel
Hanchan berikutnya dicatat
Liga hidup di dalam spreadsheet.
Satu orang mengetik empat skor, menyalin rumus ke bawah, dan berharap kolom uma benar. Placement, oka, dan chombo adalah aturan yang didekati spreadsheet, dan satu skor yang salah ketik tetap tinggal di klasemen.
Setiap musim aturannya berubah. Saat spreadsheet diperbarui, hasil musim lalu ikut berubah, karena rumus adalah satu-satunya catatan bagaimana hasil itu dihitung.
Pemain tidak punya alasan membuka spreadsheet di antara sesi. Klasemen hanya tempat mencari angka, bukan tempat kembali.
Aturannya pindah ke dalam musim.
Klasemen yang hanya spreadsheet dengan formulir web di atasnya tidak bisa menepati janji ini. Mesinnya adalah produknya.
Rumus disalin ke bawah
Mesin skor murni
Satu fungsi menentukan pratinjau dan hasil tersimpan, jadi keduanya tidak bisa berselisih.
Aturan diubah di tempat
Poin dibekukan saat entri
Perubahan uma musim berlaku untuk hanchan berikutnya dan membiarkan riwayat tetap.
Oka diketik sebagai kolom
Oka diturunkan
Klasemen selalu berjumlah nol karena distribusinya dihitung, bukan dimasukkan.
Satu spreadsheet bersama
Meja milik tiap parlor
Multi-tenant: tidak ada kumpulan pemain bersama, dan bukan anggota mendapat 404.
Tautan yang tidak dibuka
Alasan untuk kembali
Streak, level, lencana, ELO, dan trofi berdiri di samping klasemen.
Matematikanya adalah kepercayaannya.
Tiga peran, akun sungguhan, dan satu aturan: jangan pernah menampilkan angka yang tidak akan dihitung mesin.
Mesin skor
Placement, uma, oka, dan chombo dari aturan musim. Murni dan teruji, serta modul yang sama di balik pratinjau entri dan hasil tersimpan.
Aturan musim
Setiap musim membawa uma, poin awal, dan oka sendiri. Poin dibekukan saat entri, jadi riwayat tidak ditulis ulang oleh perubahan berikutnya.
Peran dan sewa data
Admin parlor, pemain, dan super-admin SURIMA. Setiap halaman dan aksi melewati penjaga; row-level security menjadi lapisan cadangan.
Permukaan pemain
Klasemen, riwayat hanchan lengkap, statistik pribadi, level, lencana, dan streak. Pemain masuk dengan Google dan meminta bergabung ke parlor.
Meja milik tiap parlor
Sembilan preset warna per parlor, mode gelap mengikuti OS, dan musim publik yang bisa dibaca pengunjung tanpa masuk.
Permukaan berbagi
Kartu klasemen digambar dua kali, untuk canvas dan gambar OG, agar hasil bisa berpindah ke grup komunitas.
Dibangun di atas aturan komunitasnya sendiri.
Istilah riichi tetap Jepang di kedua bahasa karena begitulah pemain berbicara. Antarmuka dua bahasa lewat cookie dan dirender sudah diterjemahkan.
- Next.js 16 · React 19
- Klasemen server-rendered, formulir entri, dan Server Actions.
- Supabase
- Postgres, autentikasi Google, dan penyimpanan aset milik parlor.
- Drizzle ORM
- Skema, migrasi, dan query bertipe.
- Vitest
- Uji mesin skor, gerbang nyata produk ini.
Hasil dicatat sekali, tabelnya berjumlah nol.
Klasemen liga dihitung dengan aturan tiap musim, setiap hasil dicatat sekali. Pemain bisa membaca tabel dari ponsel di antara sesi dan melihat persis posisinya.
- Pratinjau dan penyimpanan memakai satu fungsi.
- Perubahan aturan memengaruhi permainan berikutnya, bukan arsip.
- Oka diturunkan, jadi tabel berjumlah nol.
- Setiap parlor mendandani mejanya sendiri tanpa menyalin aplikasi.

Klien
SURIMA
SURIMA adalah komunitas riichi mahjong Indonesia di Surabaya. League menjalankan musim parlor sungguhan di league.surima.id, bersama aplikasi academy dan skor komunitas.
Ceritakan satu proses kerja. Kita petakan bersama.
Ceritakan tugas yang paling menyita waktu tim Anda, dan bagaimana prosesnya berjalan.
Percakapan pertama gratis, tanpa komitmen.