Skip to content
alaayehia89Public

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

12 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📰 منصة الأخبار الإلكترونية (News Site Platform)

منصة إخبارية عربية متكاملة مبنية بتقنيات Node.js و Express للواجهة الخلفية، مع واجهة أمامية بسيطة باستخدام Vanilla JavaScript، وقاعدة بيانات SQLite خفيفة الوزن.

✨ المميزات الرئيسية

  • 🗞️ نشر وإدارة الأخبار: إنشاء وتعديل وحذف المقالات الإخبارية بسهولة.
  • 🏷️ تصنيف متقدم: تنظيم الأخبار حسب الأقسام (سياسة، اقتصاد، رياضة...) والمناطق الجغرافية.
  • ⚡ العواجل: نظام مخصص للأخبار العاجلة يظهر في أعلى الصفحة.
  • 🔐 نظام صلاحيات: فصل بين المديرين (Admins) والقراء (Readers).
  • 🎨 تخصيص الهوية: تغيير ألوان الموقع، الشعار، والأسماء من لوحة الإعدادات.
  • 🔍 بحث متطور: البحث في العناوين، الملخصات، والمحتوى الكامل.
  • 📱 تصميم متجاوب: يعمل بسلاسة على جميع الأجهزة (كمبيوتر، لوحي، جوال).
  • 🛡️ أمان عالي: تشفير كلمات المرور بـ bcrypt، وجلسات آمنة محمية من هجمات XSS و SQL Injection.

🛠️ التقنيات المستخدمة

المجال التقنية
الواجهة الخلفية Node.js, Express.js
قاعدة البيانات SQLite3
الواجهة الأمامية HTML5, CSS3, Vanilla JavaScript
الأمان bcryptjs, crypto, httpOnly Cookies
معالجة الملفات fs (File System)

🚀 التثبيت والتشغيل

المتطلبات المسبقة

  • Node.js (الإصدار 14 أو أحدث)
  • npm (يأتي مثبتاً مع Node.js)

خطوات التثبيت

  1. استنساخ المشروع أو الانتقال إلى مجلده:

    cd /workspace
  2. تثبيت المكتبات المطلوبة:

    npm install

    ملاحظة: إذا واجهت أخطاءً تتعلق بـ sqlite3، قم بتشغيل الأمر التالي لإعادة بنائه:

    npm rebuild sqlite3
  3. تشغيل الخادم:

    node server.js
  4. فتح المتصفح: انتقل إلى الرابط: http://localhost:3000


📂 هيكلية المشروع

/workspace
├── server.js              # ملف الخادم الرئيسي (API + منطق الأعمال)
├── package.json           # إعدادات المشروع والمكتبات
├── README.md              # هذا الملف
│
├── public/                # ملفات الواجهة الأمامية
│   ├── index.html         # صفحة تسجيل الدخول
│   ├── signup.html        # صفحة إنشاء حساب جديد
│   ├── dashboard.html     # لوحة تحكم الإدارة
│   ├── news-home.html     # الصفحة الرئيسية للأخبار
│   ├── article-detail.html# صفحة عرض تفاصيل المقال
│   ├── section.html       # صفحة عرض قسم معين
│   ├── search.html        # صفحة نتائج البحث
│   ├── site-settings.html # صفحة إعدادات الموقع
│   │
│   ├── script.js          # منطق المصادقة وتسجيل الدخول
│   ├── dashboard.js       # منطق لوحة التحكم (إضافة/تعديل أخبار)
│   ├── news-home.js       # منطق عرض الصفحة الرئيسية
│   ├── article-detail.js  # منطق عرض التفاصيل
│   ├── site-config.js     # تطبيق إعدادات الموقع (الألوان والشعار)
│   ├── analytics.js       # (ملف احتياطي/تحليلات)
│   ├── search.js          # منطق البحث
│   └── section.js         # منطق عرض الأقسام
│
└── data/                  # مجلد البيانات (يُنشأ تلقائياً)
    ├── news.db            # قاعدة بيانات SQLite
    ├── articles.json      # بيانات تجريبية أولية (اختياري)
    └── site-settings.json # حفظ تخصيصات الموقع

🔑 استخدام النظام

1. التسجيل الأول

