Synaplan
开源 AI 软件平台,面向企业:自托管 AI 代理,符合 GDPR 的聊天机器人小部件,RAG 知识库,WhatsApp 与 Outlook AI,MCP,多模型路由。支持 Docker、Kubernetes 或在 Germ 托管。
AI 翻译
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证正在加载完整 README。 以下为已保存的摘录。
Indonesia Web3 Hackathon 2026 — Submission Platform Website submission untuk Indonesia Web3 Hackathon (#WhereBuildersBuild). Full Next.js (frontend + backend), database Google Sheets.查看完整 README ↗
Website submission untuk Indonesia Web3 Hackathon (#WhereBuildersBuild). Full Next.js (frontend + backend), database Google Sheets.
.data/submissions.json (enak buat development)npm install
npm run dev
Buka http://localhost:3000. Tanpa setup apa pun, data tersimpan di .data/submissions.json.
https://docs.google.com/spreadsheets/d/INI_SHEET_ID/editclient_email (bentuknya [email protected]).env.example jadi .env.local):GOOGLE_SHEET_ID=isi_sheet_id
[email protected]
GOOGLE_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\nMII...\n-----END PRIVATE KEY-----\n"
GOOGLE_PRIVATE_KEY diambil dari field private_key di file JSON (biarkan \n apa adanya, bungkus dengan tanda kutip).
Header kolom dibuat otomatis saat submission pertama masuk (tab submissions).
Wajib diisi sebelum peserta masuk. Fallback file lokal
.data/submissions.jsonhanya untuk development. Filesystem Vercel read-only, jadi kalau deploy tanpa tiga env var di atas, setiapPOST /api/submissionsgagal dengan500dan tidak ada submission yang tersimpan.
npm run check:sheets
Menguji berurutan: env var lengkap → format private key → autentikasi → akses dokumen → izin tulis. Uji tulis dilakukan dengan membuat tab sementara lalu menghapusnya lagi. Itu penting: Sheet yang ter-share sebagai Viewer lolos semua tes baca dan baru gagal saat peserta pertama menekan submit.
Tiap kegagalan menyebut penyebab dan cara perbaikannya. Jalankan juga setelah mengisi env
var di Vercel — tarik dulu nilainya ke lokal dengan vercel env pull .env.local.
GET /api/submissions/export mengembalikan CSV berisi seluruh submission, siap dibuka
di Excel atau Google Sheets (sudah ber-BOM UTF-8, jadi huruf beraksen tidak rusak).
Ekspor ini memuat email kontak tim, jadi endpoint-nya berproteksi token. Set env var:
EXPORT_TOKEN= # bikin dengan: openssl rand -hex 32
Tanpa EXPORT_TOKEN, endpoint mati (gagal tertutup, bukan terbuka).
# cara aman: token di header
curl -H "Authorization: Bearer $EXPORT_TOKEN" \
https://situsmu.vercel.app/api/submissions/export -o submissions.csv
# cara praktis: token di query, bisa langsung diklik di browser
# (hindari kalau bisa — token ikut tercatat di log akses dan riwayat browser)
https://situsmu.vercel.app/api/submissions/export?token=ISI_TOKEN
Kolom: id, createdAt, updatedAt, projectName, tagline, teamName, tracks,
network, contractAddress, contractExplorerUrl, githubUrl, demoVideoUrl,
demoUrl, problemStatement, solution, description, teamSize, teamMembers,
extraLinks, email, logoUrl. Kolom editCodeHash sengaja tidak ikut diekspor.
npx vercel
Tambahkan 3 env vars di atas lewat Vercel Dashboard > Project > Settings > Environment Variables, lalu redeploy. Selesai.
app/
page.tsx Landing
submit/ Form submission + layar sukses (edit code)
projects/ Gallery + filter track + search
projects/[id]/ Detail (markdown, mermaid, YouTube embed)
projects/[id]/edit/ Verifikasi edit code lalu form edit
prizes|schedule|faq/ Halaman info
api/submissions/ REST API (GET, POST, PUT, verify)
components/ Navbar, form, markdown editor/renderer, dll
lib/ db (Sheets + fallback lokal), types, validasi
apps/web — situs publik (Next.js 14, port 3000)
apps/backoffice — panel organizer (Next.js 14, port 3001, khusus role admin)
packages/db — skema Drizzle + query layer + migrasi (Turso/libsql)
packages/auth — SIWE + session iron-session + RBAC (dipakai kedua app)
db/seed.sql — seed edisi hackathon (idempotent)
Perintah dari root: pnpm dev · pnpm build · pnpm test · pnpm typecheck · pnpm check (biome).
indonesia-web3-hackathon — hanya kredensial Vercel Production.iw3h-dev — dipakai lokal & preview (lihat .env.example tiap app).packages/db/src/schema.ts → pnpm --filter @iw3h/db generate → pnpm --filter @iw3h/db migrate (env menentukan DB target). Jangan ubah DB langsung lewat shell.Login = connect wallet + tanda tangan SIWE (modal Reown). Session di cookie httpOnly;
role (participant/judge/admin) selalu dibaca dari tabel users per request.
Bootstrap admin pertama (sekali saja):
turso db shell iw3h-dev "UPDATE users SET role='admin' WHERE address='0xALAMAT_KAMU'"
(Sign-in dulu di app supaya row user-nya ada; ulangi di DB produksi saat deploy.)