NABZA Platform is a sophisticated AI-driven CV builder platform specifically designed for Arabic speakers, helping them create professional and customizable CVs with ease. This repository contains the backend API that powers the platform.
A STARTER VERSION, Schema - UML Diagrams
A STARTER VERSION, Use-case (routs) - UML Diagrams
- AI-Powered Content Suggestions: Integration with OpenAI and Google AI models for smart CV content recommendations
- File Storage: Secure file storage using Amazon S3 buckets
- Comprehensive Auth System:
- Social media integration (Google, LinkedIn)
- Email verification
- JWT-based authentication
- Secure password handling with bcrypt
- Security Features:
- Rate limiting
- CORS protection
- XSS prevention
- MongoDB injection protection
- Helmet security headers
- Stripe integration:
- PayPal integration:
- Chat System: Real-time communication using Socket.IO
- Notifications: Instant notifications for (tell now):
- Chat messages
- Transactional Emails: Using Nodemailer for reliable email delivery
- Email verification
- Password reset instructions
- Custom HTML templates with RTL support for Arabic content
- Branded emails with نبذة platform identity
- Runtime: Node.js
- Framework: Express.js
- Database: MongoDB with Mongoose ODM
- Real-time: Socket.IO
- OpenAI API
- Google Generative AI (In case of OpenAI fails)
- Storage: Amazon S3 (Free Instance)
- Deployment: Render (Free Instance)
- Passport.js
- JWT
- bcrypt
- Stripe API
- PayPal SDK
- Helmet
- Express Rate Limit
- Express Mongo Sanitize
- HPP (HTTP Parameter Pollution)
- CORS
The platform implements various security measures:
- JWT-based authentication
- Password hashing with bcrypt
- Rate limiting for API endpoints
- XSS protection
- Security headers with Helmet
- CORS configuration
- MongoDB injection prevention
Simple API documentation is available in OpenAPI/Swagger format:
- Development:
http://localhost:3000/api/v1/docs
- Production:
https://api.ragab.shop/api/v1/docs
The frontend application is built with Next.js and is available: