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
- Wiki - wip
- Knowledges JS
- Demo (or working with Vue stack here, email: test@waos.me, password: TestWaos@2019)
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:
- Git - Download & Install Git
- Node.js (10.x) - Download & Install Node.js
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
ornpm run serve
to run a dev server. Available athttp://localhost:3000/
.
Production
npm run prod
to run a prod server. Available athttp://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
Dev
Pierre
Feel free to help us ! :)