ct-core

Build the REST API with json metadata.

Usage no npm install needed!

<script type="module">
  import ctCore from 'https://cdn.skypack.dev/ct-core';
</script>

README

CT-CORE

Build the REST API with json metadata.

This is a quick back-end system. You need create more modules, more versions, more APIs.. with only one json metadata

Table of contents

Requirements

Start MongoDB

mongod --port 27017

1. Getting started with global module

1.1 Install CT-CORE
npm install -g ct-core
1.2 Initial application
ct-core init
1.3 Updating application
ct-core update
1.4 Configuration environment
cp .env.copy .env
1.5 Start application
ct-core start

2. Getting started with include as a module

2.1 Init the project package.json
npm init project-name

Open the file package.json and update tag "script"

"scripts": {
  "init": "cross-env START_WITH=init node index.js",
  "start": "cross-env START_WITH=start node index.js",
  "update": "cross-env START_WITH=update node index.js",
  "generate-doc": "cross-env START_WITH=apidoc node index.js",
  "apidoc": "npm run generate-doc && apidoc -i api/service/ -o doc/"
}

After that run command to add dependencies

npm install --save ct-core
npm install --save-dev apidoc
npm install --save-dev cross-env
2.2 Create index.js file
const core = require('ct-core');
const cmd = process.env.START_WITH ? process.env.START_WITH : 'start';
try {
  core(cmd);
} catch (e) {
  console.error(e);
}
2.3 Install node modules
npm install
2.4 Initial application and default handles
npm run init
2.5 Updating application if got the new version of ct-core
npm run update
2.6 Configuration environment
cp .env.copy .env
2.7 Start application as development
npm run start

Now go to homepage http://localhost:3000

Use the Postman to test application

Some results for test

HTTP/1.1 200 OK

[
  {
    "gender": "male",
    "_id": "5e7115bd926d13129e9b1cdf",
    "username": "username7",
    "email": "email7@email.com",
    "password": "ssss",
    "age": 65,
    "phone": "0979737908",
    "birthday": "2020-03-17T07:06:16.664Z",
    "salary": 1500.8,
    "avatar": "https://i.pinimg.com/originals/90/b0/b3/90b0b3b15ccecf9efda592b0bdf462aa.jpg",
    "last_ip": "30.230.33.25"
  }
]

Also when doing requests, it's good to know that:

  • If you make POST, PUT, PATCH or DELETE requests, changes will be automatically.
  • Your request body JSON should be object enclosed, just like the GET output. (for example {"name": "Foobar"})
  • Id values are not mutable. Any id value in the body of your PUT or PATCH request will be ignored. Only a value set in a POST request will be respected, but only if not already taken.
  • A POST, PUT or PATCH request should include a Content-Type: application/json header to use the JSON in the request body. Otherwise it will result in a 200 OK but without changes being made to the data.

Routes

    GET     -> /*/auth/get-token (*)
    GET     -> /*/auth/refresh-token (token)
    GET     -> /*/system/get-captcha (token)
    GET     -> /v1.0.0/setting/default (token)
    GET     -> /v1.0.0/setting/init/:password (token)
    GET     -> /v1.0.0/setting/get-by-id/:id (token,admin)
    PUT     -> /v1.0.0/setting/get-all (token,admin)
    POST    -> /v1.0.0/setting/add (token,admin)
    POST    -> /v1.0.0/setting/edit (token,admin)
    DELETE  -> /v1.0.0/setting/delete (token,admin)
    DELETE  -> /v1.0.0/setting/deletes (token,admin)
    POST    -> /v1.0.0/upload/file (token)
    PUT     -> /v1.0.0/user/login (token)
    PUT     -> /v1.0.0/user/logout (token)
    PUT     -> /v1.0.0/user/login-social (token)
    PUT     -> /v1.0.0/user/admin (token)
    PUT     -> /v1.0.0/user/check-username (token)
    PUT     -> /v1.0.0/user/check-email (token)
    PUT     -> /v1.0.0/user/forgot-password (token)
    PUT     -> /v1.0.0/user/reset-password (token)
    PUT     -> /v1.0.0/user/register-user (token)
    PUT     -> /v1.0.0/user/change-password (token,login)
    PUT     -> /v1.0.0/user/send-password (token,admin)
    POST    -> /v1.0.0/user/add-child (token,login)
    GET     -> /v1.0.0/user/get-children (token,login)
    DELETE  -> /v1.0.0/user/del-child (token,login)
    POST    -> /v1.0.0/user/add-user (token,admin)
    POST    -> /v1.0.0/user/edit-user (token,login)
    GET     -> /v1.0.0/user/get-by-id/:id (token,login)
    GET     -> /v1.0.0/user/get-all (token,admin)
    PUT     -> /v1.0.0/user/active-user (token,admin)
    PUT     -> /v1.0.0/user/disable (token,login)
    DELETE  -> /v1.0.0/user/delete-user (token,admin)
    DELETE  -> /v1.0.0/user/delete-users (token,admin)

Connection the database

api/v1.0.0/database/mongo.json

{
  "driver": "mongoose",
  "connection": "mongodb://{HOST}:{PORT}/{DATABASE}",
  "options": {
    "useCreateIndex": true,
    "useNewUrlParser": true,
    "useUnifiedTopology": true,
    "serverSelectionTimeoutMS": 5000
  }
}

CLI usage

1. ct-core init
2. ct-core update
3. ct-core apidoc
4. ct-core start [options]

Options:
  --port, -p     Start app with port
  --host, -h     Start app with host
  --quiet, -q    Start app without log                                 [boolean]
  --help         Show help                                             [boolean]
  --version, -v  Show version number                                   [boolean]

Examples:
  core init
  core update
  core apidoc
  core start -h localhost -p 3000

https://www.npmjs.com/package/ct-core
Deployment

Install software to serve

npm install -g pm2
pm2 startup

Go to root application, copy and edit the environment in the process.json

cp process.json.copy process.json
pm2 start process.json
pm2 save

License

MIT