يتطلب بناء نظام خلفي قابل للتوسع لمدونة بنيةً مُحكمة التنظيم، ونظام مصادقة، وواجهات برمجة تطبيقات موثقة بشكل صحيح. تُعدّ واجهة برمجة تطبيقات NestJS MongoDB Blog API قالبًا جاهزًا للاستخدام في بيئات الإنتاج، مصممًا لمساعدة المطورين على بناء منصات مدونات حديثة بسرعة باستخدام NestJS وMongoDB JWT authenticationوSwagger .
يوفر هذا المشروع واجهة برمجة تطبيقات RESTful كاملة تتضمن وحدات للمستخدمين والمنشورات والفئات والوسوم والتعليقات والمصادقة والتحكم في الوصول القائم على الأدوار .
المستودع: https://github.com/bfotool/nestjs-mongodb-blog-base
ما هي واجهة برمجة تطبيقات مدونة NestJS MongoDB؟
NestJS MongoDB Blog API عبارة عن قالب خلفي مفتوح المصدر تم بناؤه باستخدام NestJS 11 و MongoDB والذي يوفر واجهة برمجة تطبيقات REST كاملة الوظائف للمدونات.
صُمم ليكون بمثابة أساس للبناء:
منصات التدوين
أنظمة إدارة المحتوى بدون واجهة مستخدم
واجهات برمجة تطبيقات نشر المحتوى
مواقع التوثيق
مدونات أعمال المطورين
يتبع المشروع البنية المعيارية التي أوصت بها NestJS ، مما يضمن قابلية التوسع والصيانة.
المستودع: https://github.com/bfotool/nestjs-mongodb-blog-base
الميزات الرئيسية
المصادقة والتفويض
تتضمن واجهة برمجة التطبيقات نظام مصادقة آمن باستخدام رموز JWT.
تشمل ميزات المصادقة الرئيسية ما يلي:
رموز الوصول والتحديث JWT
التحكم في الوصول القائم على الأدوار(RBAC)
تشفير كلمات المرور باستخدام bcrypt
مسارات واجهة برمجة التطبيقات المحمية باستخدام الحماية
آلية تحديث الرمز المميز
يتم دعم ثلاثة أدوار افتراضية للمستخدم:
مسؤل
مؤلف
قارئ
وهذا يسهل إدارة الأذونات عبر نقاط نهاية واجهة برمجة التطبيقات المختلفة.
وحدات المدونة الكاملة
يتضمن المشروع العديد من الوحدات النمطية المنفذة بالكامل والتي تغطي جميع وظائف المدونة الأساسية.
وحدة المصادقة
يتولى إدارة المصادقة وجلسات المستخدمين.
تشمل نقاط النهاية ما يلي:
POST /auth/registerPOST /auth/loginPOST /auth/refreshPOST /auth/logoutGET /auth/profile
وحدة المستخدمين
يدير حسابات المستخدمين وملفاتهم الشخصية.
نقاط النهاية:
GET /usersGET /users/:idPATCH /users/:idDELETE /users/:id
تتطلب عمليات الكتابة صلاحيات المسؤول .
وحدة المنشورات
تتولى وحدة المنشورات إدارة محتوى المدونة.
تشمل الميزات ما يلي:
ترقيم الصفحات
تصفية النتائج حسب الفئة أو الوسم أو المؤلف
فرز
البحث في النص الكامل
المقالات المميزة
نقاط النهاية:
GET /postsGET /posts/featuredGET /posts/:slugPOST /postsPATCH /posts/:idDELETE /posts/:id
وحدة التصنيفات
ينظم منشورات المدونة في فئات.
نقاط النهاية:
GET /categoriesGET /categories/:slugPOST /categoriesPATCH /categories/:idDELETE /categories/:id
وحدة الوسوم
يُتيح إمكانية إضافة وسوم مرنة لمنشورات المدونة.
نقاط النهاية:
GET /tagsGET /tags/:slugPOST /tagsPATCH /tags/:idDELETE /tags/:id
وحدة التعليقات
يدعم سلاسل التعليقات والردود المتداخلة.
نقاط النهاية:
GET /comments/post/:postIdGET /comments/:id/repliesPOST /commentsPATCH /comments/:idDELETE /comments/:id
إمكانيات واجهة برمجة التطبيقات
ترقيم الصفحات
تدعم جميع نقاط نهاية القوائم الترقيم.
مثال:
GET /posts?page=1&limit=6
تصفية
يمكن تصفية المنشورات حسب الفئة أو الوسم أو المؤلف.
مثال:
GET /posts?category=web-development
البحث في النص الكامل
تم تفعيل خاصية البحث في المنشورات.
مثال:
GET /posts?search=nestjs+mongodb
فرز
يمكن فرز استجابات واجهة برمجة التطبيقات(API) حسب حقول مختلفة.
مثال:
GET /posts?sortBy=createdAt&sortOrder=desc
توليد تلقائي للرصاص
عند إنشاء المنشورات، يقوم النظام تلقائيًا بإنشاء رابط URL سهل الاستخدام من العنوان باستخدام أداة slugify .
مثال:
Building REST APIs with NestJS
→ building-rest-apis-with-nestjs
حساب وقت القراءة
تقوم واجهة برمجة التطبيقات(API) تلقائيًا بحساب وقت القراءة المقدر بناءً على طول محتوى المنشورات.
تنسيق استجابة واجهة برمجة التطبيقات المتسق
تتبع جميع الردود بنية قياسية:
{
"success": true,
"data": {},
"timestamp": "2026-01-01T10:00:00Z"
}
هذا يحسن تكامل الواجهة الأمامية وتصحيح الأخطاء.
مجموعة التقنيات
تم بناء الواجهة الخلفية باستخدام حزمة Node.js الحديثة.
| طبقة | تكنولوجيا |
|---|---|
| نطاق | NestJS 11 |
| لغة | تايب سكريبت 5.7 |
| قاعدة البيانات | MongoDB 8 |
| التصميم والتصنيع الأصلي | مونغوس 8 |
| المصادقة | Passport.js + JWT |
| تصديق | مدقق الفئات |
| وثائق واجهة برمجة التطبيقات | Swagger OpenAPI |
| أمان كلمة المرور | bcrypt |
| مولد العناكب | slugify |
| الاختبار | مزحة |
هيكل المشروع
يتبع المشروع بنية معيارية.
src/
├── auth/
├── users/
├── posts/
├── categories/
├── tags/
├── comments/
├── common/
└── seed/
تشمل المكونات المهمة ما يلي:
التحقق من صحة DTO
مخططات مونغوس
فلاتر الاستثناء العالمية
معترضات الاستجابة
حراس JWT
دور مصممي الديكور
يحافظ هذا الهيكل على تنظيم قاعدة التعليمات البرمجية وقابليتها للتوسع.
كيفية تثبيت المشروع وتشغيله
المتطلبات الأساسية
قبل التثبيت، تأكد من توفر ما يلي:
Node.js 18.17+
MongoDB 6+
npm أو yarn أو pnpm
استنساخ المستودع
git clone https://github.com/bfotool/nestjs-mongodb-blog-base
cd nestjs-mongodb-blog-base
تثبيت التبعيات
npm install
ضبط متغيرات البيئة
انسخ ملف بيئة المثال:
cp .env.example .env
قم بتحديث القيم التالية:
MONGODB_URI=
JWT_ACCESS_SECRET=
JWT_REFRESH_SECRET=
قم بتعبئة قاعدة البيانات
قم بتعبئة قاعدة البيانات ببيانات نموذجية:
npm run seed
لإعادة الضبط وإعادة التوزيع:
npm run seed:refresh
ابدأ تشغيل خادم التطوير
npm run start:dev
عنوان URL الأساسي لواجهة برمجة التطبيقات:
http://localhost:3000/api/v1
وثائق Swagger:
http://localhost:3000/api/docs
البيانات الافتراضية المُدخلة
يقوم البرنامج النصي الأولي بإنشاء بيانات نموذجية للاختبار.
| كيان | عدد |
|---|---|
| المستخدمون | 5 |
| فئات | 5 |
| الوسوم | 28 |
| دعامات | 10 |
| تعليقات | 6 |
بيانات تسجيل الدخول الافتراضية
كلمة المرور لجميع المستخدمين المسجلين:
admin123
الحسابات:
| دور | بريد إلكتروني |
|---|---|
| مسؤل | [email protected] |
| مؤلف | [email protected] |
| مؤلف | [email protected] |
| مؤلف | [email protected] |
| قارئ | [email protected] |
وثائق واجهة برمجة تطبيقات Swagger
تتوفر وثائق واجهة برمجة التطبيقات التفاعلية على الرابط التالي:
http://localhost:3000/api/docs
يوفر Swagger ما يلي:
اختبار نقاط النهاية التفاعلي
JWT authenticationيدعم
توثيق مخطط الطلب والاستجابة
لماذا نستخدم هذا المستودع؟
تُعد واجهة برمجة تطبيقات مدونة NestJS MongoDB نقطة انطلاق قوية للمطورين الذين يبنون واجهة خلفية حديثة للمدونات.
تشمل المزايا ما يلي:
بنية NestJS المعيارية النظيفة
مصادقة مدمجة ونظام التحكم في الوصول المستند إلى الأدوار
وثائق واجهة برمجة تطبيقات Swagger جاهزة للاستخدام
تكامل MongoDB باستخدام Mongoose
نظام تهيئة قواعد البيانات
هيكل المشروع الجاهز للإنتاج
المستودع: https://github.com/bfotool/nestjs-mongodb-blog-base



