Skip to main content
Version: 1.2

Tech Stack

In order to accomplish one of our goals - make the platform easy to maintain and make it as durable as possible - we did an exhaustive research on the topic of Tech Stack. To make it easier to visualize and make an informed decision, we elaborated these tables with essential information, such as the date of the last commit, the purpose of the technology in our project and the companies behind each technology.

FrontEnd Tech Stack

This table contains all our proposals for the frontend tech stack.

Note for navigation: While navigating thought the table, you might spot a ⚠️ near the technology name. It indicates that there is more than one technology that serves the same purpose in our proposal. We clarify our choice after the table.

TechnologyGithubPurpose in ProjectLicenseCommunityDate of creationLast CommitOwner/ Famous companies using
Reacthttps://github.com/facebook/react/releasesJavaScript libraryMIT License218k stars in github, 21.7m weekly npm installs201319 jan 2024Facebook
vitehttps://github.com/vitejs/viteTool for creating and setting up React projectsMIT License62.6k stars in Github, 9.4m weekly npm installs201919 jan 2024Sponsored by Astro, StackBlitz, NuxLabs, JetBrains, TailwindLABS,...
daisyuihttps://github.com/saadeghi/daisyuiPure CSS component library for Tailwind.MIT License28.4k stars in github, 165.3k open source projects, 227.9k weekly npm installs202115 jan 2024None
tailwindhttps://github.com/tailwindlabs/tailwindcssCSS libraryMIT License75.5k stars in github, 7.9m weekly npm installs201719 jan 2024TailwindLABS: used to build GitHub Next, Microsoft .NET, OpenAI / ChatGPT and many more websites.
axioshttps://github.com/axios/axiosLibrary for exchanging HTTP-based promises to make requests to the API.MIT License103k stars in github, 47.3m weekly npm installs20145 jan 2024AXIOS; Sponsored by Lowdify, Proxidize, ...
formik ⚠️https://github.com/jaredpalmer/formikLibrary for creating and managing formsApache License 2.033.2k stars in github, 2.3m weekly npm installs201717 set 2023Formium; Used in companies such as Walmart, NASA, Docker, Bookingcom, ...
react-hook-formhttps://github.com/react-hook-form/react-hook-formLibrary for creating and managing formsMIT License38.4k stars in github, 4.2m weekly npm installs201916 jan 2024Supported and Backed by BEEKAI, Vercel
yup ✅https://github.com/jquense/yupLibrary for form validationMIT License27,1k stars on github, 5.1m weekly npm installs20149 jan 2024None -> Used side by side with Formik or other React form libraries
zustandhttps://github.com/pmndrs/zustandLibrary for state management within the React applicationMIT License39.1k stars in github, 2.9m weekly npm installs201931 dez 2023None: Used by companies like Hotjar, RippleAI, ...
redux toolkit ⚠️https://redux-toolkit.js.orgLibrary for state management within the React applicationMIT License10.2k stars in github, 2.9m weekly npm installs201519 jan 2024ReduxTeam; Used by many companies like Instagram, Amazon, ...
React Router Domhttps://github.com/remix-run/react-routerLibrary for client side routingMIT License51.7k stars in github, 10.1m weekly npm installs201418 jan 2024Remix

consulted on January 19, 2024

Regarding the choice between the state management libraries we propose, Redux and Zustand, we decided to use zustand in our project for 2 main reasons:

  • zustand provides less boilerplate code than redux, making our codebase more concise and more maintainable, which aligns with our goals;
  • zustand minimal api feels more natural to react development, as it uses react hooks to create and manage stores (while making the whole process faster)

Regarding the forms management libraries, react-hooks-form and formik, we opted to use react-hooks-form, mainly because formik's last commit was more than 3 months old (at the time) and has more had more than 600 issues open on github. As one of our goals is to enhance DSD's maintainability and longevity, we decided to use a newer and more maintained react-hooks-form.

BackEnd Tech Stack

Table with proposed backend technologies for the project.

This table serves for choosing between two technologies for two different applications:

  • MongoDB driver: pymongo or motor;
  • SAML implementation library: pysaml2 or python3-saml.

Notes:

  • Motor is a pymongo wrapper that uses a set of threads which can help overcome I/O bottlenecks related to database access. This performance increase is only applicable to some cases, so some tests will need to be conducted to analyze its relevance for this project;
  • python3-saml is a library more focused on communication with an existing Identity provider, while pysaml2 is a more comprehensive library (can serve as an Identity provider) but whose extra functionalities will not be useful for this project.
TechnologyGithubPurpose in ProjectLicenseCommunityDate of creationLast CommitOwner/ Famous companies using
pymongohttps://github.com/mongodb/mongo-python-driverDriver síncrono de mongoDB para pythonApache License 2.04k stars in github, 1.2k forks, 145 contribuidores201923 jan 2024MongoDB
motorhttps://github.com/mongodb/motorDriver assíncrono (non-blocking) de mongoDB para python que usa o pymongo e um sistema de multi-threadingApache License 2.02.3k stars in Github, 217 forks, 46 contribuidores201916 jan 2024MongoDB
pysaml2https://github.com/IdentityPython/pysaml2Implementação 100% python do Standard SAML Version 2 com capacidades de implementar ambos um Service provider e Identity provider (não necessitado neste projeto)Apache License 2.0534 stars in Github, 455 forks, 135 contribuidores20137 nov 2023None
python3-samlhttps://github.com/SAML-Toolkits/python3-samlLivraria de implementação do SAML focada na simplicidade e eficiência, permite criar apenas um Service providerMIT License636 stars in Github, 337 forks, 65 contribuidores20161 nov 2023None

consulted on February 8, 2024