Synaplan
기업을 위한 오픈소스 AI 플랫폼
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Oto tamir servisleri, elektrikçiler, kaportacılar ve usta dükkanları için müşteri, araç, servis kaydı, borç/alacak ve gelir takibi yapan web uygulaması.
Altyapı: ön yüz saf HTML/CSS/JavaScript; arka uç ve veritabanı Supabase (PostgreSQL + Auth). Sunucu kodu yoktur; tüm kurallar supabase/migrations içindeki SQL ile veritabanında uygulanır.
| Abonelik (aylık/yıllık) | Tek seferlik lisans | |
|---|---|---|
| Altyapı | Ortak OSION Supabase projesi | Müşterinin kendi Supabase projesi |
| Kurulum | Müşteri siteden kayıt olur | Operatör kurar (aşağıdaki adımlar) |
| Plan | basic / pro, current_period_end ile süreli | lifetime, süresiz |
İki model de aynı kodu ve aynı SQL dosyalarını kullanır; yalnızca config.js farklıdır.
| Bölüm | Açıklama |
|---|---|
| Genel Durum Paneli | Müşteri/araç sayısı, toplam borç ve tahsilat, son 6 ayın iş hacmi grafiği, ödeme dağılımı, borçlu araçlar |
| Müşteri & Araç Kayıt | Müşteri ve araç ekleme, hızlı arama |
| Müşteriler / Araçlar | Kartlar, marka klasörleri, işlem geçmişi, düzenleme |
| Tarihler | Günlere göre araç giriş takvimi |
| Servis Girişi | 16 iş koluna göre usta ücretleri, kısmi/nakit/havale/kart ödeme |
| Servis Notları / Borç Listesi | Geçmiş kayıtlar, tahsilat |
| Araç sahiplerine e-posta | Servis fişi ve hazır şablonlu mesajlar (aracınız hazır, bakım, ödeme hatırlatması) işletmenin kendi e-posta adresinden gönderilir |
| İşletme Ayarları | İşletme profili ve logo, ekip ve davetler, e-posta hesabı, abonelik bilgisi, şifre değiştirme, veri dışa aktarma, hesap kapatma |
| Yetki | Sahip | Yönetici | Çalışan |
|---|---|---|---|
| Kayıt görüntüleme, ekleme, düzenleme, tahsilat | ✓ | ✓ | ✓ |
| Kayıt silme | ✓ | ✓ | – |
| İşletme profili, çalışan daveti/çıkarma | ✓ | ✓ (yalnız çalışanları çıkarır) | – |
| Yönetici daveti, rol değiştirme, veri dışa aktarma, hesabı kapatma | ✓ | – | – |
Yetkiler veritabanında uygulanır; arayüzdeki gizlemeler yalnızca kolaylık içindir.
| Adres | Dosyalar | Açıklama |
|---|---|---|
/ | index.html, site.css, site.js | Tanıtım sitesi: özellikler, paketler ve limitleri (fiyatlar veritabanından canlı gelir), SSS. "Giriş Yap" → /panel#giris, "Ücretsiz Dene" → /panel#kayit |
/panel | panel.html, platform.js, app.js, catalog.js, scanner.js, mail.js, style.css | İşletme paneli (giriş, kayıt, davet ve uygulama) |
/admin | admin.html, admin.js, admin.css | Sistem yönetimi: genel bakış, işletmeler, abonelikler ve ödemeler, duyurular, planlar ve fiyatlar, kullanıcılar, işlem kayıtları, giriş bilgilerim |
E-posta doğrulama / şifre sıfırlama / davet bağlantıları köke (/) gelirse otomatik olarak /panel'e yönlendirilir.
catalog.js içindedir. Listede olmayan marka/model yazılınca işletmenin kendi listesine (vehicle_catalog) eklenir ve tüm ekip görür.vehicles.model_year).vendor/zxing.min.js) ile, ön cam/ruhsat yazısı Tesseract OCR ile okunur (yalnızca okutma açıldığında jsDelivr'den yüklenir). Okunan numara kaydetmeden önce kullanıcıya onaylatılır. Kamera yalnızca https üzerinde çalışır.supabase/migrations/0004_platform_admin.sql çalıştırıldıktan sonra yönetici hesabını SQL Editor'den bir kez ekleyin (hesap önce siteden normal şekilde oluşturulmuş olmalı):
insert into public.platform_admins (user_id)
select id from auth.users where email = '[email protected]';
Yönetici, işletmelerle aynı giriş sayfasından girer; işletmesi yoksa doğrudan /admin'e yönlendirilir, varsa panel menüsünde Sistem Yönetimi bağlantısı görünür. Plan müşteri/araç/kullanıcı limitleri veritabanında uygulanır.
0003_vehicle_catalog.sql ve 0004_platform_admin.sql dosyalarını çalıştırın.npx vercel --prod). Sıra önemlidir: model yılı sütunu yoksa uygulama yılı kaydetmeden çalışmaya devam eder, ancak katalog/yönetim özellikleri göç olmadan çalışmaz.index.html Tanıtım sitesi (site.css, site.js)
panel.html Uygulama kabuğu, giriş/kurulum ekranları, sayfalar ve modaller
admin.html Sistem yönetimi paneli (admin.js, admin.css)
catalog.js Araç marka/model kataloğu ve seçim kutuları
scanner.js Kamera ile şasi no / davet QR okuma, QR üretimi
vendor/ ZXing barkod kütüphanesi (Apache-2.0)
kullanim-kosullari.html Kullanım Koşulları (taslak, doldurulmalı)
gizlilik.html KVKK Aydınlatma Metni (taslak, doldurulmalı)
vercel.json Vercel yayın ayarları ve güvenlik başlıkları
tools/build.js Yayın paketi (dist/) ve CSP üretimi
style.css Tema ve bileşen stilleri
config.js Dağıtım ayarları: Supabase adresi ve anon anahtarı, ürün adı
platform.js Supabase istemcisi, oturum, giriş/kayıt/davet, kurulum sihirbazı, işletme ayarları
app.js Müşteri/araç/servis ekranları, grafikler, arama
mail.js İşletme e-posta ayarları, servis fişi ve müşteri mesajı gönderimi
supabase/migrations/ Veritabanı şeması, güvenlik kuralları (RLS) ve fonksiyonlar
supabase/functions/send-mail/ E-postayı işletmenin SMTP hesabıyla gönderen Edge Function
supabase/templates/ Supabase hesap e-postalarının Türkçe şablonları
tests/ Veritabanı (gömülü Postgres) ve e-posta içeriği testleri
tools/dev-server.js Yerel geliştirme sunucusu
Gereksinim: Node.js 18+.
npm install
npm test
npm run dev
npm run dev uygulamayı http://localhost:8787 adresinde açar; veriler config.js'teki Supabase projesine gider.
vercel.json hazırdır: Vercel node tools/build.js ile yalnızca uygulama dosyalarını dist/ klasörüne paketler ve güvenlik başlıklarını (CSP, HSTS, X-Frame-Options vb.) ekler. Yasal metinlerde doldurulmamış [DOLDURUN: …] alanları yayını durdurmaz; sitede "(güncellenecek)" olarak görünür ve build uyarı verir. Alanları doldurup yeniden yayınlamanız yeterlidir. Boş alan varken yayını durdurmak isterseniz build komutunu node tools/build.js --siki yapın.
Yerelde yayın paketini denemek için:
npm run preview
kullanim-kosullari.html ve gizlilik.html içindeki [DOLDURUN: …] alanlarını (müsait olduğunuzda) doldurup yeniden yayınlayın; metinleri bir avukata kontrol ettirin.config.js → supportContact alanına destek e-postanızı yazın.send-mail Edge Function'ını dağıtın (aşağıda).npx vercel --prod
İlk çalıştırmada Vercel hesabınıza giriş yapıp yeni proje (osion) oluşturmayı onaylayın; ayarları değiştirmeyin (vercel.json kullanılır).https://alanadiniz.com (yayın adresi)https://alanadiniz.com/** ve geliştirme için http://localhost:8787[email protected] gibi alan adınıza ait bir adres yapın.Supabase'de proje oluşturun (bölge: Frankfurt / eu-central-1).
SQL Editor → supabase/migrations/ içindeki dosyaları sırayla yapıştırıp Run ile çalıştırın.
Authentication > URL Configuration
https://osion.com.tr)http://localhost:8787Authentication > Providers > Email: "Confirm email" açık kalsın; en az şifre uzunluğunu 8 yapın.
Hesap e-postaları (SMTP) — Supabase'in yerleşik e-posta servisi yalnızca proje ekibindeki adreslere ve saatte birkaç e-posta gönderir; gerçek müşteriler için aşağıdaki "Brevo SMTP" adımlarını uygulayın.
Authentication > Emails > Templates: supabase/templates/ içindeki şablonları ilgili sekmelere yapıştırın:
| Sekme | Dosya | Konu |
|---|---|---|
| Confirm signup | confirmation.html | OSION hesabınızı doğrulayın |
| Reset Password | recovery.html | OSION şifre sıfırlama |
| Change Email Address | email_change.html | OSION e-posta adresi değişikliği |
Project Settings > API: Project URL ve anon anahtarını config.js'e yazın. service_role anahtarını asla ön yüze koymayın.
send-mail Edge Function (araç sahiplerine e-posta için) — aşağıdaki "Edge Function dağıtımı" adımlarını uygulayın.
Statik dosyaları (index.html, style.css, config.js, platform.js, app.js, mail.js, car logo/) bir statik barındırmaya (Vercel, Netlify vb.) yükleyin. supabase/, tests/, tools/ ve node_modules/ yayınlanmamalıdır.
[email protected] veya kendi e-postanız) ekleyip doğrulayın. Alan adınız olduğunda Domains bölümünden alan adını da doğrulayın (SPF/DKIM); e-postaların spam'e düşmemesi için önemlidir.OSIONsmtp-relay.brevo.com · Port: 587Bir kez yapılır; kod güncellenince 3. komut tekrar çalıştırılır.
npx supabase login
npx supabase link --project-ref <proje-ref>
npx supabase functions deploy send-mail
<proje-ref>, proje adresindeki alt alan adıdır (https://<proje-ref>.supabase.co). Fonksiyonun ihtiyaç duyduğu SUPABASE_URL, SUPABASE_ANON_KEY ve SUPABASE_SERVICE_ROLE_KEY değerlerini Supabase otomatik sağlar; ek ayar gerekmez.
mail_log tablosuna yazılır.select private.set_tenant_plan((select id from public.tenants limit 1), 'lifetime', 'active', null);
smtp.gmail.com · Port: 465send-mail Edge Function'ını müşterinin projesine de dağıtın (npx supabase link --project-ref <müşteri-proje-ref> ardından deploy). Araç sahiplerine e-posta için müşteri aynı Gmail ve uygulama şifresini İşletme Ayarları > E-posta bölümüne girer.| Komut | Ne yapar |
|---|---|
select private.set_tenant_plan('<işletme-id>', 'pro', 'active', now() + interval '1 month'); | Planı ve abonelik dönem sonunu atar. Planlar: trial, basic, pro, lifetime; durumlar: trialing, active, past_due, canceled. |
select private.set_tenant_plan('<işletme-id>', 'lifetime', 'active', null); | Süresiz lisans. |
select private.restore_tenant('<işletme-id>'); | Kapatılmış ama henüz silinmemiş işletmeyi geri açar. |
select private.purge_closed_tenants(); | Saklama süresi (30 gün) dolan kapalı işletmeleri kalıcı siler. pg_cron etkinse her gün 03:00'te otomatik çalışır. |
select id, name, plan_id, subscription_status, trial_ends_at, current_period_end from public.tenants; | İşletmeleri ve aboneliklerini listeler. |
Planların kullanıcı sınırları public.plans tablosundadır.
Yazma (kayıt ekleme/düzenleme/silme) şu durumlarda açıktır; aksi halde işletme verilerini yalnızca okuyabilir:
trialing ve trial_ends_at gelecekte (yeni işletmeler 30 gün deneme ile başlar),active ve current_period_end boş (süresiz) ya da en fazla 3 gün geçmiş,past_due ve current_period_end en fazla 7 gün geçmiş.Ödeme sağlayıcısı (iyzico / PayTR) entegrasyonu henüz yoktur; planlar operatör tarafından elle atanır.
(tenant_id, id) bileşik yabancı anahtarıyla kurulduğundan başka işletmenin kaydına bağlanmak imkânsızdır. Kayıtların tenant_id, id ve created_at alanları güncellemeyle değiştirilemez.html şablonuyla üretilir; logo olarak yalnızca PNG/JPEG/WEBP kabul edilir.send-mail Edge Function'ı (service_role) çözebilir. Alıcı adresi istemciden alınmaz, veritabanındaki müşteri kaydından okunur.audit_log tablosu yalnızca kimlikleri (işletme, kullanıcı, kayıt) içerir; kişisel veri yazılmaz.Ürün ücretli satılacağı için satış öncesinde lisans/kullanım koşulları, mesafeli satış sözleşmesi, KVKK aydınlatma metni ve (veriler yurt dışında barındırıldığı için) yurt dışına aktarım hükümleri netleştirilmelidir.