- Express.js Server: RESTful API endpoints
- MongoDB: Data persistence
- RabbitMQ: Message queue for handling bulk orders
The application uses a publisher-subscriber pattern for processing bulk orders:
- Publisher (
orders.controller.js
): Publishes orders to RabbitMQ queue - Consumer (
orderConsumer.js
): Processes orders from queue and saves to MongoDB
- Node.js
- MongoDB
- RabbitMQ
- Docker and Docker Compose
- The system implements a pub/sub architecture for processing bulk orders:
- Orders are sent to /api/orders
- The controller publishes to RabbitMQ queue 'orders_queue'
- Returns 202 Accepted response
- orderConsumer.js listens to 'orders_queue'
- Validates and processes orders in batches
- Saves orders to MongoDB
- Acknowledges successful processing
- Next.js 15
- Tailwind CSS
- React Query
- Axios
- Campaign analytics and metrics visualization
- Real-time campaign performance tracking
- Quick access to recent campaigns and segments
- Create/Edit campaign workflows
- Campaign scheduling and timing controls
- Target audience selection through segments
- Campaign performance statistics
- Create dynamic customer segments
- Rule-based segmentation builder
- Segment analytics and insights
- Real-time segment size estimation
- Bulk order submission interface
- Order status tracking
- Real-time processing feedback
- Order history and analytics
- Connects with backend REST APIs
- Real-time updates using polling
- File upload handling for bulk operations
- Error handling and retry mechanisms
- React Query for server state
- Context API for global UI state