Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/l1ber2y/apartments_search

This project was developed to secure the principles of design and development of modern web-applications.
https://github.com/l1ber2y/apartments_search

docker git java-17 maven nginx-proxy open-api postgresql spring-boot

Last synced: 24 days ago
JSON representation

This project was developed to secure the principles of design and development of modern web-applications.

Awesome Lists containing this project

README

        

# Description

Web application based on microservice architecture style. It grants information about relevant flat rent and sale options.

# How to run

To start the application, follow these steps:

### 1. Clone the repository

Clone project repository by this command:

```bash
git clone https://github.com/L1BER2Y/apartments_search.git
```

### 2. Next, go to the root directory and start application in docker by following command:

```bash
docker compose up -d
```

# Application diagram:
architecture-diagram

# Application microservices:

**[User-service](https://github.com/L1BER2Y/apartments_search/tree/main/user-service)**
- This microservice is responsible for admin (creating/editing users, user information, and user (registering, verification, logging in, user information) functions.
- Also it has user action tracking functionality, that was implemented with the help of Aspect-oriented programming.

**[Flats-service](https://github.com/L1BER2Y/apartments_search/tree/main/flats-service)**
- Flats-service is used to display information about flats.
- You can also specify you request with filters (price, bedrooms, area, floors, photos).

**[Parser-service](https://github.com/L1BER2Y/apartments_search/tree/main/parser-service)**
- This microservice parses info about flats from https://re.kufar.by/ website in real time.
- Parsed information is stored into application database.

**[Audit-service](https://github.com/L1BER2Y/apartments_search/tree/main/audit-service)**
- Audit-service accepts audited actions from user-service and stores them into database.
- It has admin feature to check audited actions for chosen user by id.

**[Report-service](https://github.com/L1BER2Y/apartments_search/tree/main/report-service)**
- Service create reports based on user's audited actions.
- It accepts report requests, can display report status, give page of reports, provides created report download link.

**[Mail-service](https://github.com/L1BER2Y/apartments_search/tree/main/mail-service)**
- Responsible for sending verification codes to email addresses during user registration.

# Used technologies and frameworks:
- [Java 17](https://docs.oracle.com/en/java/javase/17/docs/api/)
- [Nginx](https://nginx.org/en/)
- [JUnit5](https://junit.org/junit5/)
- [Docker](https://www.docker.com/)
- [Maven 3.9.6](https://maven.apache.org/)
- [H2 Database](https://www.h2database.com/html/main.html)
- [PostgreSQL 16](https://www.postgresql.org/)
- [Spring Boot 3.2.0](https://spring.io/projects/spring-boot)
- [Spring Security 3.2.0](https://spring.io/projects/spring-security)
- [Spring Data JPA 3.2.0](https://spring.io/projects/spring-data-jpa)
- [Spring Cloud OpenFeign 4.1.0](https://spring.io/projects/spring-cloud-openfeign)

# Future plans:
- ~~Unit-testing~~
- Expand audit functionality
- NoSQL database
- Message broker (RabbitMQ)