عند تشغيل النظام لأول مرة، قم بزيارة صفحة "إنشاء حساب" (signup.html).

  • أول مستخدم يسجل سيحصل تلقائياً على صلاحية مدير (Admin).
  • المستخدمون اللاحقون سيكونون قراء (Readers) افتراضياً ما لم يتم تعديلهم يدوياً في قاعدة البيانات.

2. لوحة التحكم (Dashboard)

بعد تسجيل الدخول كمدير، يمكنك:

  • إضافة خبر جديد: اكتب العنوان، الملخص، المحتوى، اختر القسم والمنطقة، وأضف رابط صورة.
  • تعديل الأخبار: قائمة بجميع المقالات مع خيارات التعديل والحذف.
  • إدارة العواجل: إضافة عناوين عاجلة تظهر في شريط الأخبار العاجلة.

3. إعدادات الموقع

من صفحة الإعدادات، يمكنك تغيير:

  • اسم الموقع والشعار (رابط الصورة).
  • الألوان الرئيسية (لون الهيدر، لون الروابط، الخلفيات).
  • النصوص الثابتة مثل "حقوق النشر".

📡 واجهة برمجة التطبيقات (API Endpoints)

يعرض الخادم مجموعة من مسارات API التي تستخدمها الواجهة الأمامية:

الطريقة المسار الوصف الصلاحية
POST /api/register تسجيل مستخدم جديد عام
POST /api/login تسجيل الدخول عام
POST /api/logout تسجيل الخروج مستخدم
GET /api/articles جلب قائمة المقالات (مع فلاتر) عام
GET /api/articles/:id جلب تفاصيل مقال محدد عام
POST /api/articles إنشاء مقال جديد Admin
PUT /api/articles/:id تحديث مقال موجود Admin
DELETE /api/articles/:id حذف مقال Admin
GET /api/breaking جلب عناوين العواجل عام
POST /api/breaking إضافة عاجل Admin
GET /api/settings جلب إعدادات الموقع عام
POST /api/settings حفظ إعدادات الموقع Admin
GET /api/search البحث في الأخبار عام

🗄️ قاعدة البيانات

يستخدم المشروع قاعدة بيانات SQLite محلية (data/news.db). تتكون من الجداول التالية:

  1. users: تخزين بيانات المستخدمين (الاسم، البريد، كلمة المرور المشفرة، الصلاحية).
  2. sessions: تخزين جلسات الدخول النشطة لضمان الأمان.
  3. articles: تخزين جميع المقالات والتفاصيل المرتبطة بها.
  4. breaking_headlines: تخزين عناوين الأخبار العاجلة.

لا حاجة لتثبيت خادم قاعدة بيانات منفصل؛ فالملف يُنشأ ويُدار تلقائياً عند بدء التشغيل.


🛡️ الأمان

  • كلمات المرور: مشفرة باستخدام خوارزمية bcrypt قبل التخزين.
  • الجلسات: تُولد رموز جلسات عشوائية آمنة باستخدام crypto وتخزن في HttpOnly Cookies لمنع الوصول إليها عبر JavaScript (حماية من XSS).
  • SQL Injection: جميع استعلامات قاعدة البيانات تستخدم Prepared Statements لمنع حقن الأكواد الخبيثة.
  • التحقق من المدخلات: يتم التحقق من صحة البيانات المرسلة من قبل المستخدم قبل معالجتها.

🔧 التطوير والصيانة

إعادة تعيين قاعدة البيانات

لحذف جميع البيانات والبدء من جديد، قم بحذف ملف data/news.db وأعد تشغيل الخادم. سيتم إنشاء قاعدة بيانات جديدة تلقائياً.

إضافة بيانات تجريبية

يمكنك وضع ملف باسم articles.import.json في مجلد data/ يحتوي على مصفوفة من المقالات ليتم استيرادها تلقائياً عند بدء التشغيل لأول مرة.


📝 الترخيص

هذا المشروع مفتوح المصدر ومتاح للاستخدام الشخصي والتعليمي.


🤝 المساهمة

نرحب بالمساهمات لتحسين المنصة! يمكنك الإبلاغ عن الأخطاء أو اقتراح ميزات جديدة عبر فتح Issue في المستودع.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages