Synaplan
기업을 위한 오픈소스 AI 플랫폼
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 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).