plants-microservices
About The Project
The Plants App allows users to search for plants in database and add them to their user profile to be remainded about plant care routines also by e-mail. New users can register in the app by Google or login/password depending on preferences. Additional feature is live chat on one of the available topics.
Technical Features
Frontend:
- Vite
- Axios with interceptors
- StompJs / SockJs-client
- MUI
- Styled Components
- React Router
- hooks: useContext, useState, useEffect, useCallback, useMemo, useRef, useNavigate...
- custom hooks
- Lodash - debounce
- Google reCaptcha
Backend:
- Microservices architecture
- Eureka Discovery server
- Api Gateway with Web Flux Spring Security Configuration and Custom Filter - JWT Token
- Spring Security - Username/Password registration/login + OAuth2.0 Google registration/login
- Kafka Message Broker - email notifications
- Websockets - live chat
- Google reCaptcha
- Zipkin
- PostgreSQL
Application Presentation:
Registration
Login with OAuth 2.0
Adding Plant
Chat with other people
Built With
Frontend:
Backend:
Other Technologies:
Running the Application
In Docker:
-
Clone the Repository.
-
Create accounts for Google OAuth2.0 and Google reCaptcha and define the following environment variables in you operating system:
- ${GOOGLE_OAUTH_CLIENT_ID}
- ${GOOGLE_OAUTH_CLIENT_SECRET}
- ${GOOGLE_RECAPTCHA_SECRET}
- ${GOOGLE_RECAPTCHA_SITE_KEY}
-
Provide google email and password (the account must be configured to enable sending e-mails from an application) and assign them to the following environment variables in you operating system:
- ${MAIL_SENDER_USERNAME}
- ${MAIL_SENDER_PASSWORD}
-
Finally create three PostgreSQL databases and also assign them to the following environment variables in you operating system:
- ${CHAT_DB}
- ${NOTIFICATIONS_DB}
- ${PLANTS_DB}
- ${POSTGRES_USER}
- ${POSTGRES_PASSWORD}
-
In the console navigate to the main plants-microservices directory and run "docker compose up" command
On local machine
- Clone the Repository.
- Set up all the accounts and enviroment variables described above in the Running in Docker section.
Client Application:
- Navigate to the client directory. Install dependencies using the following command: npm install
- Run the application with: npm run dev
Server Application:
- Open server directory in your IDE
- Install dependencies with Maven
- Run the services
Authors
Aleksander Synoradzki:
Piotr Tatarczuk:
(back to top)