Arsitektur Keseluruhan Sistem Vertex8
| Operator | PT Hive Prime Wellness |
| Jumlah sistem | 5 subdomain |
| Database | 1 Supabase project bersama |
| Hosting | 1 akun cPanel bersama |
| Bahasa | PHP (backend), Vue 3 (frontend) |
| Developer | Achmad Setya Surya Pamungkas |
Vertex8 (HYROX Training Club, Serpong) menjalankan 5 sistem digital terpisah yang semuanya terhubung ke satu project Supabase yang sama dan di-hosting dalam satu akun cPanel yang sama. Ini penting dipahami: perubahan skema database di satu sistem bisa berdampak ke sistem lain, dan semua sistem berbagi data member/transaksi yang sama.
- Diagram arsitektur
- Tabel ringkasan 5 sistem
- Prinsip penting yang perlu dipahami semua staff teknis
Diagram Arsitektur
(1 project bersama)")] subgraph Publik JOIN["join.vertex8.co.id
Self-checkout & registrasi"] V8S["v8score.vertex8.co.id
V8 Real Assessment"] STAGE["stage.vertex8.co.id
Kompetisi HYROX"] end subgraph Internal DEV["dev.vertex8.co.id
ERP Staff"] end subgraph Member MEM["member.vertex8.co.id
Portal Member"] end JOIN --> SB V8S --> SB STAGE --> SB DEV --> SB MEM --> SB DEV -.->|kelola semua data| SB
Tabel Ringkasan 5 Sistem
| # | Domain | Fungsi Utama | Pengguna |
|---|---|---|---|
| 1 | dev.vertex8.co.id | ERP internal — kelola member, transaksi, booking, badge/tier | Staff (Admin, Coach, Sales, Finance) |
| 2 | join.vertex8.co.id | Self-checkout publik — beli paket, drop-in, daftar member baru | Calon member & tamu umum |
| 3 | member.vertex8.co.id | Portal member — booking kelas, V8 Passport, voucher/miles | Member terdaftar (login OTP WA) |
| 4 | v8score.vertex8.co.id | Tes fitness assessment (funnel sales calon member) | Calon member, tim sales |
| 5 | stage.vertex8.co.id | Registrasi & operasional kompetisi HYROX | Peserta lomba, juri, staff venue |
Prinsip Penting
vertex8_config/ (isinya kredensial Supabase) letaknya di root akun cPanel, tapi jumlah "naik folder" (dirname(__DIR__, N)) yang dibutuhkan buat sampai ke situ BEDA-BEDA tergantung struktur nested subdomain di cPanel kamu. Jangan asal copy path dari satu subdomain ke subdomain lain — selalu diverifikasi dulu.
dev.vertex8.co.id — Sistem ERP
| Jenis | Staff-only, login wajib |
| Stack | PHP + PostgREST (Supabase) |
| Navigasi | Terpusat di includes/nav_config.php |
| Jumlah grup navigasi | 11 grup |
| Jumlah sub-modul | ~45 halaman |
dev.vertex8.co.id adalah pusat kendali operasional Vertex8 — satu-satunya sistem yang dipakai staff internal (Admin, Coach, Sales, Finance) untuk mengelola member, transaksi, booking kelas, dan seluruh program loyalitas (V8 Passport). Semua modul didaftarkan lewat satu file konfigurasi navigasi terpusat (nav_config.php), jadi menambah modul baru cukup edit satu file untuk otomatis muncul di sidebar dan sistem izin akses.
- Dashboard
- Members
- POS
- Vouchers & Miles
- Booking & Check-In
- Finance
- Settlements
- TC (Training Center)
- V8 Score
- V8 Passport
- CRM & Tools
- Settings
1. Dashboard
Halaman pertama yang muncul setelah login — ringkasan angka operasional harian (member aktif, transaksi hari ini, kelas berjalan). Titik masuk, bukan modul kerja utama.
2. Members
| Sub-halaman | Fungsi |
|---|---|
index.php | Daftar & kelola data member (CRUD utama) |
rfid.php | Assign/kelola kartu RFID member untuk check-in |
founder100.php | Kelola status "Founder" (100 member pertama) |
prereg.php / prerenewed.php | Pre-registrasi & pre-renewal (member yang daftar/perpanjang sebelum efektif berjalan) |
bulk_effective.php | Set tanggal efektif massal (misal migrasi member lama) |
Status Aktivasi Member
Setiap member punya kolom activation_status dengan 4 kemungkinan nilai:
menunggu aktivasi Pending --> Active: Tanggal efektif tercapai
3. POS (Point of Sale)
| Sub-halaman | Fungsi |
|---|---|
index.php | Kasir utama — keranjang belanja, checkout, pilih metode bayar |
simple.php | Versi ringkas kasir (transaksi cepat, item terbatas) |
products.php | Kelola katalog produk yang dijual di kasir |
redemption.php | Redeem produk pakai Miles/voucher (bukan bayar tunai) |
invoice_print.php | Cetak/export invoice transaksi |
report.php | Laporan penjualan POS |
Alur Transaksi POS
setelah uang beneran masuk] D --> G[Paket/voucher ter-grant ke member] F --> G
Pending, dan paket/voucher BARU ter-grant ke member setelah staff eksplisit klik "Konfirmasi Pembayaran" — bukan otomatis begitu transaksi dibuat. Ini untuk mencegah kasir salah tandai "sudah lunas" padahal uang belum benar masuk.
Diskon Otomatis Berbasis Tier
Sejak fitur V8 Passport aktif, ada mekanisme opsional: jika toggle "Allow Auto Tier Discount" dinyalakan (lihat bagian V8 Passport), sistem otomatis memotong harga sesuai tier member — khusus untuk pembelian bundling, dideteksi dari keberadaan field periodDays di tiap item keranjang. Kalau ada satu saja item non-bundle di keranjang, diskon otomatis tidak berlaku sama sekali untuk transaksi itu.
4. Vouchers & Miles
| Sub-halaman | Fungsi |
|---|---|
index.php | Kelola katalog voucher (definisi: diskon %, kategori, syarat) |
bundles.php | Kelola paket bundle (isi paket, harga, durasi hari) |
miles.php | Kelola program Miles (poin loyalitas, produk redeem) |
wallet.php | Lihat saldo voucher/miles per member (dompet member) |
Voucher yang benar-benar dimiliki seorang member disimpan di tabel vertex8_memberinventory (terpisah dari katalog voucher vertex8_vouchers) — jadi katalog itu "produk yang bisa diberikan", sementara inventory adalah "apa yang sudah dimiliki member tertentu".
5. Booking & Check-In
| Sub-halaman | Fungsi |
|---|---|
schedules.php | Kelola jadwal kelas (tanggal, jam, coach, kapasitas) |
classes.php | Kelola master data jenis kelas |
checkin.php | Check-in member (scan RFID) ke kelas yang dibooking |
noshow.php | Kelola penalti no-show (member booking tapi tidak datang) |
reviews.php | Kelola feedback/review member atas kelas |
class_report.php | Laporan kehadiran per kelas |
event_report.php | Laporan kehadiran event khusus |
analytics.php | Analitik booking (kelas favorit, jam ramai, dst) |
Status Check-In
class_name di log check-in bisa berisi "Gate Access" — ini catatan tap RFID di pintu masuk gym, bukan check-in ke kelas tertentu. Modul manapun yang menghitung "jumlah check-in kelas" wajib mengecualikan baris ini.
6. Finance
| Sub-halaman | Fungsi |
|---|---|
coa.php | Chart of Accounts — struktur akun keuangan |
expenses.php | Catat pengeluaran operasional |
pnl.php | Laporan Profit & Loss |
settlement.php | Rekonsiliasi settlement pembayaran (QRIS/gateway) |
7. Settlements
| Sub-halaman | Fungsi |
|---|---|
referral.php | Kelola kode referral & komisi member yang mengajak member baru |
commission.php | Kelola komisi sales/salesman |
report_member.php | Laporan settlement per member |
Kode referral tercatat di tabel vertex8_Referrals (kode dimiliki satu member), lalu setiap transaksi yang memakai kode itu tercatat di kolom referral_code pada vertex8_Transactions — dari situ komisi dihitung.
8. TC (Training Center)
| Sub-halaman | Fungsi |
|---|---|
race.php | Catat hasil race/kompetisi member (dipakai kriteria badge "Race Ready") |
bodycomp.php | Catat pengukuran body composition (dipakai kriteria badge "Transformation") |
padel.php | Kelola fasilitas & jadwal Padel |
achievement.php | Kelola misi/achievement tambahan member |
9. V8 Score
Panel admin untuk mengelola submission V8 Real Assessment (lihat dokumentasi lengkap di halaman v8score.vertex8.co.id) — lihat hasil kuis calon member dan kelola benchmark skor.
10. V8 Passport
| Sub-halaman | Fungsi |
|---|---|
| Manage Badges | CRUD badge — nama, kategori, kriteria, poin, icon |
| Manage Tiers | Atur range persentase & benefit tiap tier |
| Member Progress | Cari member, lihat status badge, award/cabut manual, grant benefit tier |
check-in, transaksi] --> B[Badge Engine
cron harian jam 3 pagi] B --> C{Kriteria badge
terpenuhi?} C -->|Ya| D[Badge earned
+ notif WA 8x8] C -->|Tidak| E[Tetap locked] D --> F[Poin terkumpul] F --> G{Tier tercapai?} G -->|Ya| H[Staff grant benefit
manual via Member Progress] H --> I[Diskon: unlimited, generate kapan saja] H --> J[Miles/Bundle/Merch: sekali per tier,
checklist per-item terkunci]
Tier & Benefit
| Tier | Range Poin | Diskon | Miles | Bundle |
|---|---|---|---|---|
| Hybrid Trainee | 0–33% | 5% | +250 | — |
| Hybrid Athlete | 34–66% | 10% | +750 | Season Pass 1 Bulan |
| Elite Athlete | 67–100% | 30% | +1500 | Season Pass 3 Bulan |
SOP: Menambah Badge Baru
- Buka Manage Badges → + Badge Baru.
- Isi Nama, Deskripsi, pilih Kategori (menentukan warna & ikon default).
- Pilih Tipe:
Milestone(permanen setelah diraih) atauStatus(bisa hilang lagi kalau syaratnya tidak terpenuhi, misal "Always On Time"). - Pilih Kriteria dari dropdown (25 jenis tersedia, dikelompokkan per kategori) — preview kalimat otomatis muncul untuk memastikan logikanya benar.
- Isi Nilai Target dan Poin.
- Upload icon (opsional) — PNG/SVG rasio 1:1, drag-drop langsung ke kotak upload.
- Simpan. Badge otomatis mulai dihitung di run badge engine berikutnya (bukan real-time).
SOP: Grant Benefit Tier ke Member
- Buka Member Progress, cari nama member.
- Kartu "Tier Saat Ini" muncul menampilkan tier & persentase poin.
- Untuk diskon: klik "Generate Voucher" — bisa berkali-kali kapan pun dibutuhkan.
- Untuk Miles/Bundle/Merchandise: centang item yang mau diberikan (item yang sudah pernah diberikan otomatis terkunci), lalu klik "Grant Item Terpilih".
- Untuk merchandise fisik: setelah di-grant sistem, serahkan barangnya secara manual ke member — sistem hanya mencatat status "eligible", tidak mengurus logistik fisik.
{{1}} {{2}} bukan {nama}. Ada kill-switch toggle terpisah untuk notif ini, default mati.
11. CRM & Tools
| Sub-halaman | Fungsi |
|---|---|
whatsapp.php | Broadcast WhatsApp ke daftar member/lead |
wiki.php | Catatan internal tim (mirip dokumentasi mini di dalam ERP) |
Free Class (free_class/index.php) | Kelola pendaftaran trial class gratis (funnel calon member) |
Settings
| Sub-halaman | Fungsi |
|---|---|
users.php | Kelola akun staff & hak akses |
password.php | Ubah password akun sendiri |
nav_catalog.php | Referensi katalog navigasi (terhubung ke nav_config.php) |
highlight.php / landing.php | Kelola konten landing page publik |
logs.php | Log aktivitas staff di sistem |
wa_reports.php | Laporan status pengiriman WhatsApp |
Prinsip Navigasi
Semua menu di atas didaftarkan di satu file: includes/nav_config.php. Struktur registrasinya berbentuk array asosiatif per grup, tiap item berisi label, path file, dan (opsional) role yang diizinkan. Menambah modul baru = tambah satu baris di file ini, otomatis muncul di sidebar DAN masuk ke sistem checklist izin akses per role — tidak perlu edit dua tempat terpisah.
join.vertex8.co.id — Self-Checkout Publik
| Jenis | Publik, tanpa login wajib |
| Payment gateway | iPay88 (QRIS) |
| Fungsi utama | Beli paket/drop-in/event, daftar member |
join.vertex8.co.id adalah pintu masuk publik untuk siapa pun yang mau beli paket membership, drop-in class, atau event tanpa perlu login staff. Pembayaran diproses lewat iPay88 (QRIS), dan setiap transaksi disimpan sebagai status Pending dulu sampai webhook pembayaran mengonfirmasi.
Alur Checkout
Fitur Utama
| Fitur | Keterangan |
|---|---|
| Registrasi & pembelian paket | Member baru daftar sekaligus beli bundle |
| Drop-in booking | Booking kelas satuan tanpa membership |
| Referral tracking | Kode referral tercatat di transaksi |
| Reviews publik | Testimoni member (rating 4–5 bintang) ditampilkan carousel |
| Auto tier discount | Diskon otomatis terpotong kalau member eligible & beli bundling (lihat V8 Passport) |
Catatan Historis Penting
_dropin_slots di DALAM object item, padahal backend membacanya dari top-level payload. Efeknya: pembayaran sukses tapi booking tidak pernah ter-create, tanpa error apa pun (webhook baca data kosong lalu keluar diam-diam). Kalau menambah field baru ke payload checkout, selalu pastikan strukturnya top-level, bukan nested di dalam item.
member.vertex8.co.id — Portal Member
| Jenis | Login khusus member (OTP WhatsApp) |
| Stack Frontend | Vue 3 (CDN, tanpa build step) |
| Fitur andalan | V8 Passport (badge & tier) |
member.vertex8.co.id adalah portal self-service untuk member yang sudah terdaftar. Login memakai OTP lewat WhatsApp (8x8 Connect), lalu member bisa booking kelas, cek riwayat, redeem voucher/miles, dan — fitur paling baru — melihat V8 Passport mereka sendiri.
Navigasi Utama
| Menu | Fungsi |
|---|---|
| Profile | Info member, status paket |
| Vouchers | Voucher & bundle yang dimiliki |
| Miles | Saldo Miles, redeem produk |
| Arena | Jadwal kelas (swipe) + My Bookings (digabung jadi satu tab dengan sub-navigasi) |
| Passport | Kartu identitas digital, badge, tier, benefit |
V8 Passport — Tampilan Member
Halaman Passport menampilkan kartu identitas yang bisa di-swipe antar tier (preview tier yang belum tercapai muncul dengan overlay gembok), badge yang sudah/belum diraih, dan status klaim benefit (warna hijau = sudah diklaim, kuning = sudah eligible tapi menunggu staff proses).
bukan tier yang sedang di-preview]
Otentikasi
Login memakai OTP WhatsApp lewat 8x8 Connect (bukan gateway tidak resmi). Sesi tersimpan di server, request API member selalu perlu memberId yang tervalidasi.
v8score.vertex8.co.id — V8 Real Assessment
| Jenis | Publik, funnel sales |
| Tujuan | Kuis fitness untuk calon member |
| Output | Radar chart, PDF score card, kirim via WA |
v8score.vertex8.co.id adalah alat assessment fitness yang dipakai tim sales untuk menarik calon member — pengunjung mengisi kuis performa (lari, angkat beban, dst), lalu mendapat skor visual (radar chart) dan bisa "membuktikan" skornya dengan submit nama & nomor WhatsApp untuk dapat kartu skor resmi dalam bentuk PDF.
Metodologi Skoring
Skor dihitung dari 5 kategori yang saling overlap, masing-masing berbobot 20%:
| Kategori | Bobot |
|---|---|
| Strength | 20% |
| Cardio | 20% |
| Functional | 20% |
| Endurance | 20% |
| Hybrid Engine | 20% |
Perhitungan pakai lookup band diskrit (bukan interpolasi linear) berdasarkan dokumen resmi coach "VERTEX PERFORMANCE TEST" — tabel skor terpisah untuk pria/wanita khusus kategori Run, Row, dan Pull-up.
per kategori] C --> D[Radar chart 5 kategori] D --> E[Download Score Card PNG] D --> F["Prove Your Score"
submit nama + WA] F --> G[PDF resmi via TCPDF] G --> H[Kirim otomatis via 8x8 WA]
Integrasi ke ERP
Modul admin V8 Score ada di dev.vertex8.co.id (grup navigasi "V8 Score"), dipakai staff untuk melihat submission dan mengelola benchmark skor.
public_html/v8score.vertex8.co.id/ (di DALAM public_html utama, bukan sejajar), jadi jumlah "naik folder" ke vertex8_config/ beda dari subdomain lain. Selalu cek pesan error bootstrap.php yang menunjukkan path mana saja yang sudah dicoba, sebelum menambah path baru.
stage.vertex8.co.id — STAGE by VERTEX8
| Jenis | Publik + Admin role-based |
| Payment | iPay88 (QRIS) |
| Role admin | Superuser, Judge Leader, Judge Member |
STAGE by VERTEX8 adalah platform lengkap untuk menyelenggarakan kompetisi format HYROX (6 kategori, individu/tim) — mulai dari pendaftaran & pembayaran peserta, penjadwalan wave/heat, panel juri untuk penilaian real-time hari-H, leaderboard publik, sampai kartu finisher digital yang dikirim via WhatsApp.
Halaman Publik
| Halaman | Fungsi |
|---|---|
| Landing Page | Video background, info 6 kategori kompetisi |
| Registrasi | Form individu/tim, QRIS iPay88, redeem Super Voucher |
| Card Hub | Akses kartu finisher lewat link WA hasil "Push Card Wave" |
| Operation (Check-in/Redeem/Status) | Scan QR staff untuk check-in & redeem add-on hari-H |
Panel Admin (Role-Based)
| Modul | Fungsi | Role Minimum |
|---|---|---|
| Dashboard | Ringkasan angka kompetisi | Superuser |
| Events / Categories | Kelola event & kategori lomba | Superuser |
| Race Scheduler | Atur wave/heat, party code wajib, wave locking | Superuser |
| Judge Dashboard | Input skor/waktu real-time, stop per-tim | Judge Leader / Judge Member |
| TV Dashboard | Pengaturan tampilan leaderboard layar venue | Superuser |
| Finisher Card Settings | Kustomisasi desain kartu finisher | Superuser |
| Transactions / Report | Monitoring pembayaran, export data peserta | Superuser |
Alur Hari-H
setelah "Push Card Wave"
Catatan Teknis Penting
- Wave locking: begitu sebuah wave sudah dimulai lewat Judge Board, jadwalnya terkunci (read-only) — tidak bisa diedit sembarangan untuk mencegah kekacauan data di tengah lomba.
- Penilaian per-tim: satu klik di Judge Dashboard menghentikan waktu SEMUA anggota tim sekaligus dengan waktu selesai yang identik.
- Notifikasi WA resmi (
wave_assignment_reminder) pakai template 8x8 Connect yang sudah di-approve, kategori Utility, dengan attachment dokumen (PDF) dan tombol "Visit Website".
Dokumen ini dibuat berdasarkan riwayat pengembangan sistem Vertex8. Kalau ada bagian yang sudah berubah dan belum ter-update di sini, mohon diinfokan ke developer untuk direvisi.