Skip to content

NarutoUchiha39/PomodoroWebsite

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Pomodoro Website

💭 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 )

made with ❤️ using

Features of the website :

  1. All the microservices are an Eureka Client with the Eureka 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
  2. 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 the Bearer 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 the postgresql database hosted at Supabase
    • 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.
  3. The website makes use of Firebase storage to store the songs. We make use of Firestore databse to store information related to the song. Firebase SDK for java is used to upload songs to storage and retrieve song information
  4. 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
  5. 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.
  6. For the front end we have made use of react and antd UI library to provide easy to use and intuitive UI

Diagram representation
diagram-export-6-23-2024-11_02_15-AM

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

  1. Eureka micro service provides the Eureka Server that all the other microservices connect to. This microservice helps in monitoring other microservices
    • Dependencies:
      1. spring-cloud-starter-netflix-eureka-server
  2. Gateway micro service provides the API gateway that is used to check and redirect all the incoming requests to the authentication microservice
    • Dependencies:
      1. spring-cloud-starter
      2. spring-cloud-starter-gateway
      3. spring-boot-starter-webflux
      4. spring-cloud-starter-netflix-eureka-client
  3. Auth micro service enables the use of JWT based authentication. This micro service also protectes routes
    • Dependencies:
      1. spring-boot-starter-web
      2. spring-cloud-starter-netflix-eureka-client
      3. spring-boot-starter-data-jpa
      4. postgresql
      5. spring-boot-starter-securit
      6. jjwt-api
      7. jjwt-jackson
      8. jjwt-impl
  4. Music micro service helps in CRUD for songs. Makes use of firebase API to connect to firebase
    • Dependencies:
      1. firebase-admin
      2. spring-boot-starter-web
      3. spring-cloud-starter-netflix-eureka-client
      4. spring-boot-devtools (helps in enabling hot reload)
  5. TrackUser micro service helps to track the amount of time a user has studied
    • Dependencies:
      1. postgresql
      2. spring-boot-starter-data-jpa
      3. spring-boot-starter-web
      4. spring-cloud-starter-netflix-eureka-client

If you have made it this far far thank you for your time and attention

About

A website to help you focus on studying

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published