Nodstarter
Nodstarter is starter application to provide rapid rest APIs development, it offers pre-configured and secured routers using JWT, error middleware handler, MongoDB models, MongoDB connection and logger with APIs testing. This project aims to help writing the rest APIs backend quickly.
Technologies and libraries used:
- Node.js
- Express framework
- Mongoose ORM
- MongoDB
- Lodash
- Morgan middleware
- Body parser
- Method-override
- bcrypt
- express-jwt
- jsonwebtoken
- cors
- nodemon
- Testing libraries: Supertest, Chai and Mocha
Project structure
The project contains two folder server and test
server/
└── index.js
└── config
└── index.js
└── development.js
└── production.js
└── testing.js
└── auth
└── index.js
└── controller.js
└── routers.js
└──api
└── Users
└── router.js
└── controller.js
└── model.js
└── Posts
└── router.js
└── controller.js
└── model.js
└── Category
└── router.js
└── controller.js
└── model.js
└──middleware
└── index.js
└── err.js
└──util
└── createRouter.js
└── logger.js
└── package.json
Code in auth/index.js
const expressJwt = ;const config = ;const logger = ;const jwt = ;const checkToken = ;const User = ;exports { return { if reqquery && reqquery reqheadersauthorization = 'Bearer ' + reqqueryaccess_token; ; };}; exports { return { User ; };}; exports { return { var username = reqbodyusername; var password = reqbodypassword; if !username || !password resstatus400; return; User ; };}; exports { logger; return jwt;};
Calling sign in
curl --header "Content-Type: application/json" --request POST --data '{"username":"test_user_4","password":"12345"}' http://localhost:3000/auth/signin
, output
{"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiI1ZTY2NjQwODYzMGE0NDE3MThiMjNhMzgiLCJpYXQiOjE1ODQ2Mzc4NDIsImV4cCI6MTU4NDY1MjI0Mn0.MODWP86ebc8XOMjDGyuvNCWWoKnQhpZpl81ynFGExG8"}
Nodstarter uses the environment variables
Nodstarter starts searching first for the following environment variables if found them will use them if not will use the default. The default for NODE_ENV is development, NODE_PORT is 3000 and JWT 'Gambell' You can choose NODE_ENV from one of the following options (development, production, testing)
- NODE_ENV
- NODE_PORT
- JWT
Install
- Install with NPM:
$ npm install nodstarter
- Start:
$ npm start
, or use short form command:
$ npm init; npm install nodstarter; npm start
Before you run
Please make sure that the MongoDB daemon
is up and running
How to use
Running Tests (future plan)
Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:
$ npm install && npm test
Project intent
Nodstarter project aims to be like Spring Initializr to minimize the configuration for developing Node.js apps.
Have a new idea
This project welcomes new ideas, you can reach me at this email
Future plans
- Add API test
- Option to add libraries dynamically
- The programmer can choose what libraries want and how many rest APIs, models, Database engine and back-bone tests for rest APIs.
Contributing
When contributing to this repository, please first discuss the change you wish to make via issue, email, or any other method with the owners of this repository before making a change.
License Summary
You can copy and paste the Apache 2.0 license summary below.
Copyright 2020 by Nodstarter
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.