Skip to content

Multi-level program system for automizing cleaning processes for different placement owners.

Notifications You must be signed in to change notification settings

rovein/purity-service

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PurityService

My personal project for "Software Architecture" course in NURE.

This is the program system for automizing cleaning processes for placement owners.

It consists of Backend, Frontend, Mobile Android application and IoT device.

Project demo (some features were included after this recording).

Technologies and details

  1. The backend was implemented using Java, Spring Boot, Spring MVC, Spring Data JPA (MySql Driver), Spring Security, Maven, Lombok, etc. REST architectural style and REST API was implemented, documentation using Swagger.
  2. The frontend was implemented using React and JavaScript, used some libraries for loading files, modals, animating loaders and progress bars. Building with npm.
  3. Mobile application was developed using Kotlin and Android OS. Retrofit2 used for asynchronous HTTP requests.
  4. For IoT was used Arduino Uno R3, Ethernet module for network communication, DHT11 humidity and temperature sensor and MQ135 air quality sensor, as well as some related libraries.

Communication established via HTTP protocol, that is, the web client interacts with the server via fetch api, mobile application via retrofi2, IoT via EthernetClient and plain HTTP request.

Implemented features

Briefly about the implemented functions: registration, authorization, profile management, all CRUD operations, sending letters to mail, administration functions: managing user accounts, blocking accounts, obtaining a backup copy of the database, configuring IoT. Business logic: monitoring the level of pollution and indicators of the placements, the presence of 2 levels of access (in addition to the administrator): the owner of the placements and the cleaning provider, automatic calculation of the cost of cleaning at the conclusion of the contract, the application of the coefficient of settlement of the cost of cleaning to all future contracts for cleaning (the higher the level of pollution in the room, the higher the cost of cleaning).

ToDo section ☑

  • add the WebSockets protocol so that the room state indicators are updated in real time ☐
  • start implementing React components using TypeScript and Hooks API (now all components are class-based) ☐
  • rewrite fetch calls on the frontend to axios, write axios interceptors for requests and responses, remove code duplication ☐
  • refactor and improve the code, add more design patterns ☐
  • optimize Hibernate queries and JPA mapping ☐
  • cover code by tests (unit, mock, persistence, API, integration) ☐
  • refactor and improve Stream API, Optional API and lambda expressions usage ☐
  • add logging, improve the error handling system ☐
  • divide backend into the microservices, use Spring Cloud, AWS, try use Apache Kafka ☐
  • use git flow, branching and PR on github (now all the commits were pushed to the master branch) ☐
  • improve UI and try new front-end features ☐
  • add new features to the system: password recovery, account activation (email), something like the ability to enable two-factor authentication, generate reports in PDF, improve the functionality of data backup, add SSO and OIDC ☐
  • add new interesting business functions that relate to the system ☐
  • deploy the application using Docker containers ☐

How to run

  1. Backend
    In backend root directory run next terminal command:
    mvn spring-boot:run
    (note: Maven has to be installed)
    or you can run it via your IDE (IntelliJ IDEA is preferred)
    Then you can navigate to the http://localhost:8080/swagger-ui.html and check backend REST API.
  2. Frontend
    • install node.js and npm
    • in frontend root directory run npm install
    • in frontend root directory run npm start
    • navigate to http://localhost:3000