Synaplan
开源 AI 软件平台,面向企业:自托管 AI 代理,符合 GDPR 的聊天机器人小部件,RAG 知识库,WhatsApp 与 Outlook AI,MCP,多模型路由。支持 Docker、Kubernetes 或在 Germ 托管。
AI 翻译
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗EV şarj sahası değerlendirme, AMG/StarCharge saha keşif skorlaması ve 7 yıllık gelir/finansman modelleme aracı. Tek sayfa vanilla JS uygulama + Vercel serverless API + Neon Postgres.
index.html Uygulama (UI + tüm hesap motoru). Senkron katmanı /api'ye konuşur.
login.html Giriş ekranı
api/sites.js GET tüm lokasyon + ekip · PUT lokasyon upsert · DELETE ?id=
api/team.js GET/PUT ekip üyesi listesi
lib/db.js Neon bağlantısı (lazy), şema bootstrap, JSON gövde okuma
schema.sql Referans şema (API otomatik kurar)
Veri modeli: site başına 1 satır sites(id, data jsonb, updated_at). Ekip config tablosunda team anahtarı.
Senkron: tarayıcı 4 sn'de bir GET /api/sites ile tazeler; değişiklikler 600 ms debounce sonrası PUT/DELETE ile yazılır. DB/API erişilemezse otomatik localStorage'a düşer (yerelde anında çalışır).
Sadece arayüz (DB'siz, localStorage): index.html'i tarayıcıda aç.
DB ile tam yığın:
npm install
npm i -g vercel@latest # CLI güncel olsun
vercel link # projeyi Vercel'e bağla
vercel integration add neon # Neon Postgres provision + DATABASE_URL enjekte
vercel env pull .env.local # env'i yerele çek
vercel dev # http://localhost:3000
Şema ilk istekte otomatik kurulur; elle kuracaksan schema.sql'i Neon SQL editöründe çalıştır.
vercel --prod
Neon Marketplace üzerinden eklendiyse DATABASE_URL tüm ortamlara otomatik gelir; ekstra ayar gerekmez.
Artifact sürümündeki kayıtları taşımak için: artifact'te Yedek indir (JSON) → bu uygulamada Yedek yükle.
E-posta + şifre ile giriş. Kayıt formu yok: hesapları siz tanımlarsınız. /api/sites ve /api/team oturum çerezi olmadan 401 döner; login.html ve /api/auth/* dışında her şey korumalıdır.
login.html Giriş ekranı (/login adresi de çalışır)
api/auth/login.js POST e-posta+şifre → HttpOnly çerez (7 gün)
api/auth/logout.js POST çerezi siler
api/auth/me.js GET oturum varsa { email }
lib/auth.js İmzalı oturum çerezi, deneme sınırı, requireAuth()
lib/password.js scrypt ile şifre hash'i
scripts/hash-password.mjs AUTH_USERS satırı üretir
Kurulum (Vercel → Settings → Environment Variables, Production + Preview):
SESSION_SECRET: en az 32 karakter rastgele metin.
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"AUTH_USERS: kullanıcılar, ; ile ayrılmış. Her kullanıcı için:
node scripts/hash-password.mjs [email protected] (şifreyi sorar, en az 10 karakter) çıktıyı ekleyin.
Örnek: [email protected]:scrypt:<salt>:<hash>;[email protected]:scrypt:<salt>:<hash>Kullanıcı eklemek/çıkarmak/şifre değiştirmek: AUTH_USERS'ı düzenleyip redeploy edin. Çıkarılan kullanıcının açık oturumları da geçersiz olur.
Güvenlik notları: şifreler scrypt ile hashlenir ve ortam değişkeninde düz metin tutulmaz. Çerez HttpOnly, SameSite=Lax, HTTPS'te Secure. Yazma uçları başka siteden gelen istekleri reddeder. Giriş denemeleri e-posta başına 8, IP başına 20 ile 15 dakikada sınırlıdır (sayaç Neon'da). Oturum belirteci durumsuzdur; çıkış çerezi siler, ama çalınmış bir belirteç süresi (7 gün) dolana kadar ya da SESSION_SECRET değişene kadar geçerlidir.
SESSION_SECRET veya AUTH_USERS tanımlı değilse API'ler 503, giriş sayfası "yapılandırılmamış" uyarısı verir (kapalı başarısız olur).