goldbergyoni / nodebestpractices

:white_check_mark: The Node.js best practices list (July 2024)
https://twitter.com/nodepractices/
Creative Commons Attribution Share Alike 4.0 International
99.36k stars 10.11k forks source link

๐ŸŽ‰ We (almost) have an example app - Meet practica.js #1175

Open goldbergyoni opened 2 years ago

goldbergyoni commented 2 years ago

๐ŸฅณHappy announcement here๐ŸŽˆ

TL&DR

We are working hard on an example app that is based on this guide. It's in Alpha mode, not production-ready yet, but your constructive feedback is more than welcome. It's called practica.js, visit here

Why is this unique and maybe the preferred option for new Node.js apps? Read below ๐Ÿ‘‡


What

For years, we have received repeating feedback here - "Can you show an example app?"

It took a while, mostly because we wanted to nail it properly, but now we're almost ready now ๐ŸŽ‰๐Ÿ‘‡

Meet practica.js - Our Node.js best practices code generator that is built around the principles of this guide

It's currently 0.0.1@alpha.1, not ready for production, some parts are still not coded (e.g. logger is doing console.log:)), but already has 400 commits and 17 contributors. We'll be grateful to have your constructive feedback

Basically, it generates a skeleton code that shows API requests traveling through the layers including DB and testing. it's not a new framework but rather using the popular and great (!) Node.js frameworks like Fastify, express and probably Nest in the future

Given these great frameworks and the existence of many starters, why do we need another one ๐Ÿ˜ณ? Here is its unique value:

Why

Unique value 1 - Production ready

It's Production ready (soon). Great frameworks by definition don't handle everything. express lacks basic features like auth, logger... Even richer frameworks lack Monorepo setup, hardened .dockerfile, real-world testing template with DB, and 100+ more things that EVERYONE NEED

on-top-of-frameworks

Unique value 2- Simpler architecture

Simplicity as a key architectural principle. We believe that tons of unnecessary complexity finds its way to most software which becomes a strategic maintenance obstacle. Consequently, Practica minimizes abstractions, relies on JS/Node standards, is built mostly around plain function, uses TypeScript for types only, favors the simple 3-tier architecture over fancy hexagonal/clean structure to name a few examples. When you read it, everything should look highly familiar and... simple

abstractions-vs-simplicity

Why trust our design - One of the key reason you want to consider Practica is because you appreciate our design. But why? Because of the process, not the people. Every decision is neatly documented, all the options are compared transparently, the community is involved which leads to better collaborative decisions. Here is an example of a typical decision making for a monorepo tooling

Screen Shot 2022-06-02 at 1 22 55 PM

goldbergyoni commented 2 years ago

@josh-hemphill You're more than welcome to join as a maintainer. This is where we code all of our ideas, could be awesome if you handle all the security things

rluvaton commented 2 years ago

Great job! I think we should pin this issue ๐Ÿ˜„

goldbergyoni commented 2 years ago

@rluvaton We will, just need to feel more confident that Practica is a little bit more ready