---
**Assignment: Real-time Data Processing Backend with Test Cases**
**Objective:** The goal of this assignment is to assess the candidate's ability to design and implement a real-time data processing backend system using TypeScript and Node.js.
**Scenario:**
You are tasked with developing a real-time data processing system for a weather monitoring application. The system needs to collect, process, and provide real-time updates on weather data from various sensors. The assignment focuses on the backend processing aspects without involving complex game logic.
**Requirements:**
**Project Setup:**
1. Create a TypeScript project for the backend.
2. Implement basic user authentication for API access with minimal security measures.
**Data Collection:**
3. Develop a system to collect simulated weather data from sensors (e.g., temperature, humidity) at regular intervals.
4. Simulate data from multiple sensors across different locations.
**Real-time Data Processing:**
5. Use a message broker (e.g., RabbitMQ or Redis) for handling real-time data updates.
6. Implement data processing logic to analyze incoming data, calculate averages, and detect anomalies in real-time.
**API Endpoints:**
7. Create API endpoints to retrieve processed weather data, such as average temperature and humidity for a specific location or time range.
**Data Persistence:**
8. Store processed data and sensor metadata in a database (e.g., PostgreSQL) for historical analysis and reporting.
**Testing:**
9. Write unit tests for critical components of your backend system, including data processing logic and API endpoints. Use a testing library like Jest.
**Documentation:**
10. Provide clear documentation on how to set up and run the backend for the real-time data processing system, including how to run the test suite.
**Submission:**
Please submit a GitHub repository containing your TypeScript project. Include a README.md with setup instructions and details on how to run the test suite. Ensure that your project structure is well-organized and easy to navigate.
**Evaluation Criteria:**
Your solution will be evaluated based on code quality, adherence to best practices, real-time data processing functionality, API design, unit tests, documentation, and the ability to create a backend system for real-time weather data processing using TypeScript and Node.js.
---