This library is used to hash passwords before storing them in the database, and it is then used to validate a user's password when logging in.
This library is used to create the graphs throughout the application. It provides support for scatter plots, line charts, bar graphs, pie charts, polar area charts, and pie charts. All equations (and normal curves) graphed are just really large scatter plots.
This library allows you to set and read cookies. This application uses cookies to store a user's JWT which is used for authorization. The package also allows you to specify options like https only or same site only.
This library is used to validate and display errors for forms in the login and signup pages. For validation client side, another library called Yup is used.
This library can be used to create and verify JSON web tokens (JWT). A JWT is created when the user logs in with an expiration date of 48 hours, and each time the user makes a request to an authenticated route, the JWT is verified.
Material UI is used to make styling React user interfaces simpler by taking advantage of pre-built components meant to replicate Google's Material Design.
This library is used to communicate with the Mongodb database this application uses.
Nextjs is a powerful framework that can be used to create React applications. It allows for server side rendering and static site generation, and it can make deploying a react app into production easier.
This library is used to display a loading bar at the top of the page every time the user navigates to a new page. Because this site uses server side rendering, it usually takes a few seconds for the new page to receive the server side props, so nprogress gives the user an indication the page is loading.
React is a popular library used to create user interfaces for applications. By incorporating Nextjs with this library, I am able to build a user interface with react while also improving my SEO.
This library is used to create the animations in the about and manual page. It has good performance and allows me to animate elements without having to re-render the component when an animation is triggered.
This library is used to complement react-spring and make detecting a "gesture" from a user easier. When a specific gesture is detected, I can then use react-spring to create an animation. This project uses the mouse move and hover gestures, but use-gesture also supports dragging, pinching, scrolling, and much more.
No paypal library used for the front end but payments are handled using an external script that allows users to be redirected to paypal to purchase Statpad Premium.
A library (@sendgrid/mail) is used to easily send emails to new users through SendGrid. SendGrid is used to send an email for users to confirm their account. The email contains a url with their verification token code.
Stripe is used to handle payments with credit or debit cards for Statpad Premium. In this application the stripe library and a Stripe library for React is used.
This library is used for parsing and validating user inputs. In this application it is used in the login and signup pages to validate user inputs on the client side.