Synaplan
Open-source AI platform for companies: self-hosted AI agents, GDPR-compliant chatbot widget, RAG knowledge base, WhatsApp and Outlook AI, MCP, multi-model routing. Docker, Kubernetes or hosted in Germ
Müşteri ve araç kartları, servis girişi, borç takibi, gelir raporları ve ekip yönetimi tek panelde.
Translation pending
BusinessGitHub @Muhammed-Ali-KtrOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Repository information has not been collected yet.
No updates detected yet. GitHub releases will appear here.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full 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.