💭 Bro what is the website about? Have you ever while studying for any subject felt sleepy? (Sigh) Well this pomodoro website can make your studying fun.
💭 Bro thats cool can you describe a bit more in detail? I could really use some help to focus
Well we all know humans cant concentrate for extended periods of time. Optimal concentration criterion concentration is 25 mins study and 5 mins break (now i know many times the numbers get reversed ).
This timer might not work for you. You might have a longer capacity to concentrate and want to set your own timers.
The pomodoro website allows you to set custom timers for study sessions as well as for breaks so that you can concentrate according to your focus duration. At the start and end of each
session an alarm sounds to indicate the start and end of the session
💭 Bro thats all cool but i like to have some music with calming beats in the background while i study. Could you help mw with that?
Look no further! Our website allows you to select song from our list so that you can drown out all the noises while studying and give your 100% focus to the task at hand
Oh did i mention the background of the timer has a cute animated cat and the UI looks cozy? Cool i know all thanks to our UI designer Uditi Sinha
Now let us pull out our coffee mugs, use the JWT tokens and dive straight through the API Gateway into the details of website
( Disclaimer: Above sentence was a terrible attempt to mimic Actman. If you dont know him check out https://www.youtube.com/@TheActMan )
Features of the website :
- All the microservices are an
Eureka Client
with theEureka
microservice being the server. Eureka helps is keeping track and monitoring all the microservices. Eureka also gives quick access to which microservice runs on which port and which microservice is up and which is down - The website consits of API Gateway to direct incoming HTTP request to the authentication microservice. The API gateway is asynchronous in nature and makes use of the
netty
webserver instead of tradiional tomcat webserver in oredr to support asynchronous processing of request -
- The Website uses JWT based authentication to manage users. The
Authorization
header of each incoming request is checked to see if they contain theBearer
token. If they do so, further checks takes places to make sure the JWT hasn't expired and the user is authenticated. If the JWT token is not found (as in case of user registering) then the user details are used to create a JWT token and sent t the frontend. All the pages except the login and register are protected to make sure only authorized users can have access to pages.Hibernate's
powerful ORM has been used to communicate with thepostgresql
database hosted atSupabase
- On the frontend part every route except the login and register pages are checked for JWT tokens. If not present user is redirected back to login page.
- The Website uses JWT based authentication to manage users. The
- The website makes use of
Firebase storage
to store the songs. We make use ofFirestore databse
to store information related to the song. Firebase SDK for java is used to upload songs to storage and retrieve song information - The website also tracks the amount of time studied by a user. We have leveraged the power of
Hibernate
ORM to make database queries with ease - The website also features a separate admin and user login pages. Admin has the ability to upload new songs to the storage as well as edit information related to the song. The user can set timer and listen to music from the list of songs available.
- For the front end we have made use of
react
andantd
UI library to provide easy to use and intuitive UI
List of microservices and their dependencies:
Note: Lombok has been used in all the micro services in order to make to reduce boiler plate code
- Eureka micro service provides the Eureka Server that all the other microservices connect to. This microservice helps in monitoring other microservices
- Dependencies:
- spring-cloud-starter-netflix-eureka-server
- Dependencies:
- Gateway micro service provides the API gateway that is used to check and redirect all the incoming requests to the authentication microservice
- Dependencies:
- spring-cloud-starter
- spring-cloud-starter-gateway
- spring-boot-starter-webflux
- spring-cloud-starter-netflix-eureka-client
- Dependencies:
- Auth micro service enables the use of JWT based authentication. This micro service also protectes routes
- Dependencies:
- spring-boot-starter-web
- spring-cloud-starter-netflix-eureka-client
- spring-boot-starter-data-jpa
- postgresql
- spring-boot-starter-securit
- jjwt-api
- jjwt-jackson
- jjwt-impl
- Dependencies:
- Music micro service helps in CRUD for songs. Makes use of firebase API to connect to firebase
- Dependencies:
- firebase-admin
- spring-boot-starter-web
- spring-cloud-starter-netflix-eureka-client
- spring-boot-devtools (helps in enabling hot reload)
- Dependencies:
- TrackUser micro service helps to track the amount of time a user has studied
- Dependencies:
- postgresql
- spring-boot-starter-data-jpa
- spring-boot-starter-web
- spring-cloud-starter-netflix-eureka-client
- Dependencies: