؟ *يتم تطبيق ترخيص MIT على المنصات لتمكين توزيع الشبكة. يبقى بقية المشروع تحت AGPL V3.
بديل بسيط وقوي لـ Google Tag Manager وهو مفتوح المصدر بالكامل وصديق للخصوصية. لا يستخدم بديل Google Analytics الخاص بنا أي ملفات تعريف الارتباط وتوافق إجمالي الناتج المحلي الإجمالي و CCPA و PECR بالكامل. لقد جعلناها سريعة وسهلة تجربة عرض تجريبي أو ببساطة استضافته بنفسك في الإنتاج. سنقدم أيضًا نسخة مستضافة سحابة في المستقبل القريب.
يوفر مدير البيانات الخلفية القابلة للتوصيل لإرسال البيانات إلى أي مكان ، ولدينا خط أنابيب لزيادة كل من الموصلات والميزات. في بضع نقرات فقط ، صمم مخططًا ، وتكوين نهاية خلفية وإنشاء نقطة نهاية لإرسال البيانات إليها. يستخدم مدير العلامات هذا التقنية الأساسية نفسها لتوفير التحليلات.
كانت مهمتنا هي إنشاء أداة لإدارة العلامات البديهية التي يمكن تمديدها بالكامل عبر منصات مخصصة (تم إنشاؤها من قبل مجتمعنا!). نحن فريق صغير متحمس لبناء برامج رائعة مفتوحة المصدر ونأمل في تقليل حصة السوق للشركات الكبيرة. نحن لسنا من المعجبين بزيادة مراقبة الشركات أو الحكومية ، ونعتقد بشكل أساسي أن مستخدمي موقع الويب الخاص بك يستحقون بشكل أفضل - ومع ذلك ، فإن هذا يجب أن يكون متوازناً مع متطلبات العمل لمشاركة الممتلكات والبيانات الشخصية التي يتم مشاركتها.
فيما يلي مثال خط واحد على كيفية البدء إذا قمت بالفعل بتثبيت Docker.
~ > curl -L https://github.com/scale8/scale8/raw/master/docker-compose.yml | docker-compose -f - up بمجرد أن يبدأ الأمر أعلاه في الخدمات ، قم بإشارة متصفحك على http://127.0.0.1:8080 . سيُطلب منك إدخال بعض التفاصيل الأساسية لتكوين المشروع.
أو إذا قمت بفحص المشروع بالفعل وقمت بتثبيت التبعيات عبر ~> yarn install:all وترغب في تشغيله محليًا: -
~ > yarn run:allلقد قمنا بتأسيس النظام الأساسي بأكمله لدعم Docker و Limited حيثما كان ذلك ممكنًا عمليات الإنشاء المعقدة وتركيب أحجام إضافية. من الصعب تقديم البرمجة النصية لتوفير إعدادات جاهزة للإنتاج بنقرة واحدة لكل من AWS و Google Cloud و Custom Kubernetes.
| عنصر | وصف |
|---|---|
| API | يحتوي على جميع منطق الأعمال ويوفر نقاط نهاية GraphQL / RESTFUL التي تعمل على تشغيل واجهة المستخدم |
| شائع | مكتبة مشتركة صغيرة تتم مشاركتها بين مكونات المشروع |
| حافة | مصمم لتوسيع نطاقه أفقيًا ، يكون خادم Edge مسؤولاً عن توصيل الأنظمة الأساسية على الحافة وأيضًا تتبع البيانات في |
| المنصات | المنصات المخصصة التي أنشأها المجتمع و Scale8 التي تمد وظائف مدير العلامات |
| جهاز التوجيه | جهاز توجيه بسيط ، تم إنشاؤه باستخدام NGINX ومصمم لدوران الإصدار المستضيف بسرعة |
| واجهة المستخدم | يوفر بناء ثابت من واجهة المستخدم باستخدام Next.js & React |
~> yarn install:all~> yarn build:all نظرًا لأن كل شخص لديه شرط استخدام مدير العلامات الكامل ، فقد قدمنا أيضًا خيارًا لإنشاء إصدار خفيف للغاية لا يتطلب سوى بضعة أسطر من JavaScript.
لقد قدمنا أيضًا دعمًا كاملاً لتتبع تطبيقات الصفحة الفردية (SPAs) وتجزئة التجزئة. يمكن تمكينها عند تثبيت التطبيق الخاص بك.
لقد بذلنا قصارى جهدنا لتبسيط عملية تنظيم وإدارة العلامات عبر خصائص ويب أو أكثر. يعتمد مدير العلامات على محرك يعتمد على الحدث ، حيث يتم تشغيل القاعدة عندما يتم استيفاء الأحداث والشروط والاستثناءات ، مما يؤدي إلى اتخاذ إجراء واحد أو أكثر.
يمكن بسهولة إدارة حدث تم تشغيله داخل المتصفح من خلال الواجهة البسيطة. الرابط الذي تم النقر عليه ، أو الصفحة التي تدخل في التركيز ، أو النموذج المقدم ، كلها أمثلة على الأحداث التي قد ترغب في الاستماع إليها.
الشرط هو اختبار تم إجراؤه على حاوية بيانات ويهدف إلى التأكيد على أن بعض المفاتيح التي تنتمي إلى كائن حاوية بيانات يتم محاذاة القيمة المتوقعة. يهدف الاستثناء إلى إجراء نفس الاختبار ، ولكن بدلاً من ذلك استبعاد القاعدة إذا تم تمرير الاختبار.
عند تلبية الأحداث والحالة المطلوبة للقاعدة ، سيتم إطلاق إجراء. تعرف على المزيد حول الإجراءات هنا.
لقد بدأنا في الأصل مع الواجهة الأمامية TypeScript و Scala مدفوعة الخلفية. لتوفير شفافية الكود التي أردناها ، إلى جانب قرار بفتح المشروع ، تطلب منا المشروع الانتقال إلى TypeScript تقريبًا مع خادم Edge فقط في Java. نحن نعتقد بشكل أساسي أن مستقبل هذا المشروع يجلس مع مجتمع المصدر المفتوح الآن وهناك المزيد من مهندسي TypeScript و Java أكثر من مهندسي Scala.
قبل الإصدار مباشرة ، انتقلنا من CRA إلى Next.js أيضًا. لقد أدخلنا أيضًا انعكاسًا للسيطرة (IOC) في الواجهة الخلفية الخاصة بنا. هدفنا هو أن يكون هذا المشروع قابلاً للتوسعة قدر الإمكان. يوفر لنا نموذج التوصيل والتشغيل الفرصة لتوفير خدمات متعددة ومنع القفل.
container . bind < BaseStorage > ( TYPES . BackendStorage ) . to ( MongoDBStorage ) . inSingletonScope ( ) ;
container . bind < BaseDatabase > ( TYPES . BackendDatabase ) . to ( MongoDb ) . inSingletonScope ( ) ;
container . bind < BaseLogger > ( TYPES . BackendLogger ) . to ( ConsoleLogger ) . inSingletonScope ( ) ;
container . bind < BaseEmail > ( TYPES . BackendEmail ) . to ( Mailer ) . inSingletonScope ( ) ;
container . bind < BaseConfig > ( TYPES . BackendConfig ) . to ( EnvironmentConfig ) . inSingletonScope ( ) ;لقد اتبعنا نهجًا مشابهًا مع رمز Java أيضًا.
@ Replaces ( StorageInterface . class )
@ Singleton
@ Requires ( property = "backend-storage" , value = "google" )
public class GoogleStorage implements StorageInterface {
...
}في الوقت الحاضر ، نحن نقدم فقط MongoDB و Google's BigQuery للتحليلات. MongoDB مناسب فقط للمشاريع الصغيرة ولغرض التجريبي / الاختبار. لدينا دعم Full Clickhouse في الإصدار السحابي الذي تم إصداره بعد ، وسنضيف هذا الدعم في الإصدار الذي تم استضافته ذاتيًا بعد فترة وجيزة مع Redshift و Postgres.
لقد أزلنا أيضًا خطوط أنابيب التجميع كل ساعة من النسخة المستضافة ذاتيًا. وأضاف ذلك درجة غير ضرورية من التعقيد للغالبية العظمى من حالات الاستخدام. هناك خطة لإعادة تقديم هذا لاحقًا في وقت لاحق وإذا طلبها أي شخص ، فيرجى إخبارنا بذلك.
تم تصميم جميع وثائقنا للإصدار السحابي للمنتج ، ومع ذلك سنضيف المزيد من الوثائق التفصيلية للنسخة المستضافة ذاتيًا قريبًا. لقد قمنا بإخفاء بعض الميزات مثل معالجة الدفع وإنهاء SSL للنطاقات المخصصة التي لا تتوافق مع النسخة المستضافة ذاتيا.
يتم تشغيل واجهة المستخدم بأكملها بواسطة GraphQL باستخدام Apollo ويتم إنشاء وثائق API تلقائيًا وتنقلها بسهولة.
كل ما نطلبه هو أنك ستنجمة أو تشاهد هذا على Github إذا كنت تحب المشروع. نود أن يشارك الناس وتدوين حول هذا أيضًا! سيتم الرد على جميع المشكلات بسرعة في Github ، ونحن متحمسون لمعرفة أين يسير هذا بعد ذلك.
| مؤلف | جيثب | |
|---|---|---|
| كريستوفر بيك | ||
| أليساندرو بارزانتي |