Güven merkezi
Bir güvenlik incelemesinin sorduğu sorular için tek sayfa: veriye kim dokunuyor, onu ne koruyor ve nerede duruyor.
Kayıt son güncelleme: 2026-09-07
Buradaki her şey herkese açık depodaki dosyalardan yazıldı ve her iddia dayandığı belgeyi adıyla anıyor. Henüz doğru olmayan bir şey varsa bu sayfa onu da söylüyor — yalnızca güven veren yarısını yayımlayan bir güven sayfası, hiç olmamasından daha az değerlidir.
Kısaca
Tek sunucu
Uygulama, MySQL veritabanı ve yedekleri tek bir Plesk yönetimli sunucuda duruyor. Verinizi tutan yönetilen bir veritabanı hizmeti, nesne deposu ya da CDN yok.
Satış yok, faturalama yok
Platform mentee ve mentorlar için ücretsizdir. Kod tabanında ödeme sağlayıcısı, reklam ağı veya veri simsarı yok.
Varsayılan olarak isteğe bağlı
Yapay zekâ, takvim eşitleme, barındırılan video, push ve tüm analitik sağlayıcıları, işletici ortam değişkenlerini ayarlayana kadar uykuda kalır — çoğu ayrıca kişinin kendi onayını da ister.
CRM üzerinde izleyici yok
Analitik ve canlı sohbet yalnızca herkese açık kabuktan yüklenir, hiçbir zaman uygulamanın kendisinden değil. Oturum açılmış bir sayfa görüntülemesi bir mentee’nin adını sağlayıcıya taşırdı; bu yüzden mümkün değil.
Mentee ve mentorlar için ücretsiz. Bu sayfadaki hiçbir şey ücretli bir eklenti değil.
Bu kurulumu kim işletiyor
Bu kurulumu Mehmet Erşahin işletiyor. Tüm iletişim bilgileri künyede yayımlanıyor.
Alt işleyiciler
Bu kod tabanının veri gönderebileceği her üçüncü taraf. Liste dağıtım yapılandırma dosyasından türetilir; bu yüzden koddan sessizce geri kalamaz.
| Alt işleyici | Amaç | Veri kategorileri | Barındırma konumu | DPA / SCC dayanağı | Dağıtıma göre isteğe bağlı |
|---|---|---|---|---|---|
| Plesk-managed server (operator)DATABASE_URL | Uygulama konteynerini, MySQL veritabanını ve yedekleri çalıştırır. | Tüm uygulama verisi: hesaplar, profiller, CV’ler, etkileşim kayıtları, mesajlar, yüklenen belgeler. | İşleticinin tek sunucusu; ülke talep üzerine bildirilir. | İşletici ile barındırma sağlayıcısı arasındaki doğrudan sözleşme. | Zorunlu |
| Primary SMTP relaySMTP_HOST, SMTP_USER, SMTP_FROM | Bir insana ulaşması gereken postalar: adres doğrulama, davetler, parola sıfırlama, mesaj bildirimleri. | Alıcı adı ve e-posta adresi, konu ve gövde, imzalı token taşıyan bağlantılar. | İşletici seçer; hazır gelen varsayılan, dağıtımın kendi posta sunucusudur. | İşleticinin seçtiği aktarıcıyla doğrudan sözleşme. | Zorunlu |
| Bulk SMTP relaySMTP_BULK_HOST, SMTP_BULK_FROM | Özetler, hatırlatmalar, duyurular ve bülten için ikinci giden kanal. | Birincil aktarıcıyla aynı kategoriler, yalnızca acil olmayan postalar için. | İşletici seçer; bilinçli olarak çoğu zaman farklı bir sağlayıcı ve gönderen alan adı. | O aktarıcıyla doğrudan sözleşme. | İsteğe bağlı |
| AnthropicANTHROPIC_API_KEY | Yapay zekâ destekli CV okuma ve yapay zekâ asistan özellikleri. | Yüklenen bir CV’den çıkarılan metin ve çevresinde kurulan istem. | Anthropic’in API’si. | İşleticinin taraf olduğu Anthropic ticari şartları. | İsteğe bağlı + onay |
| Google CalendarGOOGLE_CLIENT_ID, GOOGLE_CALENDAR_ENABLED | Uygulama içi toplantıları kullanıcının kendi Google Takvimi’ne yansıtmak. | Toplantı başlığı, açıklaması, başlangıç ve bitiş saati, katılımcı adresleri ve o kullanıcının OAuth token’ları. | Google. | İşleticinin taraf olduğu Google API şartları. | İsteğe bağlı + onay |
| 8x8 JaaSJAAS_APP_ID, JAAS_API_KEY_ID, JAAS_PRIVATE_KEY | Bire bir toplantılar için barındırılan video odaları. | Görünen ad, oda kimliği ve canlı ses ile video akışı. | 8x8’in JaaS altyapısı. | İşleticinin taraf olduğu 8x8 JaaS şartları. | İsteğe bağlı |
| meet.jit.si (8x8) | JaaS yapılandırılmadığında varsayılan video odası, JaaS çağrısı başlayamadığında yedek, ayrıca ayın JaaS katılımcı kotası dolduğunda her toplantının yapıldığı yer. | Görünen ad, oda kimliği ve canlı ses ile video akışı. | 8x8’in herkese açık örneği. | Yalnızca kamuya açık hizmet şartları — sözleşme yok. | Zorunlu |
| Browser push servicesVAPID_PUBLIC_KEY, VAPID_PRIVATE_KEY | Uygulama kapalıyken yeni mesajlar için arka plan bildirimleri. Hizmeti biz değil, abonenin tarayıcısı seçer. | Tarayıcının verdiği push uç noktası, şifreli yük ve göndereni tanımlayan iletişim adresi. | Tarayıcı üreticisinin push hizmeti — Google, Mozilla veya Apple. | Yok: protokol gönderene bir muhatap sunmaz. Yükler abonenin kendi anahtarlarına şifrelenir. | İsteğe bağlı + onay |
| Plausible AnalyticsNEXT_PUBLIC_PLAUSIBLE_DOMAIN | Yalnızca herkese açık tanıtım sayfalarında sayfa görüntüleme ölçümü. Buna ek olarak, bir ziyaretçi herkese açık demoyu açtığında tek bir anonim tıklama olayı gönderilir: bağlantının sayfadaki yeri ve kişiye dair hiçbir şey. | Sayfa URL’si, yönlendiren, kaba cihaz ve tarayıcı verisi. Çerezsiz. | İşletici seçer; varsayılan plausible.io ve kendi sunucunuzda barındırılabilir. | İşleticinin taraf olduğu Plausible DPA’sı — kendi sunucunuzda barındırıldığında gerekmez. | İsteğe bağlı + onay |
| PostHogNEXT_PUBLIC_POSTHOG_KEY | Yalnızca herkese açık tanıtım sayfalarında sayfa görüntüleme ölçümü. Otomatik yakalama, oturum kaydı ve yerel depolama kodda kapalıya zorlanır. Buna ek olarak, bir ziyaretçi herkese açık demoyu açtığında tek bir anonim tıklama olayı gönderilir: bağlantının sayfadaki yeri ve kişiye dair hiçbir şey. | Sayfa URL’si, yönlendiren, kaba cihaz ve tarayıcı verisi. | İşletici seçer; hazır gelen varsayılan PostHog’un AB bölgesidir. | İşleticinin taraf olduğu PostHog DPA’sı. | İsteğe bağlı + onay |
| Google Analytics 4NEXT_PUBLIC_GA4_MEASUREMENT_ID | Yalnızca herkese açık tanıtım sayfalarında, IP anonimleştirmesiyle sayfa görüntüleme ölçümü. Buna ek olarak, bir ziyaretçi herkese açık demoyu açtığında tek bir anonim tıklama olayı gönderilir: bağlantının sayfadaki yeri ve kişiye dair hiçbir şey. | Sayfa URL’si, yönlendiren, kısaltılmış IP, kaba cihaz ve tarayıcı verisi. | Google. | İşleticinin taraf olduğu Google Analytics şartları ve standart sözleşme maddeleri. | İsteğe bağlı + onay |
| tawk.to | Herkese açık ana sayfadaki canlı sohbet aracı. | Ziyaretçinin IP adresi ve sohbete yazdığı her şey. | tawk.to. | İşleticinin taraf olduğu tawk.to şartları. | İsteğe bağlı + onay |
| GitHub Actions + ghcr.io | Sürekli entegrasyon, konteyner imajı derlemeleri ve sunucunun çektiği kayıt defteri. İstek işleme değil, tedarik zinciri. | Kaynak kod, derleme günlükleri ve konteyner imajları. Son kullanıcı kişisel verisi yok. | GitHub’ın barındırdığı koşucular ve kayıt defteri. | İşleticinin taraf olduğu GitHub şartları. | Zorunlu |
Kontroller
Güvenlik özetinin kısa hâli. Her madde depodaki bir belgeye dayanıyor.
Kapalıya düşen yetkilendirme
Kapsam tek bir fonksiyondan geçer. Kapsam kuralı olmayan bir rol, filtresiz sorgu yerine 403 alır; yani yeni bir rol eklemek, kuralları yazılana dek hiçbir erişim vermez. CI’da regresyon testi var.
Oturumlar ve iki adımlı doğrulama
bcrypt parola özetleme, JWT oturumları, role dayalı iki adımlı doğrulama zorunluluğu ve “tüm cihazlardan çık”. Oturumu açık tutmak daha uzun bir oturum değil, ayrı bir dönen ve iptal edilebilir cihaz token’ıdır.
İsteğe bağlı olan her şeyden önce onay
Analitik ve canlı sohbet, ancak saklanan ve sürümlenen bir onay kaydı izin verdiğinde yüklenir. Bir kategorinin anlamı değiştiğinde sürüm yükseltilir; böylece eski bir “evet” yeni bir sağlayıcıyı sessizce kapsamaz.
Yedekler ve provası yapılmış geri yükleme
Her üretim dağıtımından önce ve her gün 03:15 UTC’de tam döküm, kısıtlı dosya izinleri, otomatik canlılık kontrolü ve yazılı kayıtlı bir geri yükleme tatbikatı.
Sunucuda hiçbir şey derlenmez
İmajlar barındırılan koşucularda derlenir; sunucu yalnızca çeker, konteyneri değiştirir ve sağlık kontrolü yapar. Katkıcılar sentetik veriyle çalışır ve her pull request kapandığında silinen kendi veritabanını alır.
Denetlendi, boşlukları da yazılı
Rol × uç nokta güvenlik denetimi ve triyajı yapılmış bir statik analiz raporu. Temiz çıkan alanlar kayıt altında — birini bozmak regresyon sayılır — ve hiç incelenmemiş alanlar da aynı açıklıkla listeli.
Henüz doğru olmayanlar
Yalnızca güven veren yarısını yayımlamak, geri kalanının değerini düşürürdü.
- Çok kiracılı izolasyon üretimde zorunlu kılınmıyor. Organizasyon modeli, kiracı bazlı planlar, marka özelleştirme ve SSO canlı ve zorlama motoru yazıldı; ancak zorlama bayrağı kapalı ve rota bazlı yayılım sürüyor: canlı uygulama fiilen tek kiracılı ve bugün hiçbir sorgu organizasyona göre filtrelenmiyor.
- Üretim, paylaşılan önizleme ve her pull request ortamı tek bir sunucuda çalışır. Ayrı veritabanlarına sahip ayrı konteynerlerdir, ayrı makineler değil.
- Bu dağıtım için SOC 2 raporu ya da ISO 27001 sertifikası yok. Bunun yerine herkese açık bir depo, bu kayıt ve okuyabileceğiniz iç denetim belgeleri var.
- Web Push’un sözleşmesel bir muhatabı yok — protokol gönderene böyle bir taraf sunmuyor. Yükler abonenin kendi anahtarlarına şifrelenir ve bir anahtar çifti yapılandırılıp kullanıcı açıkça açmadıkça özellik kapalı kalır.
Barındırma ve veri yerleşimi
Uygulama, veritabanı ve yedekleri tek bir Plesk yönetimli sunucuda çalışır. Bu depo bir barındırma ülkesi beyan etmez ve etmeyecektir: proje açık kaynaktır ve başkaları kendi kurulumlarını işletir; kaynağa yazılmış bir bölge, başkasının sunucusu hakkında bir iddia olurdu. Bu dağıtımın işleticisi konumu talep üzerine bildirir.
Kodun sabitlediği ve bu yüzden kimseye sormadan doğrulayabileceğiniz şeyler: hazır gelen PostHog varsayılanı AB bölgesidir, Plausible çerezsizdir ve kendi sunucunuzda barındırılabilir, diğer tüm üçüncü taraf yolları ise işletici açana kadar hareketsizdir.
Son çare olarak yerleşim yanıtı
InternshipCRM AGPL-3.0-or-later lisanslıdır. Kendi kurulumunuzu, kendi altyapınızda, kendi yargı alanınızda, kimseden izin almadan ve kimseye ödeme yapmadan çalıştırabilirsiniz. Bu projenin sunabileceği en güçlü veri yerleşimi güvencesi budur, çünkü bizi sorunun dışına çıkarır. İkili lisanslama, hak sahibi Mehmet Erşahin’den alınabilir — bir şirket değil, gerçek bir kişi.
Kaynağı okuyun
Uzun sürümler, tarif ettikleri kodun yanında, depoda duruyor: