Synaplan
开源 AI 软件平台,面向企业:自托管 AI 代理,符合 GDPR 的聊天机器人小部件,RAG 知识库,WhatsApp 与 Outlook AI,MCP,多模型路由。支持 Docker、Kubernetes 或在 Germ 托管。
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 ↗