Technology Requirements
The technologies used to implement the system
Frontend
In this subsection we will explain what we will be using for the frontend of our system
-
NextJS
We will be using NextJS for our frontend due to its powerful features that enhance both the development process and the performance of our web application. NextJS provides hybrid static and server-side rendering capabilities, allowing us to optimize load times and ensure our content is up-to-date and SEO-friendly. Its Incremental Static Regeneration (ISR) feature enables us to update static content without a full rebuild, striking a perfect balance between static and dynamic content.
-
NextUI
We are using the NextUI component library to provide a sleek, modern, and highly customizable user interface, accelerating our development process and ensuring a consistent look and feel across our application.
-
Storybook
We are using Storybook for developing and testing UI components in isolation, ensuring they are robust and well-documented before integration into the application.
Backend
In this subsection we will explain what we will be using for the backend of our system
-
NestJS
NestJS is a progressive NodeJS framework designed for building efficient, reliable, and scalable server-side applications. It leverages TypeScript and incorporates principles from object-oriented programming (OOP), functional programming (FP), and reactive programming, making it a versatile and modern solution for backend development. With a modular architecture, NestJS allows for easy code organization and reusability.
User Auth/Management
In this subsection we explain what we will be using for user auth/management
-
Supabase
We will be using Supabase for all our user authentication, authorization, and user management. This choice ensures the highest quality of security for users when logging in and provides us with the flexibility to implement extensive functionality regarding user management without having to build it from scratch. Supabase offers a powerful and secure backend-as-a-service platform that integrates seamlessly with our application, simplifying the development process while maintaining robust security and performance standards.
Testing Frameworks
In this subsection we explain the testing frameworks we will be using
-
Vitest
We will be using Vitest for unit testing to ensure that individual components of our application function correctly and reliably in isolation. Vitest provides a fast, modern, and easy-to-use testing environment that integrates seamlessly with our development workflow, offering features such as instant feedback and TypeScript support.
-
Cypress
We will be using Cypress for our end-to-end testing to verify that our entire application works as expected from the user's perspective. Cypress offers a comprehensive testing framework with powerful tools for writing, running, and debugging tests, ensuring a smooth and reliable user experience across all aspects of our application.
CI/CD
In this subsection we will explain our approach to continuous integration and continuous deployment
-
GitHub Actions
We will be using GitHub Actions for our CI/CD pipeline to automate testing, building, and deployment processes. This ensures that our code is always in a deployable state and helps us catch issues early in the development cycle.
Version Control
In this subsection we will explain our approach to version control
-
Git
We will be using Git for version control to manage changes to our codebase. Git enables collaborative development, efficient tracking of changes, and easy branching and merging of code.
-
Github
We will use GitHub as our remote repository hosting service, enabling collaboration, code review, and project management features for our team.
Documentation
In this subsection we will explain how we intent to show all documentation
-
Docusaurus
We are using Docusaurus to build and maintain our project documentation, providing a user-friendly and organized platform for all our documentation needs.