الجولات API
تعد Tours API واجهة قوية مريحة مصممة لتزويد المستخدمين بوظائف شاملة لإدارة الجولات. يمكن للمستخدمين الوصول إلى مجموعة متنوعة من الميزات بما في ذلك مشاهدة الجولات المتاحة وحجزها من خلال بوابة الدفع الشريطية وجولات التصنيف بعد الانتهاء وتوظيف مرشحات وترقيم الصفحات وفرز. تدعم API إمكانات إضافية مثل إنشاء حساب المستخدم وإدارته ، إضافة الجولة والتحرير ، وإدارة المراجعة. والجدير بالذكر أن التنفيذ يشتمل على التخزين المؤقت Redis لتحسين الكمون والسرعة. يتم زيادة التدابير الأمنية من خلال التشفير القوي ، وتقنيات الضغط ، والحد من المعدل. علاوة على ذلك ، يدمج المشروع طرق الأداة المساعدة للاتصال بالبريد الإلكتروني باستخدام NodeMailer (SendGrid) ويسهل تحميل الملفات إلى حلول تخزين خارجية مثل Cloudinary أو ImageKit.
- يتم نشر المشروع الكامل عند العرض ويمكن الوصول إليه هنا.
- ملاحظة: يتم استضافة واجهة برمجة التطبيقات حاليًا على خطة تجسيد مجانية وقد تستغرق بضع ثوان لتحميلها لأول مرة.
الميزات الرئيسية -
- الوظيفة : عرض الجولات والكتب ، والجولات المكتملة ، والتصفية وفرز الجولات ، وإدارة حسابات المستخدمين ، وإدارة المراجعات.
- تحسين الأداء : يتم استخدام التخزين المؤقت Redis لتعزيز الكمون والسرعة.
- التدابير الأمنية : يتم تنفيذ آليات تشفير قوية وضغط وآليات الحد من المعدل.
- تكامل الطرف الثالث : يستخدم Stripe لمعالجة الدفع ، NodeMailer (SendInBlue) للاتصال بالبريد الإلكتروني ، و Clourinary/ImageKit لتخزين الملفات الخارجية.
- الميزات الشاملة : يدعم ترقيم الصفحات والفرز وتصفية العمليات المتعلقة بالجولات.
جدول المحتويات
- المتطلبات الأساسية
- تثبيت
- الاستخدام
- وثائق API
- بنيت مع
- واجهت الصعوبات
- النطاق المستقبلي
- رخصة
المتطلبات الأساسية
- يجب أن يكون نظامك قد تم تثبيته Node.js. إذا لم يكن كذلك ، يمكنك تثبيته من هنا.
- يجب أن يكون لديك حساب Mongodb Atlas. إذا لم يكن كذلك ، يمكنك إنشاء واحدة من هنا.
- يجب أن يكون لديك حساب شريط. إذا لم يكن كذلك ، يمكنك إنشاء واحدة من هنا.
- يجب أن يكون لديك حساب sendInblue. إذا لم يكن كذلك ، يمكنك إنشاء واحدة من هنا.
- يجب أن يكون لديك حساب ImageKit. إذا لم يكن كذلك ، يمكنك إنشاء واحدة من هنا.
- للاختبار ، يمكنك استخدام ساعي البريد أو الأرق أو تمديد Thunderclient المتاح على VSCode.
- للتخزين المؤقت ، يجب أن يكون لديك حساب redis. في هذا المشروع ، قمت باستخدام redis من Render.com. إذا لم يكن كذلك ، يمكنك إنشاء واحدة من هنا.
تثبيت
- استنساخ المستودع
git clone https://github.com/varshil-shah/tours-api.git
- تثبيت حزم NPM
npm install or yarn install
- قم بإنشاء ملف .env في دليل الجذر ، مثل ملف .env.example ، وأضف متغيرات البيئة
- تشغيل التطبيق
الاستخدام
- يساعدك على إنشاء وقراءة وتحديث وحذف الجولات والمستخدمين والمراجعات والحجوزات.
- يوفر لك القدرة على تصفية الجولات وفرز وتوصيل الطرز وغيرها من الطرز أيضًا.
- دمج واجهة برمجة التطبيقات في أي تطبيق للواجهة الأمامية واستخدم واجهة برمجة التطبيقات الخاصة بنا لإنشاء موقع ويب لجولات يعمل بكامل طاقته.
- إدارة المستخدمين والجولات والمراجعات والحجوزات بسهولة.
بنيت مع
- Node.js - Node.js® هو وقت تشغيل JavaScript مبني على محرك V8 JavaScript من Chrome.
- Express.js - إطار عمل سريع ، غير متصمم ، الحد الأدنى من العقد على شبكة الإنترنت لـ Node.js.
- MongoDB - MongoDB هي غرض عام ، وقاعدة بيانات قائمة على المستندات ، التي تم تصميمها لمطوري التطبيقات الحديثة ولعلبة السحابة.
- Mongoose - نمذجة كائن MongoDB الأنيقة لـ Node.js.
- Redis - Redis عبارة عن مصدر مفتوح (BSD مرخص) ، ومتجر بنية البيانات في الذاكرة ، ويستخدم كقاعدة بيانات ، وذاكرة التخزين المؤقت ، وسيط الرسائل.
- JWT - JSON Web Tokens هي طريقة RFC 7519 المعيارية المفتوحة ، لتمثيل المطالبات بشكل آمن بين طرفين.
واجهت الصعوبات
- كان الجزء الأكثر صعوبة في المشروع هو تنفيذ ميزة تحميل الملف. اضطررت إلى الذهاب إلى وثائق ImageKit لفهم كيفية تحميل الملفات على خوادمها. اضطررت أيضًا إلى الذهاب إلى وثائق Multer و Sharp لفهم كيفية تحميل الملفات على الخادم المحلي.
- كان الجزء الثاني الأكثر صعوبة في المشروع هو تنفيذ ميزة الدفع. اضطررت إلى المرور بتوثيق Stripe لفهم كيفية تنفيذ ميزة الدفع في التطبيق.
- كان الجزء الثالث الأكثر صعوبة في المشروع هو تنفيذ ميزة التصفية والفرز والترقيم. اضطررت إلى المرور من خلال وثائق Mongoose لفهم كيفية تنفيذ ميزة التصفية والفرز والترقيم في التطبيق.
النطاق المستقبلي
- إضافة تطبيق الواجهة الأمامية إلى API.
- قم بتنفيذ الرموز المميزة للوصول وتحديثها لتحسين الأمان.
- تنفيذ أقصى محاولات تسجيل الدخول وآلية القفل.
- أضف ميزة للبحث عن جولات حسب الموقع.
رخصة
رخصة معهد ماساتشوستس للتكنولوجيا
شكر وتقدير
بفضل Jonas Schmedtmann على مساره المذهل على Node.js و Express.js و Mongodb و Mongoose.