موقع لأعضاء النادي الرياضي، فيه:
- الرئيسية: تغريدات النادي من إكس تتقلب ورا بعض، ولو أحد ضغط على تغريدة تفتح له في إكس. وتحتها إعلانات النادي، يقرأها الكل وينشرها الرئاسة والقادة والنواب بس.
- التسجيل: الاسم، الرقم الجامعي، البريد، الجوال، الكلية، اللجنة، حساب إكس ولنكدإن، والصفة.
- الصفات: رئيس النادي، و٣ نواب للرئيس، وقائدين ونائبين لكل لجنة، والباقي أعضاء.
- صفحة القادات (للكل): فوقها رئاسة النادي، وتحتها قادة ونواب كل لجنة، مع حساباتهم في إكس ولنكدإن.
- الشات: شات عام، شات لكل لجنة، وشات القادة.
- صفحة الاعتماد: للإدارة، فيها اعتماد أو رفض الطلبات، وتغيير الصفة واللجنة والمنصب.
- حسابي: كل واحد يعدّل منه اسمه وحساباته.
الموقع ثابت، يعني ينرفع على GitHub Pages مجانًا، وقاعدة البيانات وتسجيل الدخول على Firebase (الخطة المجانية تكفي).
- ادخل console.firebase.google.com وسوّ مشروع جديد (مثلًا
uqufit). تقدر تطفي Google Analytics. - Authentication › Get started › Email/Password › فعّله.
- Firestore Database › Create database › اختر موقع قريب (مثل
me-central2أوeurope-west) › Production mode. - افتح تبويب Rules في Firestore، امسح اللي فيه، والصق محتوى ملف
firestore.rulesكامل، واضغط Publish. - Project settings (أيقونة الترس) › Your apps › اضغط
</>(Web) › سجّل التطبيق › انسخ قيمfirebaseConfigوحطها في ملفconfig.jsمكانYOUR_....
عادي تكون بيانات
firebaseConfigظاهرة في الموقع، هذا الطبيعي في Firebase. الحماية الحقيقية في ملفfirestore.rules.
رابط GitHub Pages العادي يطلع كذا: اسم-الحساب.github.io. عشان ما يطلع اسمك، سوّ منظمة (Organization) باسم النادي، ويصير الرابط باسمها:
- في GitHub اضغط ➕ (فوق) › New organization › الخطة Free › الاسم مثلًا
uqufit. (لو الاسم مأخوذ جرّبuqu-fitأوuqufit-club.) - داخل المنظمة سوّ repository جديد باسم:
uqufit.github.ioبالضبط (نفس اسم المنظمة +.github.io)، ويكون Public. - ارفع كل الملفات اللي في هذا المجلد (Add file › Upload files):
index.html,app.js,config.js,styles.css, مجلدassets,.nojekyll. - Settings › Pages › Source:
Deploy from a branch› Branch:main/(root)› Save. - بعد دقيقة أو دقيقتين يشتغل الموقع على:
https://uqufit.github.io
لو تبون رابط مثل
uqufit.clubزي موقع نادي البحث، اشتروا دومين وحطوه في Settings › Pages › Custom domain.
مهم: بعد الرفع ارجع لـ Firebase › Authentication › Settings › Authorized domains › Add domain › uqufit.github.io.
- سجّل في الموقع بحسابك العادي.
- في Firebase › Authentication › Users انسخ الـ User UID حقك.
- في Firestore › Data › Start collection › الاسم:
admins› Document ID: الصق الـ UID › حط حقلname(نوعه string) واكتب اسمك › Save. - حدّث الموقع، بيطلع لك رابط «الاعتماد» في القائمة، ومنه تعتمد القادة والنواب.
تقدر تضيف أكثر من مشرف بنفس الطريقة.
| تبي تغيّر | الملف |
|---|---|
| أسماء اللجان | config.js (COMMITTEES) و firestore.rules (committeeIds). لازم المعرّفات تكون نفسها في الملفين |
| الكليات | config.js (COLLEGES) |
| التسجيل بالبريد الجامعي فقط | REQUIRE_UQU_EMAIL = true في config.js و requireUquEmail() ترجع true في firestore.rules |
| الألوان | أول الملف styles.css (:root) |
| الشعار | assets/logo.png |
- كل اللي ينكتب في الموقع (أسماء، رسائل، تغريدات) يظهر كنص فقط، فما أحد يقدر يحقن كود (XSS).
- فيه Content-Security-Policy يسمح بالسكربتات من الموقع نفسه ومن Firebase فقط.
- الصفة ما ينفع أحد يعطيها لنفسه. أي أحد يسجّل يكون «عضو» تلقائي، والقائد والنائب يصيرون «طلب» ينتظر اعتماد المشرف. هذا مضبوط في قواعد قاعدة البيانات نفسها، مو بس في الواجهة.
- البيانات الخاصة (الرقم الجامعي، الجوال، البريد) يشوفها صاحبها والمشرفين فقط.
- الشات يحتاج تفعيل البريد. وشات اللجنة لأعضائها فقط، وشات القادة للقادة والنواب فقط.
- إضافة التغريدات للقادة والنواب المعتمدين فقط، وتنقبل روابط إكس فقط.
- الرسائل والتغريدات لها حد أقصى في الطول، وما ينفع يتزوّر اسم المرسل أو صفته.
- إذا تبي حماية أكثر من السبام، فعّل App Check في Firebase.
إكس ما يعطي تغريدات الحساب تلقائيًا إلا باشتراك API مدفوع، عشان كذا القائد يلصق رابط التغريدة ويضغط «جيب النص من الرابط». الموقع يحاول يجيب النص تلقائيًا، وإذا ما قدر يكتبه القائد بنفسه.