Skip to content
Ercan Labs
← Tüm işlerPLATFORM · OPEN-SOURCE · shipped

Güzellik Salonu Platformu

Salonlar için rezervasyon ve işletme platformu. Tek API, tek panel, iki Flutter uygulaması.

134
test dosyası
483
kaynak dosya
4
istemci

Bu nasıl ölçüldü: Test ve kaynak dosyalar depoda sayıldı; kiracı yalıtımı testlerle kapsanmış.

Mimari134 test files
  1. CLIENTS
    • müşteri
    • personel
    • işletme
    • admin
  2. API
    • ExpressREST
  3. TENANCY
    • tenant scopeher sorguda
  4. DATA
    • PostgreSQLSequelize
Kiracı kimliği istekten geliyor, sorguya parametre olarak giriyor; unutulursa test kırılıyor.

Problem

Salon platformu ilk satırdan çok kiracılı. Her salonun kendi ekibi, hizmetleri, takvimi var. Bir salon diğerinin verisini görmemeli.

Aynı ürün üç ayrı kullanıcıya bakıyor: telefondan randevu alan müşteri, ekibini yöneten salon sahibi, bütün kiracıları izleyen platform yöneticisi.

Kısıtlar

  • Kiracı izolasyonu her sorguya eklenen bir filtre değil, veri erişim katmanının özelliği.
  • Dört istemci, tek kod tabanı: API, yönetim paneli, salon uygulaması, müşteri uygulaması.
  • Platform, varsayılan seed şifresiyle üretimde çalışmayı reddetmeli.

Mimari kararlar

01

Kiracı kimliği zorunlu parametre

Kiracı kimliği sessiz bir varsayım değil; modül çağrılarına açıkça geçiyor. Eksik kiracı, sessiz bir çapraz okuma değil, derleme hatası oluyor.

Bedeli: Çağrı yerleri daha uzun.

02

İzolasyon testle kanıtlanıyor

Çapraz kiracı erişimi varsayılmıyor, test ediliyor: başka kiracının verisini okumak başarısız olmalı.

Bedeli: Test süresi.

03

Tek kod tabanı, dört istemci

Salon ve müşteri uygulamaları Flutter, yönetim Next.js, API Express/Sequelize; ortak konvansiyon ve rol modeli.

Bedeli: Ortak model değişikliği dört istemciye yayılıyor.

04

Varsayılan şifre üretime ulaşamaz

Varsayılan şifreyle seed işlemi dokümantasyonla değil kodla engelli.

Bedeli: İlk dağıtım biraz daha yavaş.

Kanıt

  • Test dosyası134
  • Kaynak dosya483
  • İstemci4 (API, admin, salon uygulaması, müşteri uygulaması)
  • Kiracı izolasyonutestle kapsanmış

Bilinen sınırlar

  • Açık kaynak referans projesi; ticari olarak ölçekte işletilmiyor.
  • Ödeme ve SMS entegrasyonları yerel geliştirme için sahte (stub).

Ne öğrendim

Çok kiracılılık kod incelemesinde değil, veri erişim katmanında kararlaşır. Kiracı kimliği unutulabiliyorsa unutulur. Hem de kimsenin bakmadığı o tek sorguda.

Stack

ExpressSequelizeNext.jsFlutterPostgreSQL