Meyrem Şenge
Yazılım geliştirici
Bilgisayar Mühendisliği
Fırat Üniversitesi · son sınıf
Meyrem Şenge
Yazılım geliştirici
meyremsenge@gmail.com GitHub · LinkedIn
← Çalışmalar
SELECT * FROM satislar; firma_a · 12 kayıtgörünür firma_b · gizliRLS ⛌ firma_c · gizliRLS ⛌ oturum: firma_a · politika: firma_id = oturum
Web · 2026'dan beri

ERP / CRM

Küçük ve orta ölçekli şirketler için abonelik tabanlı ERP ve CRM. Her firmanın verisini veritabanının kendisi ayırıyor; her müşteri yalnızca abone olduğu modülleri çalıştırıyor.

Rol
Backend'in tamamı; ön yüzde küçük düzeltmeler
Bağlam
Yaz stajı · Methodda, Ağustos 2026
Platform
Web, abonelikli (SaaS)
Durum
Geliştirme aşamasında
Teknoloji
Python · FastAPI · SQLAlchemy · PostgreSQL · React

01Sorun

Excel'i aşan bir şirketin önünde genelde iki kötü seçenek var: pahalı bir kurumsal ERP ya da hiç uyarlanamayan ucuz bir ürün. Bu platform aradaki boşluk için.

Aradaki boşlukta eksik olan şey, kod tabanı çatallanmadan müşteri bazında genişletilebilen bir sistem. Her firmanın verisi kesin olarak ayrı durmalı, ama her firma için ayrı bir kopya da tutulmamalı.

02Yaklaşım

Her mimari karar, uygulanmadan önce numaralı bir karar kaydı olarak yazılıyor: platform, veritabanı, kiracı yalıtımı, kimlik ve yetkiler, modül sınırları, finans. Kodun dokümantasyonla çelişmesine izin verilmiyor; bir kararı değiştirmek önce kaydı güncellemek demek.

03Çözüm

Kiracı yalıtımını PostgreSQL'in Row Level Security özelliğiyle veritabanının kendisinin uyguladığı modüler bir platform. Modüller kendilerini bir manifestle tanıtıyor ve abonelik bazında açılıyor.

  • Veritabanında yalıtım

    PostgreSQL Row Level Security ve ona ayrılmış bir yalıtım test paketi.

  • Modül manifesti

    Modüller lisans ve aboneliğe göre firma bazında açılıyor.

  • Rol ve izin

    Alan seviyesine kadar inen rol ve izin modeli.

  • Finans modülü

    Gelir-gider takibi; e-fatura ve banka entegrasyonu için yollar.

  • Ayrı kimlik bilgileri

    Banka ve entegrasyon sağlayıcılarının kimlik bilgileri ayrıştırılarak yönetiliyor.

  • Yazılı tasarım sistemi

    Tasarım jetonları ve bileşen varyantları yazılı bir tasarım sisteminde tanımlı.

04Nasıl kurdum

Önce karar kaydı, sonra kod.

FastAPI ve SQLAlchemy 2.0
Python 3.12; şema değişiklikleri Alembic göçleriyle.
PostgreSQL RLS
Her firma tablosu, yalıtım politikasını kendisini oluşturan göçle birlikte getiriyor. Göçler uygulama rolüyle değil, sahip rolüyle çalışıyor.
React ve Vite
TypeScript ile ön yüz; kodunu ekip arkadaşım yazdı, ben küçük düzeltmeler yaptım. Dağıtım hedefi AWS.
Karar kayıtları
Numaralı mimari karar kayıtları, belgelenmiş bir tehdit modeli ve CI kalite kapıları.

05Zor kısımlar

  1. Kilit veritabanında

    Yalıtım uygulama sorgularında değil veritabanı katmanında uygulanıyor; bu da göçlerin, rollerin ve bağlantı dizelerinin nasıl yönetileceğini baştan değiştiriyor.

  2. Modül sınırları kural

    Modüller birbirinin iç yapısını içe aktarmıyor; böylece bir müşteri gizli bağımlılıklar olmadan sistemin yalnızca bir bölümünü çalıştırabiliyor.

  3. Para ondalık, zaman UTC

    Sistemin tamamında. İlk göçten itibaren tutulması ucuz; ilk yılın kayıtlarından sonra geri dönüp düzeltilmesi pahalı.

06Bugün

Etkin geliştirme aşamasında. Mimari, güvenlik modeli ve veritabanı kuralları belgelendi; kapsam ve güncel durum depoda takip ediliyor.