After Framework

Ürünleri ortak bir işletim çatısı üzerinde geliştirin.

Bir kez geliştirin. Her alanda yayınlayın.

After Framework ürünlere ortak bir temel sunar: mimari, kimlik, YZ, tasarım sistemleri, araçlar ve yeniden kullanılabilir alan modülleri.

supercore/packages7 paket · 2 ürün hattı · 1 kompozisyon sözleşmesi
SuperGarageAfterHubSuperHospitalafter_ecosystemafter_aiafter_consumerafter_enterpriseafter_firebaseafter_coreafter_design_system
Gösterge:pubspec bağımlılığıbelgelenmiş referans yığını

01 · Çatı mimarisi

Tek çekirdek. İki ürün hattı. Üstte ince ürünler.

Her ürün aynı katmanları paylaşır. Bir Yaşam Alanı ya da Sektör Alanı eklemek en üste bir modül ekler — alttaki katmanlar değişmez.

Ürüne özgü

Ortak platform

Kompozisyon kökü adaptörleri

Neye sahip olduğunu ve neye bağımlı olduğunu görmek için bir katman seçin.

after_core

Ortak çekirdek

Kimlik doğrulama, güçlendirilmiş ağ, depolama, Riverpod DI, bayraklar, uzaktan yapılandırma, BYOK YZ SDK'sı, premium haklar, bildirimler, derin bağlantılar ve pano, eklenti, arama ve ayar motorları.

Bağımlı olduğu
Yok — temel katman
Kullananlar
Ürün alanı katmanı · Ekosistem katmanı · YZ yetenekleri · Tüketici modülleri · Kurumsal modüller · Tasarım sistemi · Firebase adaptörleri

Ortak yeniden kullanım, ürüne özgü deneyim

Platform doktrini, her ürünün çalışma zamanı yeteneklerinin yüzde doksanını veya fazlasını devralmasını hedefler. Ürün yalnızca kendi alanına, dikey özelliklerine, YZ profiline, kataloglarına ve markasına sahiptir.

Sistemi ayakta tutan kurallar

  1. 01SDK'lar yerine portlar: dikey kod tedarikçi SDK'larına değil, After arayüzlerine bağımlıdır.
  2. 02Dikey modüller yalnızca ürün depolarında, lib/features/ altında yaşar.
  3. 03Her port bir mock ile gelir; böylece iskeletler arka uç olmadan çalışır.
  4. 04Sıfırdan kurma, üret: yeni ürünler yeni bir mimariyle değil, bir spec ile başlar.

02 · Ürün fabrikası

Fikirden çalışan ürüne, yeniden kullanılabilir bir temel üzerinde.

Ürün fabrikası küçük bir product.spec.yaml dosyasını, ortak paketlere bağımlı kardeş bir Flutter uygulamasına dönüştürür. Spec yalnızca ürüne özgü olanı içerir.

  1. 01

    Fikir

    Ürüne ad verin ve bir hat seçin: consumer veya enterprise; referans olarak SuperGarage ya da SuperHospital.

  2. 02

    Alan

    product.spec.yaml yazın: alan, dikey özellikler, sekmeler, izinler, pano widget'ları, YZ becerileri, marka, diller.

  3. 03

    Modüller

    Spec'te olmayan her şey — kimlik doğrulama, üyelik veya organizasyon, RBAC, takvim, görevler, bildirimler, arama — devralınır.

  4. 04

    Ürün kabuğu

    generate_product.ps1; manifesti, kompozisyon kökünü, özellik kataloğunu, kabuğu, l10n dosyalarını ve bir CI iş akışını üretir.

  5. 05

    Dağıtım

    Üretilen CI iş akışı, main dalına yapılan her push ve pull request'te biçimlendirme, analiz ve kapsamlı testleri çalıştırır.

Ürünün sahip oldukları

  • Ad, paket, bundle, ürün hattı
  • Dikey özellikler ve i18n anahtarları
  • Gezinme sekmeleri
  • RBAC izin dizeleri
  • Pano widget'ları
  • YZ becerileri ve araç bağlamaları
  • Vurgu rengi ve monogram

Platformun sağladıkları

  • Kimlik doğrulama ve superadmin
  • Üyelik veya organizasyon
  • RBAC motoru ve denetim kaydı
  • Takvim, görevler, belgeler
  • Bildirimler ve analitik
  • İş akışı, pano ve arama motorları
  • Tasarım sistemi, açılış ekranı, CI

Üreteci güncellenmiş bir spec ile yeniden çalıştırmak, insan tarafından yazılmış özellik kodunu bozmadan iskelet dosyalarını günceller.

03 · Paketler ve yetenekler

Yedi paket. Açık bağımlılıklar.

Tüm paketler supercore deposunda 1.0.0 sürümündedir ve path bağımlılıklarıyla kullanılır. Neye bağımlı olduğunu ve ona nelerin bağımlı olduğunu izlemek için bir paket seçin.

Ortak çekirdek

after_core

Kimlik doğrulama, ağ, depolama, DI, analitik, özellik bayrakları, uzaktan yapılandırma, YZ, bildirimler, derin bağlantılar ve premium haklar için portlar ve varsayılan uygulamalar. Ürünler Riverpod sağlayıcılarını kendi adaptörleriyle geçersiz kılar.

Bağımlı olduğu
Yok — temel katman
Kullananlar

Temel API'ler

  • AppPlatformManifest
  • PlatformConfig
  • AfterStandardOverrides
  • AfterBootstrapMode
  • AfterAuthRepository
  • AfterApiClient
  • AfterHttpClientFactory
  • AfterFeatureFlags
  • AfterRemoteConfig
  • AfterAiCredentialVault

Öne çıkan üçüncü taraf bağımlılıklar

flutter_riverpod · dio · flutter_secure_storage · shared_preferences · google_sign_in · app_links · flutter_local_notifications

after_ecosystemafter_aiafter_consumerafter_enterpriseafter_firebaseafter_coreafter_design_system

Örnek

dart
import 'package:after_core/after_core.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:shared_preferences/shared_preferences.dart';

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  final prefs = await SharedPreferences.getInstance();

  runApp(
    ProviderScope(
      overrides: [
        afterSharedPreferencesProvider.overrideWithValue(prefs),
        afterAuthRepositoryProvider.overrideWithValue(MyFirebaseAuthRepository()),
        afterAnalyticsProvider.overrideWithValue(MyFirebaseAnalytics()),
        // ... store-specific adapters
      ],
      child: const MySuperApp(),
    ),
  );
}

Kaynak supercore/packages/after_core/README.md (yeni sekmede açılır)

04 · CLI ve geliştirici iş akışı

Sihir değil; betikler ve Flutter komutları.

Araçlar, standart Flutter araç zinciriyle birlikte supercore/scripts içinde PowerShell betikleri olarak bulunur. Ayrı paketlenmiş bir CLI ikili dosyası yoktur.

Başlat

Bir spec'i Flutter olmadan doğrulayın, ardından kardeş uygulamayı üretip hazırlayın.

validate_product_spec.ps1
powershell -File scripts\validate_product_spec.ps1 -SpecPath factory\specs\examples\super_airport.product.spec.yaml

Kaynak supercore/factory/README.md (yeni sekmede açılır)

generate_product.ps1
# From a spec
powershell -File scripts\generate_product.ps1 -SpecPath factory\specs\examples\super_airport.product.spec.yaml

# From a name only (quick starter)
powershell -File scripts\generate_product.ps1 -Name SuperAirport -Reference SuperHospital

# Preview without writing files
powershell -File scripts\generate_product.ps1 -SpecPath factory\specs\examples\super_airport.product.spec.yaml -DryRun

Kaynak supercore/factory/README.md (yeni sekmede açılır)

flutter
cd ..\superairport
flutter create .
flutter pub get
flutter analyze
flutter test

05 · Çatıdan gerçek ürünlere

Ortak yetenekler ürüne özgü deneyimlere dönüşür.

SuperGarage, yayında olan tüketici referansıdır. Aşağıdaki her ekran gerçek bir mağaza ekran görüntüsüdür; katman hangi parçaların platformdan geldiğini, hangilerinin ürüne ait olduğunu gösterir.

SuperGarage ekran görüntüsü: Garaj panosunda araç sağlık puanı ve hatırlatıcılar.

SuperGarage yetenek haritası

supergarage/lib tarafından içe aktarılan tanımlayıcılar, sahibi olan pakete göre gruplanmıştır.

