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).