Stator: A full-stack template – releases, deployments, enforced conventions

Stator: A full-stack template – releases, deployments, enforced conventions

Hello folks,

I know you've already tried starting up a project by yourself.
You know how tedious it is to set up all the necessary tools.
Just like you, the part I enjoy the most is coding, not boilerplate.

Say hi to stator, a full-stack TypeScript template that enforces conventions, handles releases, automates deployments and much more!

Let's look at the technologies that are used and the ways stator can ease your life.

Technologies

Deployment

  • DigitalOcean App Platform: build, deploy, and scale apps quickly using a simple, fully managed solution.
  • semantic-release: automates the whole package release workflow, including determining the next version number, generating the release notes and publishing the package.

Database

  • Postgres: is an advanced object-relational database management system that supports an extended subset of the SQL standard, including transactions, foreign keys, subqueries, triggers, user-defined types and functions. This distribution also contains C language bindings.
  • TypeORM: is an ORM that can run in NodeJS, Browser, Cordova, PhoneGap, Ionic, React Native, NativeScript, Expo, and Electron platforms and can be used with TypeScript and JavaScript (ES5, ES6, ES7, ES8).
  • NestJS CRUD: generates CRUD endpoints based on the entities you have defined, making great use of the DRY principle.

Backend

  • Nest: is a framework for building efficient, scalable Node.js server-side applications. It uses modern JavaScript, is built with TypeScript (preserves compatibility with pure JavaScript) and combines elements of OOP (Object Oriented Programming), FP (Functional Programming), and FRP (Functional Reactive Programming).
  • Fastify: is an efficient server which implies a lower cost of the infrastructure, better responsiveness under load and happy users.
  • Swagger: is a broadly adopted industry standard for describing modern APIs.
  • ReDoc: is a clean and modern UI to display swagger generated documentation.

Frontend

  • React: is a declarative, efficient, and flexible JavaScript library for building user interfaces.
  • React Router: is a collection of navigational components that compose declaratively with your application.
  • Redux: is a predictable state container for JavaScript apps. It helps you write applications that behave consistently, run in different environments (client, server, and native), and are easy to test.
  • Redux Toolkit: is an opinionated toolset for efficient Redux development.
  • Material UI: is a React library of components for faster and easier web development. You can build your own design system or start with Material Design.

Testing

  • jest: is a comprehensive JavaScript testing solution.
  • cypress: offers fast, easy and reliable testing for anything that runs in a browser.

Conventions

  • commitlint: checks if your commit messages meet the conventional commit format.
  • eslint: is a tool for identifying and reporting on patterns found in ECMAScript/JavaScript code.
  • prettier: is an opinionated code formatter. It enforces a consistent style by parsing your code and re-printing it with its own rules that take the maximum line length into account, wrapping code when necessary.

How to use the template?

  1. Navigate to the stator GitHub page.
  2. Click the use template button at the top right.
  3. Run the interactive CLI with npm run get-started.
  4. Follow the instructions presented on the screen.
  5. Enjoy your newly found freedom from all the hours saved configuring such a complete stack.

If you've carefully followed those 5 easy steps (number 5 is definitely the most important), congratulations, you now have a project that will automatically deploy your latest code on every push from the master branch. You also have a complete set of tools to help you build your house on top of this rock-solid foundation.

The open-source era we live in truly is a thriving time for developers, for knowledge is shared through code re-usability which considerably reduces the global development time of applications.

If you would like to contribute to stator, you are more than welcomed to help us build, one brick at a time, the most complete full-stack template ever.