After Framework

ابنِ منتجاتك على إطار تشغيل مشترك.

ابنِ مرة واحدة. وانشر عبر كل المجالات.

يمنح After Framework المنتجات أساسًا مشتركًا: البنية، والهوية، والذكاء الاصطناعي، وأنظمة التصميم، والأدوات، ووحدات نطاق قابلة لإعادة الاستخدام.

supercore/packages7 حزم · خطّا منتجات · عقد تركيب واحد
SuperGarageAfterHubSuperHospitalafter_ecosystemafter_aiafter_consumerafter_enterpriseafter_firebaseafter_coreafter_design_system
مفتاح المخطط:اعتمادية pubspecمكدّس مرجعي موثّق

01 · بنية الإطار

نواة واحدة. خطّا منتجات. ومنتجات خفيفة في القمة.

تتشارك جميع المنتجات الطبقات نفسها. إضافة مجال حياة أو مجال صناعة تعني إضافة وحدة في القمة — ولا تتغير الطبقات التي تحتها.

خاص بالمنتج

المنصة المشتركة

محوّلات جذر التركيب

اختر طبقة لترى ما تملكه وما تعتمد عليه.

after_core

النواة المشتركة

المصادقة، والشبكات المحصّنة، والتخزين، وحقن الاعتماديات عبر Riverpod، وأعلام الميزات، والإعداد عن بُعد، وحزمة SDK للذكاء الاصطناعي بنمط BYOK، واستحقاقات الاشتراك المميّز، والإشعارات، والروابط العميقة، ومحركات لوحة المعلومات والإضافات والبحث والإعدادات.

تعتمد على
لا شيء — الطبقة الأساسية
تستخدمها
طبقة نطاق المنتج · طبقة المنظومة · قدرات الذكاء الاصطناعي · وحدات المستهلكين · وحدات المؤسسات · نظام التصميم · محوّلات Firebase

إعادة استخدام مشتركة، وتجربة خاصة بكل منتج

تستهدف عقيدة المنصة أن يرث كل منتج تسعين بالمئة أو أكثر من قدراته وقت التشغيل. يملك المنتج نطاقه، وميزاته الرأسية، وملف الذكاء الاصطناعي الخاص به، وكتالوجاته، وهويته التجارية — ولا شيء غير ذلك.

قواعد تحفظ تماسك النظام

  1. 01المنافذ قبل حزم SDK: تعتمد الشيفرة الرأسية على واجهات After، ولا تعتمد أبدًا على حزم SDK الخاصة بالمورّدين.
  2. 02لا توجد الوحدات الرأسية إلا في مستودعات المنتجات ضمن lib/features/.
  3. 03يأتي كل منفذ مع تنفيذ وهمي، لذا تعمل الهياكل الأولية دون خادم خلفي.
  4. 04التوليد بدل البدء من الصفر: تبدأ المنتجات الجديدة من مواصفة، لا من بنية جديدة.

02 · مصنع المنتجات

من الفكرة إلى منتج يعمل على أساس قابل لإعادة الاستخدام.

يحوّل مصنع المنتجات ملف product.spec.yaml صغيرًا إلى تطبيق Flutter شقيق يعتمد على الحزم المشتركة. ولا تحتوي المواصفة إلا على ما يتفرّد به المنتج.

  1. 01

    الفكرة

    سمِّ المنتج واختر خطًّا: للمستهلكين أو للمؤسسات، مع SuperGarage أو SuperHospital مرجعًا.

  2. 02

    النطاق

    اكتب product.spec.yaml: النطاق، والميزات الرأسية، وعلامات التبويب، والأذونات، وأدوات لوحة المعلومات، ومهارات الذكاء الاصطناعي، والهوية التجارية، واللغات.

  3. 03

    الوحدات

    كل ما ليس في المواصفة — المصادقة، والعضوية أو المؤسسة، وRBAC، والتقويم، والمهام، والإشعارات، والبحث — يُورَث.

  4. 04

    غلاف المنتج

    يُنتج generate_product.ps1 البيان، وجذر التركيب، وكتالوج الميزات، والغلاف، وملفات الترجمة، وسير عمل CI.

  5. 05

    النشر

    يشغّل سير عمل CI المولَّد التنسيق والتحليل والاختبارات مع قياس التغطية عند كل عملية push وكل طلب سحب إلى الفرع main.

يملك المنتج

  • الاسم، والحزمة، ومعرّف bundle، وخط المنتجات
  • الميزات الرأسية ومفاتيح الترجمة
  • علامات تبويب التنقل
  • سلاسل أذونات RBAC
  • أدوات لوحة المعلومات
  • مهارات الذكاء الاصطناعي وربط الأدوات
  • اللون المميّز والشعار الحرفي

توفّر المنصة

  • المصادقة وصلاحيات المشرف العام
  • العضوية أو المؤسسة
  • محرك RBAC وسجل التدقيق
  • التقويم، والمهام، والمستندات
  • الإشعارات والتحليلات
  • محركات سير العمل ولوحة المعلومات والبحث
  • نظام التصميم، وشاشة البداية، وCI

إعادة تشغيل المولّد بمواصفة مطوَّرة تحدّث ملفات الهيكل دون إتلاف شيفرة الميزات التي كتبها المطوّرون.

03 · الحزم والقدرات

سبع حزم. واعتماديات صريحة.

جميع الحزم بالإصدار 1.0.0 في مستودع supercore، وتُستهلك عبر اعتماديات المسار. اختر حزمة لتتبّع ما تعتمد عليه وما يعتمد عليها.

النواة المشتركة

after_core

منافذ وتنفيذات افتراضية للمصادقة، والشبكات، والتخزين، وحقن الاعتماديات، والتحليلات، وأعلام الميزات، والإعداد عن بُعد، والذكاء الاصطناعي، والإشعارات، والروابط العميقة، واستحقاقات الاشتراك المميّز. وتتجاوز المنتجات مزوّدات Riverpod بمحوّلاتها الخاصة.

تعتمد على
لا شيء — الطبقة الأساسية
تستخدمها

واجهات API الرئيسية

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

اعتماديات خارجية بارزة

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

مثال

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(),
    ),
  );
}

المصدر supercore/packages/after_core/README.md (يُفتح في علامة تبويب جديدة)

04 · CLI وسير عمل المطوّر

سكربتات وأوامر Flutter، لا سحر.

توجد الأدوات في supercore/scripts على هيئة سكربتات PowerShell، إلى جانب سلسلة أدوات Flutter القياسية. ولا يوجد ملف CLI تنفيذي مُحزَّم بشكل مستقل.

التهيئة

تحقّق من صحة المواصفة دون Flutter، ثم ولِّد التطبيق الشقيق وجهّزه للتشغيل.

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

المصدر supercore/factory/README.md (يُفتح في علامة تبويب جديدة)

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

المصدر supercore/factory/README.md (يُفتح في علامة تبويب جديدة)

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

05 · من الإطار إلى منتجات حقيقية

تتحوّل القدرات المشتركة إلى تجارب خاصة بكل منتج.

SuperGarage هو المرجع الاستهلاكي المطروح فعليًا. كل شاشة أدناه لقطة حقيقية من المتجر؛ وتوضّح الطبقة المتراكبة الأجزاء القادمة من المنصة وتلك التي يملكها المنتج.

لقطة شاشة من SuperGarage: درجة صحة المركبة والتذكيرات في لوحة معلومات المرآب.

خريطة قدرات SuperGarage

المعرّفات التي يستوردها supergarage/lib، مجمّعة حسب الحزمة المالكة.

after_core

  • AfterUserPlan
  • AfterAiCredentialVault
  • AfterLocalNotifications

after_consumer

  • FamilyShellHeader
  • AfterRegionalLocation

after_firebase

  • AfterFirebaseBootstrap

ميزات المنتج

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

عائلة المنتجات

الحالة كما هي مسجّلة في supercore/catalog/products.yaml. وحده SuperGarage مُعلَّم بأنه مطروح.

  • أيقونة SuperGarage

    SuperGarage

    المستهلكون · المرجع

    التنقّل: المركبات، والصيانة، والتأمين، والوقود، وOBD، والأساطيل

    after_core · after_design_system · after_firebase · after_consumer

  • أيقونة AfterHub

    AfterHub

    المستهلكون · غلاف النظام

    غلاف نظام المستهلك: الهوية، ولوحة المعلومات، والذكاء الاصطناعي، والتقويم، والبحث، وAfter+

    هيكل أولي

    after_ai · after_consumer · after_core · after_firebase · after_design_system · after_ecosystem

  • أيقونة SuperHospital

    SuperHospital

    المؤسسات · المرجع

    عمليات المستشفيات — المرجع المؤسسي

    هيكل أولي
  • أيقونة SuperHealth

    SuperHealth

    المستهلكون

    الصحة الشخصية: الأدوية، والسجلات، والنوم، والتغذية

  • أيقونة SuperFinance

    SuperFinance

    المستهلكون

    المالية الشخصية: الاشتراكات، والميزانيات، والاستثمارات

    هيكل أولي
  • أيقونة SuperHome

    SuperHome

    المستهلكون

    العقار والمنزل: الصيانة، والمرافق، والضمانات

    هيكل أولي
  • أيقونة SuperTravel

    SuperTravel

    المستهلكون

    السفر: الرحلات، والرحلات الجوية، والفنادق، وخطط السفر

    هيكل أولي
  • أيقونة SuperPet

    SuperPet

    المستهلكون

    الحيوانات الأليفة: الرعاية البيطرية، والطعام، والسجلات الصحية

    هيكل أولي
  • أيقونة SuperNews

    SuperNews

    المستهلكون

    أخبار مخصّصة بالذكاء الاصطناعي مع ملخّصات

  • أيقونة SuperSports

    SuperSports

    المستهلكون

    الرياضة والأداء: اللياقة، والنتائج، ومواعيد المباريات

  • أيقونة SuperAirport

    SuperAirport

    المؤسسات

    عمليات المطارات: الرحلات، والبوابات، والمدارج

    هيكل أولي
  • أيقونة SuperMaritime

    SuperMaritime

    المؤسسات

    عمليات الموانئ والسفن

    هيكل أولي
  • أيقونة SuperFactory

    SuperFactory

    المؤسسات

    نظام تنفيذ التصنيع MES وصيانة أرض المصنع

    هيكل أولي
  • أيقونة SuperFarm

    SuperFarm

    المؤسسات

    عمليات المزارع: المحاصيل، والماشية، والمعدات

    هيكل أولي

