{"id":15495093,"url":"https://github.com/samchon/nestia-auto-crud-example","last_synced_at":"2026-05-13T08:08:49.355Z","repository":{"id":204149164,"uuid":"711201632","full_name":"samchon/nestia-auto-crud-example","owner":"samchon","description":"For https://github.com/samchon/nestia/issues/670","archived":false,"fork":false,"pushed_at":"2024-01-17T04:47:56.000Z","size":126,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-25T04:34:19.315Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/samchon.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2023-10-28T14:14:53.000Z","updated_at":"2023-10-29T12:46:12.000Z","dependencies_parsed_at":null,"dependency_job_id":"4cf24894-c546-4ede-b9bc-51976ebd4a79","html_url":"https://github.com/samchon/nestia-auto-crud-example","commit_stats":null,"previous_names":["samchon/nestia-auto-crud-example"],"tags_count":0,"template":false,"template_full_name":"samchon/backend","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/samchon%2Fnestia-auto-crud-example","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/samchon%2Fnestia-auto-crud-example/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/samchon%2Fnestia-auto-crud-example/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/samchon%2Fnestia-auto-crud-example/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/samchon","download_url":"https://codeload.github.com/samchon/nestia-auto-crud-example/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240748362,"owners_count":19851248,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-02T08:16:04.469Z","updated_at":"2026-05-13T08:08:44.305Z","avatar_url":"https://github.com/samchon.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Backend\n## 1. Outline\n### 1.1. Introduction\n[![Build Status](https://github.com/samchon/backend/workflows/build/badge.svg)](https://github.com/samchon/backend/actions?query=workflow%3Abuild)\n\nTemplate for a NodeJS Backend Server powered by:\n\n  - [Typia](https://typia.io): Superfast/easy validators with only one line\n  - [NestJS](https://nestjs.com): NodeJS Typescript Backend Framework\n    - [`@nestia/core`](https://github.com/samchon/nestia): validation decorators 20,000x faster than `class-validator`\n    - [`@nestia/sdk`](https://github.com/samchon/sdk): SDK and Swagger Documents generator\n  - [Prisma](https://www.prisma.io) and [`prisma-markdown`](https://github.com/samchon/prisma-markdown)\n\nPrior, to making this template opensource, I've prepared a couple of backend projects leveraging this template.\nReading this [README.md](https://github.com/samchon/backend) document and traveling below example projects, you may understand how to develop the TypeScript backend server with the [nestia](https://github.com/samchon/nestia) and [safe-typeorm](https://github.com/samchon/safe-typeorm).\n\n  - [samchon/fake-iamport-server](https://github.com/samchon/fake-iamport-server): Fake iamport server, but real SDK\n  - [samchon/fake-toss-payments-server](https://github.com/samchon/fake-toss-payments-server): Fake toss-payments server, but real SDK\n\nIf you have got queries like \"building a new type of backend template\" or \"regarding backend server development using Typescript\", feel free to ask it out over [here](https://github.com/samchon/backend/issues).\n\nAlso, if you've already developed a TypeScript backend server and it seems like that its quality is enough good to be a good example for the backend programming learners, please leave an issue or a pull request.\n\n### 1.2. Specializations\nTransform this template project to be yours.\n\nWhen you've created a new backend project through this template project, you can specialize it to be suitable for you by changing some words. Replace below words through IDE specific function like `Edit \u003e Replace in Files` (*Ctrl + Shift + H*), who've been supported by the VSCode.\n\n| Before          | After\n|-----------------|----------------------------------------\n| ORGANIZATION | Your account or corporation name\n| PROJECT      | Your own project name\n| AUTHOR       | Author name\n| db_name      | Database to connnect\n| db_schema    | Database schema to use\n| db_account   | Database account to use, not root account\n| https://github.com/samchon/backend | Your repository URL\n\nAfter those replacements, you should specialize the [`src/Configuration.ts`](src/Configuration.ts), [.github/workflows/build.yml](.github/workflows/build.yml) files. Open those files and change constant values of these files to be suitable for your project. Also, open markdown files like this [README.md](README.md) and write your specific project story. Below is list of the markdown files.\n\n  - [.github/ISSUE_TEMPLATE/BUG_REPORT.md](.github/ISSUE_TEMPLATE/BUG_REPORT.md)\n  - [.github/ISSUE_TEMPLATE/FEATURE_REQUEST.md](.github/ISSUE_TEMPLATE/FEATURE_REQUEST.md)\n  - [.github/ISSUE_TEMPLATE/QUESTION.md](.github/ISSUE_TEMPLATE/QUESTION.md)\n  - [.github/PULL_REQUEST_TEMPLATE.md](.github/PULL_REQUEST_TEMPLATE.md)\n  - [README.md](README.md)\n  - [CODE_OF_CONNDUCT.md](CODE_OF_CONNDUCT.md)\n  - [CONTRIBUTING.md](CONTRIBUTING.md)\n  - [INTRASTRUCTURE.md](INTRASTRUCTURE.md)\n  - [LICENSE](LICENSE)\n\n### 1.3. Directories\nThis template project has categorized directories like below.\n\nAs you can see from the below, all of the TypeScript source files are placed into the [src](src/) directory. When you build the TypeScript source files, compiled files would be placed into the `bin` directory following the [tsconfig.json](tsconfig.json) configuration. Otherwise you build client [SDK](#32-sdk) library or ORM models for the private npm module publishing, their compiled files would be placed into the [packages](packages) directory.\n\nIf you want to customize configurations of the [Github Action](#52-github-action) or debugging who can be started by the pressing the `F5` key, edit the [.github/workflows/build.yml](.github/workflows/build.yml) or [.vscode/launch.json](.vscode/launch.json) file. Default of their configurations are using the [3.3. Test Automation Program](#33-test-automation-program) without any special argument.\n\nWhen you're planning to deploy the backend server, read the [INFRASTRUCTURE.md](INFRASTRUCTURE.md) file and follow the steps. Following the steps, you may run some executable programs of the [src/executable](src/executable) directory.\n\n  - [.github/workflows/build.yml](.github/workflows/build.yml): Configuration file of the [Github Action](#52-github-action)\n  - [.vscode/launch.json](.vscode/launch.json): Configuration for debugging\n  - [packages/](packages/): Packages to publish as private npm modules\n    - [packages/api/](packages/api): Client [SDK](#32-sdk) library for the client developers\n    - [packages/models/](packages/models): ORM library for the DB developers\n  - [src/](src/): TypeScript Source directory\n    - [src/api/](src/api/): Client SDK that would be published to the `@ORGANIZATION/PROJECT-api`\n      - [**src/api/functional/**](src/api/functional/): API functions generated by the [`nestia`](https://github.com/samchon/nestia)\n      - [**src/api/structures/**](src/api/structures/): DTO structures\n    - [src/controllers/](src/controllers/): Controller classes of the Main Program\n    - [src/providers/](src/providers/): Conversion between ORM Models and DTO Structures\n    - [src/executable/](src/executable/): Executable programs\n      - backend server itself\n      - update program for the user\n      - updator program in the server side\n    - [src/schema.prisma](src/schema.prisma): Prisma Schema File\n  - [**test/**](test/): Test Automation Program\n  - [INFRASTRUCTURE.md](INFRASTRUCTURE.md): How to deploy the backend server on the cloud like AWS\n  - [package.json](package.json): NPM configuration\n  - [tsconfig.json](tsconfig.json): TypeScript configuration for the [Main Program](#34-main-program)\n\n\n\n\n## 2. Installation\n### 2.1. NodeJS\nThis backend server has implemented through TypeScript and it runs on the NodeJS. Therefore, to mount this backend server on your local machine, you've to install the NodeJS.\n\n  - https://nodejs.org/en/\n\nAlso as you can see from the [package.json](package.json) file, this project requires the private npm module `@ORGANIZATION`, provided from the Github. Therefore, to develop this backend server, you've configure the `.npmrc` file. Open the below link and complete the configuration.\n\n  - https://github.com/features/packages\n\n### 2.2. PostgreSQL\nThis backend server has adopted PostgreSQL as principle DB.\n\nTherefore, to mount this backend server on your local machine, you've to install the PostgreSQL v14. Also, you've to install the StackBuilder and PostGIS, at the same time. Click the below link and install those PostgreSQL, StackBuilder and PostGIS.\n\n - https://www.enterprisedb.com/downloads/postgres-postgresql-downloads\n - https://postgis.net/workshops/postgis-intro/installation.html\n\n![PostgreSQL installer](assets/images/postgresql-installer.png)\n\n![StackBuilder installer](assets/images/stackbuilder-installer.png)\n\nWhen the installation has been finnished, you'd better to configure `bin` directory of the PostgreSQL as a environment variable PATH. If your operating system is the Windows, the path may be `C:\\Program Files\\PostgreSQL\\14\\bin`. Otherwise you're using the MacOS, it would be the `/Applications/Postgres.app/Contents/MacOS/bin`.\n\nAfter the environmenta variable PATH configuration, connect to the PostgreSQL terminal and create each `db_name` database and `db_schema` schema. Also, create two accounts `db_account_w` and `db_account_r`, grant writable and readonly privileges to them.\n\nAnyway, you can replace below SQL scripts by running the `npm run schema \u003caccount\u003e \u003cpassword\u003e`. Running the npm run schema command, replace the `\u003caccount\u003e` and `\u003cpassword\u003e` words to the root account of the local PostgreSQL server and its password.\n\n```sql\n-- CREATE USER\nCREATE USER \"db_account_w\" WITH ENCRYPTED PASSWORD 'your_password';\nGRANT \"db_account_w\" TO postgres;\n\n-- CREATE DB \u0026 SCHEMA\nCREATE DATABASE \"db_name\" OWNER \"db_account_w\";\n\\connect \"db_name\";\nCREATE SCHEMA \"db_schema\" AUTHORIZATION \"db_account_w\";\nGRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA \"db_schema\" TO \"db_account_w\";\n\n-- READABLE ACCOUNT\nCREATE USER \"db_account_r\" WITH ENCRYPTED PASSWORD 'your_password';\nGRANT CONNECT ON DATABASE \"db_name\" TO \"db_account_r\";\nGRANT USAGE ON SCHEMA \"db_schema\" TO \"db_account_r\";\nGRANT SELECT ON ALL TABLES IN SCHEMA \"db_schema\" TO \"db_account_r\";\n```\n\n### 2.3. Repository\nFrom now on, you can start the backend server development, right now. \n\nJust download this project through the git clone command and install dependencies by the npm install command. After those preparations, you can start the development by typing the `npm run dev` command.\n\n```bash\n# CLONE REPOSITORY\ngit clone ${REPOSITORY}\ncd backend\n\n# INSTALL DEPENDENCIES\nnpm install\n\n# START DEVELOPMENT (tsc --watch)\nnpm run dev\n```\n\n### 2.4. Data\nWhen those installations have been all completed, you can mount the basic data up or start the local backend server by typing below commands.\n\nAt first, `npm run setup` is a command seed the initial data. Range of the initial data means that minimum data that is required for running the local backend server. Therefore, to mount the backend server up, you've to run the `npm run setup` command, at least.\n\nAt second, `npm run test` is a command running the test automation program. The test automation program not only seeds the initial data, but also generates sample data during the testing. Also, you've to know that, whenever run the `npm run test` command, the local DB would be reset. Therefore, you've consider it carefully, whenever calling the `npm run test` command.\n\n```bash\n# Seed initial data\n# minimum data to running the local backend server\nnpm run setup \n\n# Run test automation program\n# seed not only initial data, but also sample data\n# it resets the local DB\nnpm run test \n\n# Start the local backend server\nnpm run start local \n\n# Stop the local backend server\nnpm run stop \n```\n\n\n\n\n## 3. Development\n### 3.1. Definition\n![ERD](https://camo.githubusercontent.com/c27066086a51d6ff1e3158231e1081fbe4b67f5ffc3fcdeb558b0d0ecbaa9c5f/68747470733a2f2f6769746875622d70726f64756374696f6e2d757365722d61737365742d3632313064662e73332e616d617a6f6e6177732e636f6d2f31333135383730392f3236383137353434312d38306361396338652d346339362d346465622d613863622d3637346539383435656266362e706e67)\n\nIf you want to add a new feature or update ordinary thing in the API level, you should write the code down to the matched *API controller*, who is stored in the [src/controllers](src/controllers) directory as the [Main Program](#34-main-program). \n\nHowever, [@samchon](https://github.com/samchon) does not recommend to writing code down into the [Main Program](#34-main-program) first, without any consideration. Instead, [@samchon](https://github.com/samchon) recommends to declare the definition first and implement the [Main Program](#34-main-program) later.\n\nTherefore, if you want to add a new feature in the API level, define the matched data entity in the [src/models](src/models) and [src/api/structures](src/api/structures) directories. After the data entity definition, declare function header in the matched API controller class in the [src/controllers](src/controllers). Note that, it's only the declaration, header only, not meaning to implement the function body.\n\nAfter those declarations, build the client [SDK](#32-sdk) through the `npm run build:api` command and implement the [Test Automation Program](#33-test-automation-program) using the [SDK](#32-sdk) with use case scenarios. Development of the [Main Program](#34-main-program) should be started after those preparations are all being ready. Of course, the [Main Program](#34-main-program) can be verified with the pre-developed [Test Automation Program](#33-test-automation-program) in everytime.\n\n  - Declare data entity\n  - Declare API function header\n  - Build the client [SDK](32-sdk)\n  - Implement the [Test Automation Program](#33-test-automation-program)\n  - Develop the [Main Program](#34-main-program)\n  - Validate the [Main Program](#34-main-program) through the [Test Automation Program](#33-test-automation-program)\n  - Deploy to the Dev and Real servers.\n\n### 3.2. SDK\n[`@ORGANIZATION/PROJECT`](https://github.com/samchon/backend) provides SDK (Software Development Kit) for convenience.\n\nFor the client developers who are connecting to this backend server, [`@ORGANIZATION/PROJECT`](https://github.com/samchon/backend) provides not API documents like the Swagger, but provides the API interaction library, one of the typical SDK (Software Development Kit) for the convenience.\n\nWith the SDK, client developers never need to re-define the duplicated API interfaces. Just utilize the provided interfaces and asynchronous functions defined in the SDK. It would be much convenient than any other Rest API solutions.\n\nTo build the SDK, just type the `npm run build:api` command. The SDK would be generated by [`nestia`](https://github.com/samchon/nestia), by analyzing source code of the [controller](src/controllers) classes in the compilation level, automatically. After the SDK building, you can publish the SDK through the `npm run package:api` command.\n\n```bash\n# BUILD SDK AND PUBLISH IT\nnpm run build:api\nnpm run package:api\n\n# BUILDING SWAGGER IS ALSO POSSIBLE, \n# BUT NOT RECOMMENDED\nnpm run build:swagger\n```\n\nWhen the SDK has been published, client programmers can interact with this backend server very easily. Just let them to install the SDK and call the SDK functions with the `await` symbol like below.\n\n```typescript\nimport api from \"@samchon/bbs-api\";\n\nimport { IBbsCitizen } from \"@samchon/bbs-api/lib/structures/bbs/actors/IBbsCitizen\";\nimport { IBbsQuestionArticle } from \"@samchon/bbs-api/lib/structures/bbs/articles/IBbsQuestionArticle\";\nimport { IBbsSection } from \"@samchon/bbs-api/lib/api/structures/bbs/systematic/IBbsSection\";\n\nasync function main(): Promise\u003cvoid\u003e\n{\n    //----\n    // PREPARATIONS\n    //----\n    // CONNECTION INFO\n    const connection: api.IConnection = {\n        host: \"http://127.0.0.1:37001\",\n        password: {\n            key: \"pJXhbHlYfzkC1CBK8R67faaBgJWB9Myu\",\n            iv: \"IXJBt4MflFxvxKkn\"\n        }\n    };\n\n    // ISSUE A CUSTOMER ACCOUNT\n    const customer: IBbsCustomer = await api.functional.bbs.customers.authenticate.issue\n    (\n        connection,\n        {\n            href: window.location.href,\n            referrer: window.document.referrer\n        }\n    );\n\n    // ACTIVATE THE CUSTOMER\n    customer.citizen = await api.functional.bbs.customers.authenticate.activate\n    (\n        connection,\n        {\n            name: \"Jeongho Nam\",\n            mobile: \"821036270016\"\n        }\n    );\n\n    //----\n    // WRITE A QUESTION ARTICLE\n    //----\n    // FIND TARGET SECTION\n    const sectionList: IBbsSection[] = await api.functional.bbs.customers.systematic.sections.index\n    (\n        connection\n    );\n    const section: IBbsSection = sectionList.find(section =\u003e section.type === \"qna\")!;\n\n    // PREPARE INPUT DATA\n    const input: IBbsQuestionArticle.IStore = {\n        title: \"Some Question Title\",\n        body: \"Some Question Body Content...\",\n        files: []\n    };\n\n    // DO WRITE\n    const question: IBbsQuestionArticle = await api.functional.bbs.customers.articles.qna.store\n    (\n        connection, \n        section.code,\n        input\n    );\n    console.log(question);\n}\n```\n\n### 3.3. Test Automation Program\n\u003e TDD (Test Driven Development)\n\nAfter the [Definition](#31-definition) and client [SDK](#32-sdk) generation, you've to design the use-case scenario and implement a test automation program who represents the use-case scenario and guarantees the [Main Program](#34-main-program).\n\nTo add a new test function in the Test Automation Program, create a new TS file under the [test/features](test/features) directory following the below category and implement the test scenario function with representative function name and `export` symbol. I think many all of the ordinary files wrote in the [test/features](test/features) directory would be good sample for you. Therefore, I will not describe how the make the test function detaily.\n\nAnyway, you've to remind that, the Test Automation Program resets the DB schema whenever being run. Therefore, you've to be careful if import data has been stored in the local (or dev) DB server. To avoid the resetting the DB, configure the `skipReset` option like below.\n\nAlso, the Test Automation Program runs all of the test functions placed into the [test/features](test/features) directory. However, those full testing may consume too much time. Therefore, if you want to reduce the testing time by specializing some test functions, use the `include` option like below.\n\n  - supported options\n    - `mode`: mode of the target server\n      - *local*\n      - *dev*\n      - ~~*real*~~\n    - `include`: test only restricted functions who is containing the special keyword.\n    - `exclude`: exclude some functions who is containing the special keyword.\n    - `skipReset`: do not reset the DB\n\n```bash\n# test in the dev server\nnpm run test -- --mode=dev\n\n# test without db reset\nnpm run test -- --skipReset\n\n# test only restricted functions whose name contain the \"something\" keyword\n# do not reset db\nnpm run test -- --include=something --skipReset\n```\n\n### 3.4. Main Program\nAfter [Definition](#31-definition), client [SDK](#32-sdk) building and [Test Automation Program](#33-test-automation-program) are all prepared, finally you can develop the Main Program. Also, when you complete the Main Program implementation, it would better to validate the implementation through the pre-built [SDK](#32-sdk) and [Test Automation Program](#33-test-automation-program).\n\nHowever, do not commit a mistake that writing source codes only in the [controller](src/controllers) classes. The API Controller must have a role that only intermediation. The main source code should be write down separately following the directory categorizing. For example, source code about DB I/O should be written into the [src/providers](src/providers) directory.\n\n\n\n\n## 4. Deploy\n### 4.1. Non-distruptive Update System\nIf you've committed a new version and pushed it into the repository, you can update the backend server without any distruption. By the `npm run update` command, you can let backend server to act those non-distruptive update processes.\n\n  - Pull new commit\n  - Build the new soure code\n  - Restart the backend server without distruption\n\nTo accomplish the non-distruptive update system, the server instance must run the updator program before mounting the backend server program up. If the target backend system is composed with multiple server instances like ELB (Elastic Load Balancer) and target instance is not a type of the master instance, you should write the `npm run start:updator:slave` command. \n\nOtherwise, use the `npm run start:updator:master` command.\n\n```bash\n#----\n# RUN UPDATOR PROGRAM\n#----\n# THE INSTANCE IS MASTER\nnpm run start:updator:master\n\n# THE INSTANCE IS SLAVE\nnpm run start:updator:slave\n\n#----\n# MOUNT THE BACKEND SERVER UP\n#----\nnpm run start real\n```\n\n### 4.2. Local Server\nSometimes, you may desire to mount the backend server on your local system, not for running the [Test Automation Program](#33-test-automation-program), but for other reason like the *Front-end Application Development*. \n\nIn that case, you can mount the local backend server up and let it to keep the opening status, until the `npm run stop` command be executed, by typing the `npm run start local` command.\n\n```bash\nnpm run start local\nnpm run stop\n```\n\nAlso, if someone else committed a new version into the master branch, you can update your local backend server without distruption. It means that, [non-distruptive update system](#41-non-distruptive-update-system) even works in the local environment. To activate the [non-distruptive update system](#41-non-distruptive-update-system), run the updator program before mounting the backend server up on your local machine.\n\n```bash\n# START THE LOCAL BACKEND SERVER WITH UPDATOR PROGRAM\nnpm run start updator:master\nnpm run start local\n\n# UPDATE THE LOCAL SERVER WITHOUT DISTRUPTION\nnpm run update local\n```\n\n### 4.3. Dev Server\nTo update the dev server is very easy. Just commit a new code into the `dev` branch, and type the `npm run update dev` command on your local machine. By the command, the dev server will replace its code to the latest and the [Non-distruptive Update System](#41-non-distruptive-update-system) would be executed.\n\n```bash\nnpm run update dev\n```\n\nAlso, the dev server is designed to test and validate the newly commited source code before releasing to the [Real Server](#44-real-server). Therefore, even dev server may required to reset its DB like the [Local Server](#42-local-server) who oftens run the [Test Automation Program](#33-test-automation-program).\n\n```bash\n# MOVE TO THE PROJECT DIRECTORY\nssh ${dev_address}\ncd ${project_directory}\n\n# DO RESET\nnpm run reset:dev\n\n# REFERENCE - COMMAND SET COMPOSING THE RESET:DEV\ngit pull\nnpm install\nnpm run build\nnpx pm2 delete all\nnpm run test -- --mode=dev\nnpm run start:updator:master\nnpm run start dev\n```\n\n### 4.4. Real Server\nTo update the real server is very easy. Just commit a new code into the `real` branch, and type the `npm run update real` command on your local machine. By the command, the dev server will replace its code to the latest and the [Non-distruptive Update System](#41-non-distruptive-update-system) would be executed.\n\n```bash\nnpm run update real\n```\n\n\n\n## 5. Appendix\n### 5.1. NPM Run Commands\nList of the run commands defined in the [package.json](package.json) are like below:\n\n  - `build`: Compile the source code\n    - `build:api`: Build client SDK libray for the client developers\n    - `build:models`: Build ORM library\n  - `dev`: Incremental compilation using the `--watch` option\n  - `reset:dev`: Restart the dev backend server with DB reset\n  - `revert`: Revert the backend server to previous commit\n    - `npm run revert local e245tjfg345tq453tae`\n    - `npm run revert dev e245tjfg345tq453tae`\n    - `npm run revert real e245tjfg345tq453tae`\n  - `schema`: Create DB, users and schemas on Local\n  - `start`: Start the backend server\n    - `npm run start local`\n    - `npm run start dev`\n    - `npm run start real`\n  - `package:api`: Deploy the client SDK library\n  - `package:models`: Deploy the ORM library\n  - `start:updator:master`: Start non-distruptive update system (master)\n  - `start:updator:slave`: Start non-distruptive update system (slave)\n  - `start:reload`: Restart the backend server\n  - `stop`: Stop the backend server\n  - `stop:updator:master`: Stop non-distruptive update system (master)\n  - `stop:updator:salve`: Stop non-distruptive update system (slave)\n  - `test`: Start the [Test Automation Program](#33-test-automation-program)\n  - `test:update`: Test the non-distruptive update system\n  - `update`: Start the non-distruptive update\n    - npm run update dev\n    - npm run update real\n\n### 5.2. Github Action\n[![Build Status](https://github.com/samchon/backend/workflows/build/badge.svg)](https://github.com/samchon/backend/actions?query=workflow%3Abuild)\n\nThis backend project utilizes the Github Action to run the cloud CI (Continuous Integration) test whenever a commit or PR event occurs. The CI test starts from installing the backend server program to a clean Ubuntu system that nothing has been installed yet.\n\nYou know what? All of CI processes, like installing required programs into the clean Ubuntu and compiling and running the Test Automation Program, are defined in the [`.github/workflows/build.yml`](.github/workflows/build.yml) script file. Also \u003cfont color=\"green\"\u003epassing\u003c/font\u003e or \u003cfont color=\"red\"\u003efailure\u003c/font\u003e expressed from the above [badge](https://github.com/samchon/backend/actions?query=workflow%3Abuild) represents outcome of the CI test.\n\n### 5.3. Related Repositories\n\u003e Write the related repositories down.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsamchon%2Fnestia-auto-crud-example","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsamchon%2Fnestia-auto-crud-example","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsamchon%2Fnestia-auto-crud-example/lists"}