Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/anmol-srv/realtime-notification-system
A microservices-based real-time notification system built with Node.js, Express, MongoDB, RabbitMQ, and Socket.IO. It handles high-volume message processing and delivers real-time notifications to users. Key features include JWT authentication, role-based access control, Swagger API documentation, and retry mechanisms for failed message processing.
https://github.com/anmol-srv/realtime-notification-system
aws express jwt mongodb node rabbitmq socket-io
Last synced: 1 day ago
JSON representation
A microservices-based real-time notification system built with Node.js, Express, MongoDB, RabbitMQ, and Socket.IO. It handles high-volume message processing and delivers real-time notifications to users. Key features include JWT authentication, role-based access control, Swagger API documentation, and retry mechanisms for failed message processing.
- Host: GitHub
- URL: https://github.com/anmol-srv/realtime-notification-system
- Owner: Anmol-Srv
- Created: 2024-07-06T21:16:59.000Z (5 months ago)
- Default Branch: main
- Last Pushed: 2024-08-05T14:19:58.000Z (4 months ago)
- Last Synced: 2024-08-24T02:53:31.041Z (3 months ago)
- Topics: aws, express, jwt, mongodb, node, rabbitmq, socket-io
- Language: JavaScript
- Homepage: https://realtime-notification-system.onrender.com
- Size: 63.5 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Realtime Notification System
This is a microservices-based real-time notification system built using Node.js, Express, MongoDB, RabbitMQ, and Socket.IO. The system handles high-volume message processing and delivers real-time notifications to users.
## Features
- User authentication with JWT
- Notification creation and retrieval
- Real-time notifications using WebSocket (Socket.IO)
- Message queuing with RabbitMQ
- Swagger API documentation
- Role-based access control (RBAC)
- Pagination for GET endpoints
- Retry mechanism for failed message processing## Technologies Used
- Node.js
- Express
- MongoDB
- Mongoose
- RabbitMQ
- Socket.IO
- JSON Web Tokens (JWT)
- Swagger
- amqplib## Getting Started
### Prerequisites
- Node.js
- npm or yarn
- MongoDB
- RabbitMQ### Installation
1. Clone the repository:
```bash
git clone https://github.com/your-username/realtime-notification-system.git
cd realtime-notification-system```
2. Install dependencies:
```
npm install
```3. Create a .env file in the root directory and add the following environment variables:
```
MONGODB_URI=
JWT_SECRET=
RABBITMQ_URI=
```### Running the Project
1. Start the MongoDB server.2. Start the RabbitMQ server.
3. Start the Node.js server:
```
npm start
```4. Start the notification consumer service:
```npm run consumer```5. Open http://localhost:3000 in your browser to access the application.
## API Documentation
Swagger is used to document the API. You can access the Swagger UI at:
```http://localhost:3000/api-docs```## Project Structure
```arduino
realtime-notification-system/
│
├── public/
│ └── index.html
├── src/
│ ├── config/
│ │ └── swagger.js
│ ├── controllers/
│ │ ├── authController.js
│ │ └── notificationController.js
│ ├── middlewares/
│ │ └── authMiddleware.js
│ ├── models/
│ │ ├── user.js
│ │ └── notification.js
│ ├── routes/
│ │ ├── auth.js
│ │ └── notifications.js
│ ├── services/
│ │ └── notificationConsumer.js
│ ├── utils/
│ ├── app.js
│ └── server.js
├── .env
├── package.json
├── Procfile
└── vercel.json
```## License
This project is licensed under the MIT License - see the LICENSE file for details.### Summary
This `README.md` file provides a comprehensive guide to setting up, running, and deploying your project. It includes sections for prerequisites, installation, project structure, running the project, API documentation, and deployment instructions.
Feel free to modify the content to better suit your specific project details and requirements. If you encounter any issues or have specific questions, feel free to ask!