06 · نظام التصميم

اتساق دون تطابق.

يمنح after_design_system كل منتج الإطار نفسه والكثافة نفسها والحركة نفسها. تغيّر المنتجات لونها المميّز وشعارها الحرفي وميزاتها ونصوصها — لا النظام.

الرموز

اللون والتباعد ونصف القطر والحركة ثوابت Dart، يتشاركها خطّا المستهلكين والمؤسسات.

اللون

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

التباعد · مقياس 4pt

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

نصف القطر

  • 6
  • 8
  • 12
  • 16
  • 20

الحركة

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

المكوّنات

الأزرار، والبطاقات، وحقول الإدخال، والتنقل، ومربعات الحوار، والمخططات، ولوحة المعلومات، وحالات الفراغ والتحميل، وأقسام الإعدادات، والشريط العلوي للغلاف.

  • 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

إمكانية الوصول

تأتي أنظمة الألوان الفاتحة والداكنة معًا. وتُرتَّب سلاسل المخططات لتبقى قابلة للتمييز، وتُبقي رموز الحركة الانتقالات قصيرة وهادفة.

السلوك المتجاوب

تتكيّف حشوة الصفحة وعرض المحتوى مع عرض إطار العرض عبر AfterSpacing.

عرض إطار العرضأقصى عرض للمحتوىحشوة الصفحة
< 360width14 / 10 / 14 / 28
360 – 41952016 / 12 / 16 / 28
420 – 71964020 / 12 / 20 / 28
≥ 72076020 / 12 / 20 / 28

امتداد الهوية التجارية

تصرّح مواصفة كل منتج بلون مميّز وشعار حرفي. وتستقبل السمة اللون المميّز عبر accentOverride؛ ويبقى كل ما عدا ذلك ضمن العائلة.

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

07 · التوثيق

توثيق مصمَّم للتصفّح السريع.

كل صفحة مستمدة من مستودع supercore وترتبط بملفها المصدري.

  • بحث فوري باختصار من لوحة المفاتيح
  • جدول محتويات ثابت مع روابط عميقة
  • أزرار نسخ وتلوين للصياغة في كلتا السمتين
  • صفحات للحزم مع مخططات الاعتماديات
  • مخططات للبنية مع بدائل ثابتة
  • متاح بعشر لغات، مع دعم الكتابة من اليمين إلى اليسار
افتح التوثيق

08 · حدود المؤسسات

حدود تُغلَق عند الفشل.

يُفرض العزل المؤسسي في الشيفرة ويُوثَّق في سجلات قرارات البنية.

  • عزل مستأجرين يُغلق عند الفشل

    تتطلب المنافذ المؤسسية المقيّدة بالمؤسسة EnterpriseScope. وغياب organizationId يطلق استثناءً — فلا تُعاد أبدًا بيانات جميع المستأجرين.

  • الأذونات قبل الحفظ

    تتحقق الميزات الرأسية من PermissionSet.allows(...) قبل أي استدعاء يعدّل البيانات. وتصرّح المنتجات بسلاسل الأذونات الخاصة بها.

  • تدقيق بالإلحاق فقط

    يجب أن يُلحِق كل إجراء مؤسسي معدِّل سجلًا من نوع AuditLogEntry بمستودع AuditLogRepository القائم على الإلحاق فقط.

  • تشغيل بيني آمن فقط

    تمرّ الاستدعاءات بين المنتجات عبر AfterSecureInteropBridge: جمهور After ID، والنطاقات، وRBAC، وعضوية المؤسسة، ثم إدخال تدقيق إلزامي.

  • إقلاع يفشل سريعًا

    في وضع الإنتاج، يطلق غياب أي محوّل استثناءً عند بدء التشغيل، فلا يمكن للمزوّدات الوهمية أن تصل إلى الإنتاج بصمت.

  • معياري بطبيعة تصميمه

    تحلّ الخوادم الخلفية الحقيقية محل MockEnterpriseRepository في جذر التركيب. ولا تعرف طبقة النظام اسم المورّد أبدًا.

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;
  }
}

المصدر supercore/packages/after_enterprise/lib/src/scope/enterprise_scope.dart (يُفتح في علامة تبويب جديدة)

هذه ضوابط معمارية موثّقة في مستودع supercore. ولا يدّعي After Framework الحصول على أي شهادة أو تحقيق أي امتثال تنظيمي.

حدود المؤسسات

اجعل المنتج أصغر. واجعل الأساس أقوى.

ابدأ بالبنية، أو اقرأ توثيق الحزم، أو استكشف الشيفرة المصدرية.