Developer Needed for UML-Based System Implementation with AMQP and RS485 Integration
Budget: $750 – $1,500 USD
Project Description:
We are looking for an experienced freelancer specializing in Node.js to implement a precisely defined system based on the provided UML model. The project includes implementing functionalities related to handling AMQP queues, logging, configuration, and integration with external systems.
General Purpose of the System:
The system will be responsible for receiving tasks from the AMQP queue and executing commands on lock and sensor controllers via the RS485 communication protocol. Additionally, the system will publish the states of locks and devices back to the queue, ensuring bidirectional communication.
Scope of Work:
1. System Implementation Based on the UML Model:
* Required number of classes to implement: at least 12 classes (according to the provided UML diagrams).
* Interfaces and detailed class structures will be provided.
* The code must adhere to the following principles:
* Clean Code.
* Design patterns (e.g., Factory, Singleton, Observer).
* SOLID principles.
* The code must comply with the Node.js LTS (stable version) standards.
2. AMQP Queue Handling:
* Reading lock operation tasks from the AMQP queue (e.g., RabbitMQ).
* Executing commands on the lock and sensor controller via the RS485 protocol.
* Publishing the states of locks and devices back to the appropriate queue.
* Complete documentation of the communication protocol with the device will be provided.
3. Asynchronous Log Export:
* Implementing system log export to the external Grafana Loki system via RESTful API HTTP.
* Using Node.js logging tools (e.g., Winston, Pino) that meet commercial licensing criteria and are actively maintained.
4. System Configuration:
* The application must be configurable through:
* CLI parameters.
* ENV variables.
* JSON files.
5. Library Selection and Usage:
* All libraries must meet the following criteria:
* License allowing commercial use.
* Last update not older than 12 months.
* The use of proven and stable Node.js solutions is required.
6. Quality and Testing:
* The code must be readable, well-documented, and adhere to SOLID principles and design patterns.
* Delivery of unit tests and integration tests for key functionalities is mandatory.
7. Project Consultations:
* The contractor should allocate 2 hours of project consultations within the project pricing.
Provided Resources:
* UML diagrams of classes and interfaces.
* Documentation of the RS485 communication protocol for device control.
* Detailed description of integration with the AMQP queue and Grafana Loki system.
* Development/test environment.
* Access to the device/controller KR-CU 16.
* Description of provided files:
* /docs/design/uml – graphic files (SVG) presenting the system model (packages, interfaces, entities, enums).
* /docs/design/c4-model.pdf – C4 model in PDF format.
* /models/uml – UML models in PlantUML format (source for SVG files).
* /resources/kr-cu16/docs – manual and protocol documentation for the KR-CU16 controller.
* /resources/kr-cu16/poc – PoC for controlling locks and retrieving states in Python.
Required Deliverables:
* Working source code with complete documentation.
* Unit and integration tests.
* Report on used libraries, including their versions and licenses.
We are looking for an experienced freelancer specializing in Node.js to implement a precisely defined system based on the provided UML model. The project includes implementing functionalities related to handling AMQP queues, logging, configuration, and integration with external systems.
General Purpose of the System:
The system will be responsible for receiving tasks from the AMQP queue and executing commands on lock and sensor controllers via the RS485 communication protocol. Additionally, the system will publish the states of locks and devices back to the queue, ensuring bidirectional communication.
Scope of Work:
1. System Implementation Based on the UML Model:
* Required number of classes to implement: at least 12 classes (according to the provided UML diagrams).
* Interfaces and detailed class structures will be provided.
* The code must adhere to the following principles:
* Clean Code.
* Design patterns (e.g., Factory, Singleton, Observer).
* SOLID principles.
* The code must comply with the Node.js LTS (stable version) standards.
2. AMQP Queue Handling:
* Reading lock operation tasks from the AMQP queue (e.g., RabbitMQ).
* Executing commands on the lock and sensor controller via the RS485 protocol.
* Publishing the states of locks and devices back to the appropriate queue.
* Complete documentation of the communication protocol with the device will be provided.
3. Asynchronous Log Export:
* Implementing system log export to the external Grafana Loki system via RESTful API HTTP.
* Using Node.js logging tools (e.g., Winston, Pino) that meet commercial licensing criteria and are actively maintained.
4. System Configuration:
* The application must be configurable through:
* CLI parameters.
* ENV variables.
* JSON files.
5. Library Selection and Usage:
* All libraries must meet the following criteria:
* License allowing commercial use.
* Last update not older than 12 months.
* The use of proven and stable Node.js solutions is required.
6. Quality and Testing:
* The code must be readable, well-documented, and adhere to SOLID principles and design patterns.
* Delivery of unit tests and integration tests for key functionalities is mandatory.
7. Project Consultations:
* The contractor should allocate 2 hours of project consultations within the project pricing.
Provided Resources:
* UML diagrams of classes and interfaces.
* Documentation of the RS485 communication protocol for device control.
* Detailed description of integration with the AMQP queue and Grafana Loki system.
* Development/test environment.
* Access to the device/controller KR-CU 16.
* Description of provided files:
* /docs/design/uml – graphic files (SVG) presenting the system model (packages, interfaces, entities, enums).
* /docs/design/c4-model.pdf – C4 model in PDF format.
* /models/uml – UML models in PlantUML format (source for SVG files).
* /resources/kr-cu16/docs – manual and protocol documentation for the KR-CU16 controller.
* /resources/kr-cu16/poc – PoC for controlling locks and retrieving states in Python.
Required Deliverables:
* Working source code with complete documentation.
* Unit and integration tests.
* Report on used libraries, including their versions and licenses.