nodejs-api-boilerplate
v1.0.0
Published
A NodeJS server boilerplate for help you kickstart you futur node project. ES6/ES7 features.
Downloads
10
Maintainers
Readme
NodeJS-API-Boilerplate
Get Started
- Api Doc
- Pre-Commit Hook
- Usage
- Scripts
- Dev-Debug
- Why toJSON() on methods model
- For validation on request
- Seeds
- Docker
- Techs
- Todos
Api Doc
Api doc his hosted on surge. Link
Pre-Commit Hook
I've add pre-commit
and lint-staged
for lint your code before commit. That can maybe take time :bowtie:
Usage
For get raven log create account here: Sentry
- Clone the project
git clone https://github.com/EQuimper/nodejs-api-boilerplate.git
. - Install dependencies
yarn install
ornpm i
- Create a
.env
file in the root like
MONGO_URL=yourmongodb
JWT_SECRET=yoursecret
RAVEN_ID=yourapikey
DOCS_WEBSITE=yourwebsite.surge.sh/
Scripts
DEV
First thing you want to start babel to compile the project by doing yarn dev:watch
or npm run dev:watch
After
yarn dev
or
npm run dev
DEV-DEBUG
yarn dev:debug
or
npm run dev:debug
Why toJSON on methods model ?
toJSON()
help us to get only the data we want when we push the info to the client. So now we just need to put the user object in the res.json(user)
and we received only what we want. Why toAuthJSON()
? Cause if we populated the post we get the toJSON()
so the toAuthJSON()
is the on to call on signup and login for get the token and _id.
toAuthJSON() {
return {
_id: this._id,
token: `JWT ${this.createToken()}`,
};
},
toJSON() {
return {
_id: this._id,
username: this.username,
};
},
For Validation on Request
I'm using Joi in this boilerplate, that make the validation really easy.
export const validation = {
create: {
body: {
email: Joi.string().email().required(),
password: Joi.string().regex(/^[a-zA-Z0-9]{3,30}$/).required(),
username: Joi.string().min(3).max(20).required(),
},
},
};
routes.post(
'/signup',
validate(UserController.validation.create),
UserController.create,
);
Seeds
For seed just run one of this following comand. This is helpful in dev for making fake user.
This is only available in dev environment
You can change the number of seed by changing the number in each script inside /scripts/seeds
- Seeds 10 user
yarn db:seeds-user
- Clear user collection
yarn db:seeds-clear-user
- Clear all collection
yarn db:seeds-clear
Monitoring Server on http://localhost:3000/status
Docker
bash scripts/development.sh
Techs
- Helmet
- Cors
- Body-Parser
- Morgan
- PassportJS
- Passport-Local
- Passport-JWT
- Raven
- Joi
- Http-Status
- Lint-Staged
- Pre-Commit
- Prettier
- Eslint Config EQuimper
- Eslint Config Prettier
- CodeClimate
- Coveralls
- Travis Ci
- Circle Ci
- Greenkeeper
- Istanbul
- Mocha
- Chai
- Supertest
- NPS
Todo
Add
- [ ] Sendgrid or Other Mail supply
- [ ] Add S3 for user image