Nestjs Graphql Prisma

screenshot of Nestjs Graphql Prisma
prisma

Boilerplate backend NestJS GraphQL project using Prisma 2 & PostgreSQL

Overview:

NestJS - GraphQL - Prisma is a project aimed at learning and implementing NestJS, GraphQL, and Prisma together. It focuses on building a clean architecture that is scalable and testable. The project is inspired by Nestjs-prisma-starter by the fivethree-team.

Features:

  • GraphQL with apollo-server-express, using GraphQL play ground and a solution code first approach
  • PostgreSQL for the database and Prisma 2 as the ORM
  • CRUD operations, database relationships, and pagination
  • NestJS Authentication with Redis for JWT Refresh token solution
  • Role-based system with Admin and User roles
  • Database seeding
  • Multi-languages with I18n
  • Rating limit API with express-rate-limit
  • Email verification
  • Custom exceptions filter and custom decorators
  • Docker solution for PostgreSQL, PGAdmin, and Prisma
  • Testing: Unit testing, Integration testing, End to End testing (work in progress)
  • CI-CD with Travis-ci, Github actions
  • Solve N+1 problem in GraphQL using @paljs/plugin

Summary:

NestJS - GraphQL - Prisma is a project that combines NestJS, GraphQL, and Prisma to create a scalable and testable application. It provides features such as GraphQL with apollo-server-express, PostgreSQL and Prisma for the database and ORM, authentication with Redis, role-based system, database seeding, multi-languages support, and more. The project also includes Docker solutions, testing, and CI-CD integration.

prisma
Prisma

Prisma is a server-side library that helps developers read and write data to the database in an intuitive, efficient and safe way.

fullstack
Fullstack

A fullstack boilerplate provides a starter application that includes both frontend and backend. It should include database, auth, payments, user roles and other backend services to build a fully featured saas or webapps.

eslint
Eslint

ESLint is a linter for JavaScript that analyzes code to detect and report on potential problems and errors, as well as enforce consistent code style and best practices, helping developers to write cleaner, more maintainable code.

graphql
Graphql

A website that uses GraphQL as a query language to manage data fetching and state management. This includes features such as a strongly typed schema, client-side caching, and declarative data fetching to streamline data management and optimize website performance.

typescript
Typescript

TypeScript is a superset of JavaScript, providing optional static typing, classes, interfaces, and other features that help developers write more maintainable and scalable code. TypeScript's static typing system can catch errors at compile-time, making it easier to build and maintain large applications.