Skip to content

Documentation: Tech Stack & Tools

John Lecegues edited this page Feb 9, 2024 · 1 revision

Tech Stack and Tools

This page outlines the technologies and tools used in the project, including their purpose and how they are utilized.

Frontend Main Stack

Languages: JavaScript, HTML, CSS

  • React.js: Used to build UI with component-based architecture
  • Vite: Build tool paired with React.js, chosen for fast cold start, hot module replacement and other feature enhancements.
  • Material UI: A component library chosen over Bootstrap due to the availability of more components that were suitable for our needs (visual data)
  • Vitest: Testing Framework that comes with Vite

Frontend Libraries

  • loglevel: Multi-level logging library chosen for simplicity & transport to client console

Backend Main Stack

Languages: JavaScript, SQL

  • Express.js: Web app framework chosen over Django due to superior support for asynchronous operations and concurrency
  • PostgreSQL: Relational Database System chosen over SQLite for scalability, complex queries, and concurrent transactions.
  • TypeORM: Object Relational Mapper (ORM) chosen over Sequelize for its superior support over inheritance patterns
  • Jest: Testing framework chosen for extensive support for automated unit tests and additional features

Backend Middleware

  • Winston: Multi-level logging framework chosen for support in transporting logs to both console and log files
  • Morgan: HTTP Request Logger used with Winston to log all http requests and transport to console & log files
  • Cookie-Parser: Used to parse cookies for use in managing user sessions
  • cors: To enable Cross-Origin Resource Sharing (CORS) to allow frontend and backend to communicate
  • dotenv: To load environment variables from .env files in development

Other Tools

  • Docker: Tool for containerizing the application, ensuring consistent environments across development and production
  • Git: Version control system for tracking changes in the codebase
  • ESLint: Linter for identifying and reporting on patterns in JavaScript
  • Prettier: Code Formatter to maintain consistent code quality & style
  • Github Actions: For use of CI/CD pipeline