after_core

  • AfterUserPlan
  • AfterAiCredentialVault
  • AfterLocalNotifications

after_consumer

  • FamilyShellHeader
  • AfterRegionalLocation

after_firebase

  • AfterFirebaseBootstrap

Ürün özellikleri

  • features/vehicle
  • features/maintenance
  • features/obd
  • features/expenses
  • features/fleet
  • features/trips
  • features/assistant
  • features/community

Ürün ailesi

Durumlar supercore/catalog/products.yaml dosyasındaki kayda göredir. Yalnızca SuperGarage yayında olarak işaretlidir.

  • SuperGarage simgesi

    SuperGarage

    Tüketici · Referans

    Mobilite: araçlar, bakım, sigorta, yakıt, OBD, filo

    after_core · after_design_system · after_firebase · after_consumer

  • AfterHub simgesi

    AfterHub

    Tüketici · OS kabuğu

    Tüketici OS kabuğu: kimlik, pano, YZ, takvim, arama, After+

    İskelet

    after_ai · after_consumer · after_core · after_firebase · after_design_system · after_ecosystem

  • SuperHospital simgesi

    SuperHospital

    Kurumsal · Referans

    Hastane operasyonları — kurumsal referans

    İskelet
  • SuperHealth simgesi

    SuperHealth

    Tüketici

    Kişisel sağlık: ilaçlar, kayıtlar, uyku, beslenme

  • SuperFinance simgesi

    SuperFinance

    Tüketici

    Kişisel finans: abonelikler, bütçeler, yatırımlar

    İskelet
  • SuperHome simgesi

    SuperHome

    Tüketici

    Mülk ve ev: bakım, faturalar, garantiler

    İskelet
  • SuperTravel simgesi

    SuperTravel

    Tüketici

    Seyahat: geziler, uçuşlar, oteller, güzergâhlar

    İskelet
  • SuperPet simgesi

    SuperPet

    Tüketici

    Evcil hayvanlar: veteriner bakımı, mama, sağlık kayıtları

    İskelet
  • SuperNews simgesi

    SuperNews

    Tüketici

    Özetli, YZ ile kişiselleştirilmiş haberler

  • SuperSports simgesi

    SuperSports

    Tüketici

    Spor ve performans: fitness, skorlar, fikstürler

  • SuperAirport simgesi

    SuperAirport

    Kurumsal

    Havalimanı operasyonları: uçuşlar, kapılar, pistler

    İskelet
  • SuperMaritime simgesi

    SuperMaritime

    Kurumsal

    Liman ve gemi operasyonları

    İskelet
  • SuperFactory simgesi

    SuperFactory

    Kurumsal

    Fabrika sahası MES ve bakım

    İskelet
  • SuperFarm simgesi

    SuperFarm

    Kurumsal

    Çiftlik operasyonları: ekinler, hayvanlar, ekipman

    İskelet

06 · Tasarım sistemi

Tekdüzelik olmadan tutarlılık.

after_design_system her ürüne aynı arayüz çerçevesini, yoğunluğu ve hareketi verir. Ürünler sistemi değil; vurgu rengini, monogramı, özellikleri ve metinleri değiştirir.

Token'lar

Renk, boşluk, köşe yarıçapı ve hareket; tüketici ve kurumsal tarafından paylaşılan Dart sabitleridir.

Renk

  • accent#38BDF8
  • accentDeep#0284C7
  • graphite950#0B0C0F
  • graphite800#222831
  • steel#8A919D
  • lightBackground#FAFBFC
  • success#22C55E
  • warning#F59E0B
  • danger#EF4444

Boşluk · 4pt ölçeği

  • xs4
  • sm8
  • md12
  • lg16
  • xxl24
  • xxxl32
  • massive48
  • hero64

Köşe yarıçapı

  • 6
  • 8
  • 12
  • 16
  • 20

Hareket

  • instant100ms
  • fast · micro180ms
  • normal · page280ms
  • slow · modal420ms
  • emphasis560ms

Bileşenler

Düğmeler, kartlar, giriş alanları, gezinme, diyaloglar, grafikler, pano, boş ve yükleniyor durumları, ayar bölümleri ve kabuk üst çubuğu.

  • buttons.dart
  • cards.dart
  • inputs.dart
  • navigation_bar.dart
  • dialogs.dart
  • charts.dart
  • dashboard.dart
  • empty_states.dart
  • loading.dart
  • settings_section.dart
  • shell_top_bar.dart

