WeAreOpenSource Node
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.
- Wiki - wip
- Knowledges JS
- Demo (or working with Vue stack here, email: test@waos.me, password: TestWaos@2019)
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 |
- 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
RGPD conpliance
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
It's straightforward (you can use yarn if you want)
$ git clone https://github.com/weareopensource/node.git && cd Node
$ npm i
npm start
ornpm run serve
to run a dev server. Available athttp://localhost:3000/
.
npm run prod
to run a prod server. Available athttp://localhost:3000/
- 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
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 =)'
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 ...
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.
Pierre
Feel free to help us ! :)