/Node

:computer: Node - Boilerplate Back : Express, Jwt, Mongo, Sequelize (Beta)

Primary LanguageJavaScriptOtherNOASSERTION

Build Status Coveralls Status Code Climate Dependencies Status Dependabot badge Known Vulnerabilities

WeAreOpenSource Node

Presentation

This project is a stack Node that can be ran as a standalone backend. Or in a fullstack with another of our repo of your choice (ex: Vue, Swift).

You can have more informations about us in our global repo and here :

  • our mindset and what we would like to create in our introduction (in construction)
  • how to create a fullstack from our repo in our global wiki (in construciton).
  • our global roadmap and propose ideas about stacks in our board
  • how to contribute and help us here

Our stack node is actually in Beta.

Node / Express / Mongoose - Sequelize Orm

Technology Overview

Subject Informations
Available
Architecture Layered Architecture : everything is separated in layers, and the upper layers are abstractions of the lower ones, that's why every layer should only reference the immediate lower layer (vertical modules architecture with Repository and Services Pattern)
Server Node v12.x LTS
Express - body-parser - compression - CORS - method-override
gulp 4 - nodemon - pm2
DataBase Mongo 4.x LTS & mongoose (user management & crud Task example)
Sequelize : PostgreSQL, MySQL, SQLit 4.x (option - crud Task example)
JOI Models & Repository for database code abstraction
seed functions
Testing Jest & SuperTest (Coverage & Watch)
example of mocha with gulp available
Linter ESLint ecmaVersion 10 (2019)
Security JWT Stateless - passport-jwt
Passwords: bcrypt - zxcvbn
DataBases options available (auth, ssl ..)
SSL Express / Reverse Proxy (must be activated, otherwise => plain text password)
API Default answer wrapper (helper) : jsend like : status, message, data or error
Default error handling (helper) : formatted by the controller, Custom ES6 errors for other layers
Logs winston morgan custom example available
CI Travis CI
Developer Coveralls - Code Climate - Dependency status - Dependabot - Snyk
standard-version - commitlint - commitizen - waos-conventional-changelog
Dependencies npm
Being released
Deliver Docker & Docker-compose
In reflexion
Documentation Swagger
Docco
Developer uses v8's builtin debug and inspect optionse
API evolution & version guideline

Features Overview

Available

  • User : classic register / auth or oAuth(microsoft, google) - profile management (update, avatar upload ...)
  • Admin : list users - edit user - delete user
  • Tasks : list tasks - add tasks - edit tasks - delete tasks

In reflexion

RGPD conpliance

Prerequisites

Make sure you have installed all of the following prerequisites on your development machine:

Installation

It's straightforward (you can use yarn if you want)

$ git clone https://github.com/weareopensource/node.git && cd Node
$ npm i 

Running Your Application

Development

  • npm start or npm run serve to run a dev server. Available at http://localhost:3000/.

Production

  • npm run prod to run a prod server. Available at http://localhost:3000/

others

  • debug : npm run debug
  • test : npm test
  • test Watch : npm run test:watch
  • test Coverage : npm run test:coverage
  • seed development= npm run seed:dev
  • seed Production = npm run seed:prod
  • generate SSL certs : npm run generate:sslCerts
  • lint : npm run lint
  • commit : npm run commit
  • release : npm run release

Configuration

The default configuration is : config/defaults/development.js The other configurations : config/defaults/*.js overwrite the default configuration, you can create your own.

We take into account all system environment variables defined under the form WAOS_VUE_<path_toVariable>. A script turns under the hood those system environment variables into an object, infering paths from the varialbles name, merged to the configuration defined on config/defaults to regenerate the config.

So configuration avalable on config/defaults/development file are overidable. You can for instance define the app name by defining those system environment variables :

WAOS_NODE_app_name='my app =)'

Contribute

History

This work is based on MEAN.js and more precisely on a fork of the developers named Riess.js. The work being stopped we wished to take it back, we want to create updated stack with same mindset "simple", "easy to use". The toolbox needed to start projects, but not only with Node and Angular ...

We Are Open Source, Who we are ?

Today, we dreams to create Backs/Fronts, aligns on feats, in multiple languages, in order to allow anyone to compose fullstack on demand (React, Angular, VusJS, Node, Nest, Swift, Go). Feel free to discuss, share other kind of bricks, and invite whoever you want with this mindset to come help us.

Licence

Packagist

Dev

Pierre

Blog Slack Mail Twitter Youtube

Feel free to help us ! :)