Skip to content

Program system for flowers monitoring and storage.

Notifications You must be signed in to change notification settings

rovein/floristik-up

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

72 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FloristikUp

Another project for "Software Architecture" course in NURE.

This is the program system for automizing floristik businesses.

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 Java 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, 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, administration functions: managing user accounts, blocking accounts. Business logic: monitoring the storage of plants in placements, tracking microclimatic conditions, redistributing plants to other storage rooms under the condition of unfavorable microclimatic conditions.

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