This is a Reference Architecture for Web (TIRA-WEB) based on React + Next.js + TypeScript + Tailwind CSS + NestJS.
- Overview
- Quick Starts
- NX Monorepo
- Frontend
- Backend
- Authentication
- Storage
- Email Service
- Logging
- Additional Contents
The Tach Ignite Reference Architecture for Web (TIRA-WEB) is a comprehensive full-stack framework that leverages various technologies for efficient web development. On the frontend, it employs Next.js integrated with Tailwind CSS for streamlined, responsive design. The backend is powered by NestJS, utilizing Prisma as the ORM and PostgreSQL for database management. Additionally, TIRA-WEB incorporates multiple services including Passport and AWS Cognito for authentication, MinIO for storage solutions, AWS SES for email services, and Winston for logging, ensuring a robust and scalable web application infrastructure.
The project is structured as an NX Monorepo, which allows for managing multiple related projects within a single repository. NX provides tools for code sharing, build optimization, and workspace management, making it easier to develop and maintain large-scale applications.
-
Next.js is a React framework that allows for easy setup and development of React applications. It provides features like server-side rendering, static site generation, and routing out of the box, making it ideal for building fast and SEO-friendly web applications.
-
Tailwind CSS is a utility-first CSS framework that provides a set of utility classes to style your applications. It allows for rapid development by removing the need to write custom CSS and provides a consistent and maintainable styling approach.
-
React Query is a library for fetching, caching, and updating data in React applications. It simplifies the process of making API calls by providing hooks that handle data fetching and caching, reducing boilerplate code and improving performance.
-
NestJS is a progressive Node.js framework for building efficient, reliable, and scalable server-side applications. It uses TypeScript and follows a modular architecture, making it easy to develop and maintain complex backend systems.
-
Prisma is an ORM (Object-Relational Mapping) tool for Node.js and TypeScript. It simplifies database operations by generating type-safe query builders and models based on your database schema, reducing the risk of runtime errors and improving developer productivity.
-
PostgreSQL is a powerful, open-source relational database management system. It is highly scalable and supports a wide range of features including ACID transactions, JSONB data type, and full-text search, making it suitable for a variety of applications.
-
Passport is an authentication middleware for Node.js. It provides a simple and modular approach to handle authentication in web applications, supporting various authentication strategies such as local authentication, OAuth, and OpenID.
-
AWS Cognito is a managed authentication service provided by Amazon Web Services. It allows you to add user sign-up, sign-in, and access control to your web and mobile applications, providing a secure and scalable authentication solution.
-
MinIO is an open-source object storage server compatible with Amazon S3. It provides a scalable and high-performance storage solution for storing unstructured data such as images, videos, and documents, with features like data encryption and access control.
-
AWS SES (Simple Email Service) is a cloud-based email sending service provided by Amazon Web Services. It allows you to send transactional and marketing emails to your customers, with features like email tracking, delivery notifications, and bounce management.
-
Winston is a versatile logging library for Node.js. It provides a simple and flexible API for logging messages to various transports such as the console, files, databases, and third-party logging services, allowing you to monitor and debug your applications effectively.
This project uses NestJS, Flowbite, Next.js, and Strapi, each governed by their respective licenses: NestJS License, Flowbite License, Next.js License, and Strapi License.