Erişilebilirlik

Açık ve koyu renk şemaları birlikte gelir. Grafik serileri ayırt edilebilir kalacak şekilde sıralanır; hareket token'ları geçişleri kısa ve amaca yönelik tutar.

Duyarlı davranış

Sayfa dolgusu ve içerik genişliği, AfterSpacing aracılığıyla görünüm alanı genişliğine uyum sağlar.

Görünüm alanı genişliğiAzami içerikSayfa dolgusu
< 360width14 / 10 / 14 / 28
360 – 41952016 / 12 / 16 / 28
420 – 71964020 / 12 / 20 / 28
≥ 72076020 / 12 / 20 / 28

Marka uzantısı

Her ürün spec'i bir vurgu rengi ve monogram tanımlar. Tema vurguyu accentOverride ile alır; geri kalan her şey ailede kalır.

  • SuperGarage#22D3EE
  • SuperKids#F472B6
  • SuperHospital#F43F5E
  • SuperFactory#F59E0B

07 · Dokümantasyon

Hızlı taranmak için tasarlanmış dokümantasyon.

Her sayfa supercore deposundan türetilir ve kaynak dosyasına bağlantı verir.

  • Klavye kısayoluyla anında arama
  • Derin bağlantılı sabit içindekiler tablosu
  • Her iki temada kopyalama düğmeleri ve sözdizimi vurgulama
  • Bağımlılık grafikli paket sayfaları
  • Statik yedekli mimari diyagramları
  • Sağdan sola desteğiyle on dilde kullanılabilir
Dokümantasyonu açın

08 · Kurumsal sınırlar

Güvenli tarafta kapanan sınırlar.

Kurumsal izolasyon kodda uygulanır ve mimari karar kayıtlarında belgelenir.

  • Güvenli kapanan kiracılık

    Organizasyon kapsamlı kurumsal portlar bir EnterpriseScope gerektirir. Eksik bir organizationId hata fırlatır — asla tüm kiracıları döndürmez.

  • Kalıcılıktan önce izinler

    Dikey özellikler, veri değiştiren her çağrıdan önce PermissionSet.allows(...) kontrolü yapar. Ürünler kendi izin dizelerini tanımlar.

  • Yalnızca eklemeli denetim

    Veri değiştiren her kurumsal işlem, yalnızca eklemeli AuditLogRepository'ye bir AuditLogEntry eklemelidir.

  • Yalnızca güvenli birlikte çalışma

    Ürünler arası çağrılar AfterSecureInteropBridge'den geçer: After ID hedef kitlesi, kapsamlar, RBAC ve organizasyon üyeliği, ardından zorunlu bir denetim kaydı.

  • Hızlı başarısız olan başlatma

    Üretim modunda eksik bir adaptör başlangıçta hata fırlatır; böylece mock sağlayıcılar sessizce üretime ulaşamaz.

  • Yapısı gereği modüler

    Gerçek arka uçlar, kompozisyon kökünde MockEnterpriseRepository'nin yerini alır. OS katmanı sağlayıcının adını asla öğrenmez.

enterprise_scope.dart
/// Fail-closed tenant + actor context for enterprise ports (ADR-002).
class EnterpriseScope {
  final String organizationId;
  final String actorId;
  final PermissionSet permissions;

  /// Throws if [organizationId] is missing/blank — never allow all-tenant lists.
  static String requireOrganizationId(String? organizationId) {
    final id = organizationId?.trim() ?? '';
    if (id.isEmpty) {
      throw StateError(
        'EnterpriseScope: organizationId is required (fail-closed tenancy).',
      );
    }
    return id;
  }
}

Kaynak supercore/packages/after_enterprise/lib/src/scope/enterprise_scope.dart (yeni sekmede açılır)

Bunlar supercore deposunda belgelenmiş mimari kontrollerdir. After Framework herhangi bir sertifikasyon veya mevzuat uyumluluğu iddiasında bulunmaz.

Kurumsal sınırlar

Ürünü küçültün. Temeli güçlendirin.

Mimariyle başlayın, paket dokümanlarını okuyun veya kaynağı keşfedin.