This project is a real estate website completion project developed as a full stack using Java, Spring Boot in the back-end and React and Next.js in the front-end.
The real estate website project is designed to allow the user to create advertisements by communicating with each other through many microservices.
-
User can check balance and usage time by looking at profile details.
-
User can create, edit, delete advertisement and access its details.
-
The user can turn his ads, which are initially IN_REVIEW, into ACTIVE and PASSIVE.
-
Can make package purchases and payments.
-
Can view the details of the packages purchased.
✔️ Spring Web
✔️ Spring Data JPA
✔️ Lombok
✔️ RabbitMQ
✔️ Hibernate
✔️ Model Mapper
✔️ Open Feign
✔️ Service Discovery
❶ Users can register to the system.
❷ The user can log in to the system with the email and password he/she registered with. If the login is successful, a token belonging to the user is created and he can perform authorized transactions with this token.
❸ Each user's initial right to post ads is "0". In order to post an ad, he/she must purchase a package.
❹ The right to publish advertisements and the validity period of the purchased package are defined in the user model.
❺ The package includes the right to publish 10 advertisements and the usage period of the package is 30 days.
❻ When the user wants to buy a package, his ad balance and usage time are checked.
-
If the package has expired, the remaining rights will be reset and you will need to buy the package again.
- If the user purchases a package and makes the payment, the purchased package is defined to the user's profile via rabbitMQ.
- The right to publish 10 advertisements and a 30-day usage period are added based on the day of purchase.
-
If the usage period has not expired, the balance will not be reset.
- If the user purchases a new package and the payment transaction is confirmed, 10 advertising rights will be added to the remaining usage rights and the usage period will be increased by 30 days.
❼ The purchase is made according to the ID of the user logged into the system.
(This process is performed according to the information received from the token in the header.)
❽ When the user wants to create an advertisement, advertisement rights and usage time are checked.
-
If the package has expired or there are no ad rights left, the ad publishing process will be canceled and an exception error message will be returned to the user.
-
If the package has not expired and there is a right to advertise, the ad creation process will be successful. The cost of the package is deducted from the user's balance.
❾ When the ad is created, the ad status is IN_REVIEW. The user can change the status of the ad to ACTIVE or PASSIVE from another service.
✔️ See the open issues for a full list of proposed features (and known issues)!
≫ There are 6 microservices that communicate with each other. These microservices are managed by the gateway. Instance management is provided with service discovery.
- Advert status changing is added to the queue by AdvertService and performed asynchronously by AdvertStatusService.
- The package identification process is added to the queue by PurchaseService and performed asynchronously by UserService.
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". ⭐ Don't forget to give the project a star! Thanks again! ⭐
❶ Fork the Project
❷ Create your Feature Branch (git checkout -b feature/real-estate-final-project
)
❸ Commit your Changes (git commit -m 'Add some real-estate-final-project'
)
❹ Push to the Branch (git push origin feature/real-estate-final-project
)
❺ Open a Pull Request
📧 E-mail: [email protected]
📱 Mobile Phone: (+90) 507 038 33 23
📋 Project Link: https://github.com/bertuginal/real-estate-final-project