Synaplan
Open-source AI platform for companies: self-hosted AI agents, GDPR-compliant chatbot widget, RAG knowledge base, WhatsApp and Outlook AI, MCP, multi-model routing. Docker, Kubernetes or hosted in Germ
Aplikasi pendaftaran event kustom, multi-event, dengan integrasi pembayaran manual & konfirmasi WhatsApp.
Translation pending
BusinessTypeScript · PLpgSQLGitHub @swriOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Platform event untuk peserta (mendaftar, membayar manual, cek status, melihat pembagian tim) dan penyelenggara (organisasi berisi beberapa panitia yang membuat event, memverifikasi, mencatat kehadiran, dan membagi kelompok). Awalnya untuk olahraga (mini soccer); kini setiap hal spesifik olahraga ada di modul jenis event.
/e/[slug]: formulir dinamis (teks, angka, email, HP, tanggal, pilihan, file, repeater untuk anggota tim)./status: cek tiket dengan kode + nomor HP yang cocok./e/[slug]/teams: pembagian tim resmi (nama & posisi saja, tanpa nomor HP) + kode acak (seed)./admin)Organisasi: buat organisasi, undang panitia lewat email, atur peran:
| Peran | Kelola organisasi | Kelola event | Edit data peserta | Verifikasi bayar | Check-in | Kelola undian |
|---|---|---|---|---|---|---|
| Pemilik / Admin | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Panitia | ✓ | ✓ | ✓ | ✓ | ✓ | |
| Kasir | ✓ | |||||
| Petugas Check-in | ✓ |
Super admin platform (pemilik aplikasi): melihat semua organisasi. Diberikan hanya lewat SQL (lihat Setup).
Event builder: jenis event, form, kuota per pendaftaran atau per peserta, waitlist, harga, template pesan.
Pendaftar: cari/filter, verifikasi/tolak (massal), daftar tunggu → promosi (kuota dicek ulang), check-in, ekspor XLSX/CSV, pesan WhatsApp sesuai status, bersihkan bukti bayar setelah event selesai.
Pemeliharaan Platform (super admin): pemakaian Storage, file yatim, hapus event/organisasi yang tidak terpakai beserta filenya.
Pembagian kelompok (bila diaktifkan di jenis event):
Strategi: acak seimbang, acak murni, seeding level, manual.
Batasan: pisahkan klub/tim asal yang sama, seimbangkan level, maksimal per kelompok.
Seed membuat hasil bisa diulang dan diaudit; hash daftar peserta ikut disimpan.
Publikasi + persetujuan perubahan: setelah dipublikasikan, memindah pemain atau mengacak ulang menjadi usulan yang perlu persetujuan panitia pengelola undian:
| Panitia pengelola undian | Persetujuan dibutuhkan (termasuk pengaju) |
|---|---|
| 1 | 1 (langsung berlaku) |
| 2–3 | 2 |
| 4 atau lebih | 3 |
Usulan otomatis ditolak bila sudah tidak mungkin mencapai jumlah itu, dan menjadi kedaluwarsa bila hasil sudah berubah duluan.
| Bagian | Teknologi |
|---|---|
| Framework | Next.js 16 (App Router, Cache Components, src/proxy.ts), React 19, TypeScript |
| Data | Supabase Postgres + RLS + RPC + Storage; mode demo di localStorage |
| Test | node:test + PGlite (Postgres WASM) untuk menguji migrasi, RLS, dan RPC tanpa server |
| Package manager | pnpm |
| Mode demo | Mode Supabase | |
|---|---|---|
| Aktif bila | URL/anon key kosong atau placeholder | keduanya diisi |
| Data & akun | per browser | Postgres + Supabase Auth |
| Login demo | [email protected] / admin123 (berperan super admin) | tidak ada |
| Hak akses | dicek di UI | ditegakkan RLS/trigger; /admin dicek di server oleh proxy |
Halaman publik (/, /e/[slug], /e/[slug]/teams) | dimuat di browser | dirender di server + cache (lihat di bawah) |
'use cache' (src/lib/server/public-cache.ts). Hasilnya sama untuk semua pengunjung: tampil cepat dan ramah SEO.generateMetadata mengisi judul, deskripsi, dan gambar cover per event. Saat link /e/<slug> dibagikan di WhatsApp/Facebook/X, pratinjau menampilkan event tersebut.src/app/actions/public-cache.ts, hanya untuk user yang login). Sisa kuota bisa tertinggal sampai ±1 menit setelah pendaftaran baru, tetapi kuota tetap dijaga RPC di database.src/proxy.ts.Mode demo hanya untuk demo. Aturan peran (kasir/check-in) di mode demo hanya membatasi tombol di UI.
Butuh Node.js ≥ 22.12 (disarankan 24) dan pnpm.
pnpm install
cp .env.example .env.local # biarkan placeholder => mode demo
pnpm dev # http://localhost:3000, login demo [email protected] / admin123
Urutannya: Supabase dulu (database, auth, storage), lalu Vercel (aplikasi), lalu kembali ke Supabase untuk mendaftarkan domain Vercel.
A1. Buat project
A2. Pasang skema database
Pilih salah satu cara:
This is the beginning of the README. Read the rest at the original. Read the full README ↗