Synaplan
기업을 위한 오픈소스 AI 플랫폼
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
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:
여기까지가 README 앞부분입니다. 나머지는 원문에서 읽을 수 있습니다. README 전문 보기 ↗