Ultimate Nest

screenshot of Ultimate Nest
nestjs
vue

Ultimate Nest

Starter template with blog clone as project

Overview

This is a blog made using Nestjs + Mikro-orm codebase for the backend. It contains real world examples such as CRUD operations, authentication (password based and oauth), and advanced patterns. The codebase is ever-evolving and includes batteries for convenience.

Features

  • I18n - Internationalization
  • Stats - Swagger stats for common server metrics
  • Poolifier - threads for cpu extensive tasks
  • Twilio - SMS support
  • NestJS — Latest version
  • TypeScript - Type checking
  • Dotenv - Supports environment variables
  • Authentication - JWT, RSA256, Oauth
  • Authorization - RBAC with casl
  • MikroORM - Database ORM
  • PostgreSQL - Open-Source Relational Database
  • Configuration - Single config for all
  • Swagger - API Documentation
  • Docker Compose - Container Orchestration
  • Helmet - Secure HTTP headers
  • ESLint — Pluggable JavaScript linter
  • Commitlint — Checks if your commit messages meet the conventional commit format
  • Husky — Helps you create Git hooks easily

Installation

  1. Install NodeJS from https://nodejs.org/en/
  2. Install Typescript from https://www.typescriptlang.org/
  3. Install PostgresQL from https://www.postgresql.org/
  4. Install Redis from https://redis.io/
  5. Install RabbitMQ from https://www.rabbitmq.com
  6. Copy the sample env file and adjust the connection settings and other settings (jwt, redis, mail, etc) respectively.
  7. Note that env files are kept in the env folder. The config validation allows for 4 environments: 'dev', 'prod', 'test', 'stage'.
  8. The env file name should be of format .env.[environment] (e.g. .env.dev). The env to use should be provided while running any script as NODE_ENV=dev npm run dev.
  9. Start the local Postgres server and run npx cross-env NODE_ENV=dev npm run migrate to apply migrations.
  10. Start the application with npx cross-env NODE_ENV=dev npm run start.

Summary

This blog uses a Nestjs + Mikro-orm codebase for the backend and includes various features such as CRUD operations, authentication, and advanced patterns. It also provides support for internationalization, server metrics tracking, multi-threading for CPU-intensive tasks, and much more. The codebase is continuously evolving and includes essential tools and libraries for ease of development.

nestjs
Nest

A progressive Node.js framework for building efficient, scalable, and enterprise-grade server-side applications with TypeScript/JavaScript.

vue
Vue

Vue.js is a lightweight and flexible JavaScript framework that allows developers to easily build dynamic and reactive user interfaces. Its intuitive syntax, modular architecture, and focus on performance make it a popular choice for modern web development.

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.

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.

webpack
Webpack

Webpack is a popular open-source module bundler for JavaScript applications that bundles and optimizes the code and its dependencies for production-ready deployment. It can also be used to transform other types of assets such as CSS, images, and fonts.