Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/azakharo/node-starter
Boilerplate for quick-start your REST API. Db, auth, push updates via sockets, interactive API documentation (Swagger) and unittests are already included! This project is based on Angular FullStack Generator project https://github.com/angular-fullstack/generator-angular-fullstack
https://github.com/azakharo/node-starter
auth chai expressjs mochajs mongodb nodejs socket-io swagger
Last synced: 3 months ago
JSON representation
Boilerplate for quick-start your REST API. Db, auth, push updates via sockets, interactive API documentation (Swagger) and unittests are already included! This project is based on Angular FullStack Generator project https://github.com/angular-fullstack/generator-angular-fullstack
- Host: GitHub
- URL: https://github.com/azakharo/node-starter
- Owner: azakharo
- Created: 2018-01-08T16:36:21.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2018-01-15T08:56:16.000Z (almost 7 years ago)
- Last Synced: 2024-10-01T06:30:01.088Z (3 months ago)
- Topics: auth, chai, expressjs, mochajs, mongodb, nodejs, socket-io, swagger
- Language: JavaScript
- Homepage:
- Size: 8.55 MB
- Stars: 5
- Watchers: 3
- Forks: 5
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Usage, the goal of this project.
You are developing a new REST API on Node.js. And you want a quick start.
You need a database to store data, authentication and user management,
API documentation and some other base functionality.
If so, then this project is for you. And it's free!# Demo
[Interactive REST API documentation](https://aza-node-starter.herokuapp.com/docs/)
[Demo frontend which works with the REST API](https://aza-node-starter.herokuapp.com)Opening the link will probably take several seconds, because I am using a free
account and the deployed application is sleeping.# Features
* MongoDB integration, mongoose package included.
* Data model examples (*Thing* and *User* models), the models are stored in MongoDB.
* REST API endpoint/resource examples (*Thing* and *User* REST resources) which work with the data models.
* The server sends push update notifications to its client when the models change in the database. This is done via socket.io package.
* The authentication is included. *"Local"* auth using username/password,
password changing. JWT tokens are sent to the clients and back for auth.
*Users* are stored in the database. *Users* REST endpoint.
User roles are supported. Users management by admins.
Also 3-rd party authentication skeletons are included (for auth using google, facebook and twitter).
* API documentation example is included. The documentation is developed via Swagger.
You can read the doc under\/docs
URL.
Also you can try your API using that interactive documentation.
* Unittest examples are included. They are implemented using mocha and chai.
Runnpm test
.
* Also some other base server functions are implemented, such as
body parsing, cookies, logging, etc.# Prerequisites
* Node.js (recommended 8.x).
* MongoDB (recommended 3.x).# Run application in the development mode
1. open *swagger.yaml* file in an editor.
2. set *host* value to *localhost:9000*
3. find *schemes* section and replace *https* with *http*.
4. Save and exit the editor.
5. runnode server/app.js
ornpm start
from the root folder of the repo.
6. run browser and open http://localhost:9000/docs. Read the API documentation and try the API!You can use *nodemon* instead of *node* to run the app. It can be useful if you want to change the server's code.
In the development mode local MongoDB is used.# Run application in the production mode
1. open *swagger.yaml* file in an editor.
2. set *host* value to **
3. find *schemes* section and set either *https* or *http*.
4. Save and exit the editor.
5. Set NODE_ENV env var to *production* value
6. runnode server/app.js
ornpm start
from the root folder of the repo.
7. run browser and open http://your_server_address_port/docs. Read the API documentation and try the API!In the production mode remote MongoDB is used (mlab.com). It can be configured in
config/environment/production.js
# How to use the auth and socket push notifications
For this you need to examine the source code in this repository.
For base API URLs see *routes.js*.
For API example endpoints examine *api* sub-folder.
For auth look at the *auth* sub-folder.
For sockets look at *config/socketio.js* file.**IMPORTANT**
Also I have prepared the example frontend application (React.js) which works with this backend.
You saw that frontend application by the demo link above.
Its source code can be found here: https://github.com/azakharo/react-starter.git
This is a very good example of how to work with this server. Just examine or copy the code.# How to add public static content (html, js, css) to this server
You can easily add a frontend application to this server.
Just put your static content into **public** subdirectory.
Replace the current content. As an example I put my demo frontend application there (mentioned above).# How to deploy to Heroku
First, read the docs:
* https://devcenter.heroku.com/articles/deploying-nodejs
* https://www.sitepoint.com/how-to-deploy-node-applications-heroku-vs-now-sh/After the reading and some preparations like registering on heroku.com, the deployment is easy as:
1. heroku create
2. git push heroku masterAfter every application change for deployment you will do
git push heroku master
# Notes
This application was created with the help of
[Angular FullStack Generator](https://github.com/angular-fullstack/generator-angular-fullstack)**IMPORTANT!**
The generator's version I used was 3.6.1.The generator may be only required for development. For example, to generate a new REST endpoint.
To install the generator use the following command:
npm install -g [email protected]After that read the generator's docs.