{"id":15495101,"url":"https://github.com/samchon/nestjs-study-router-module","last_synced_at":"2026-01-28T10:35:05.805Z","repository":{"id":200822981,"uuid":"706321695","full_name":"samchon/nestjs-study-router-module","owner":"samchon","description":"To support RouterModule in Nestia","archived":false,"fork":false,"pushed_at":"2023-10-18T12:25:28.000Z","size":32,"stargazers_count":1,"open_issues_count":3,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-01-19T10:53:43.448Z","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":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"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-17T18:06:06.000Z","updated_at":"2025-05-03T08:23:57.000Z","dependencies_parsed_at":null,"dependency_job_id":"3bed46d4-eb9a-47fe-9369-82a1f65857ba","html_url":"https://github.com/samchon/nestjs-study-router-module","commit_stats":null,"previous_names":["samchon/nestjs-study-router-module"],"tags_count":0,"template":false,"template_full_name":"samchon/nestia-start","purl":"pkg:github/samchon/nestjs-study-router-module","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/samchon%2Fnestjs-study-router-module","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/samchon%2Fnestjs-study-router-module/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/samchon%2Fnestjs-study-router-module/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/samchon%2Fnestjs-study-router-module/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/samchon","download_url":"https://codeload.github.com/samchon/nestjs-study-router-module/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/samchon%2Fnestjs-study-router-module/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28844014,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-28T07:39:25.367Z","status":"ssl_error","status_checked_at":"2026-01-28T07:39:24.487Z","response_time":57,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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:06.460Z","updated_at":"2026-01-28T10:35:05.790Z","avatar_url":"https://github.com/samchon.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Nestia Template\n## Outline\n[![Build Status](https://github.com/samchon/nestia-template/workflows/build/badge.svg)](https://github.com/samchon/nestia-template/actions?query=workflow%3Abuild)\n\nA template repository for backend projects using [nestia](https://github.com/samchon/nestia).\n\nYou can create a new project from this boilerplate by running below command:\n\n```bash\nnpx nestia start \u003cdirectory\u003e\n```\n\nFor reference, this is a minimal boilerplate project concentrating only on [nestia](https://github.com/samchon/nestia) SDK generation. If you wanna much detailed boilerplate project even configured DB and Non-distruptive update system, visit [samchon/backend](https://github.com/samchon/backend) and create a new repository from that.\n\n\n\n\n## Directories and Files\nThis template project has categorized directories like below.\n\nAs you can see from the below, all of the Backend source files are placed into the [src](src/) directory. When you build the TypeScript source files, compiled files would be placed into the `lib` directory following the [tsconfig.json](tsconfig.json) configuration. Otherwise you build client [SDK](#32-sdk) library for npm publishing and their compiled files would be placed into the [packages](packages) directory.\n\n  - [packages/api/](packages/api): SDK module built by `npm run build:api`\n  - [src/](src): Backend 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  - [**test/**](test): Test Automation Program\n  - [nestia.config.ts](nestia.config.ts): Configuration file of [`nestia`](https://github.com/samchon/nestia)\n  - [package.json](package.json): NPM configuration\n  - [tsconfig.json](tsconfig.json): TypeScript configuration for the main program\n  - [tsconfig.api.json](tsconfig.api.json): TypeScript configuration for the SDK generation\n\n\n\n\n## NPM Run Commands\nList of the run commands defined in the [package.json](package.json) are like below:\n\n  - `build`: Build everything\n  - `build:api`: Build client SDK libray for the client developers\n  - `build:main`: Build main program (`src` directory)\n  - `build:sdk`: Build SDK into main program only\n  - `build:swagger`: Build Swagger Documents\n  - `build:test` Build test automation program (`test` directory)\n  - `dev`: Incremental build for development (test program)\n  - `eslint` \u0026 `eslint:fix` \u0026 `prettier`: Prettier and ESLint execution\n  - `start`: Start local NestJS server\n  - `test`: Run test automation program\n\n\n\n\n## Specialization\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| https://github.com/samchon/nestia-template | Your repository URL\n\n\n\n\n## Test Driven Development\nWith [nestia](https://github.com/samchon/nestia) helps to accomplish TDD (Test Driven Development). \n\nJust define DTOs and API controllers' methods (only declarations) first. After the definitions, and build SDK (Software Development Kit) through [nestia](https://github.com/samchon/nestia) (`npm run build:sdk`). After buildling those SDK, develop test automation program using the SDK, following use-case scenarios in the framework of client side.\n\nDuring the test automation program development, you can find that which API is mis-designed or which requirement analysis is not exact. Development of the main program must be the last step after such validation process during TDD.\n\n\u003e Visit the [samchon/backend](https://github.com/samchon/backend), then you may find much detailed story about this TDD.\n\u003e\n\u003e 1. Definitions\n\u003e 2. SDK\n\u003e 3. Test Automation Program\n\u003e 4. Main Program\n\n```typescript\nimport typia from \"typia\";\n\nimport api from \"@ORGANIZATION/PROJECT-api/lib/index\";\nimport { IBbsArticle } from \"@ORGANIZATION/PROJECT-api/lib/structures/bbs/IBbsArticle\";\n\nimport { ArrayUtil } from \"../../../../utils/ArrayUtil\";\nimport { GaffComparator } from \"../../../internal/GaffComparator\";\nimport { RandomGenerator } from \"../../../internal/RandomGenerator\";\nimport { validate_index_sort } from \"../../../internal/validate_index_sort\";\n\nexport async function test_api_bbs_article_index_sort(\n    connection: api.IConnection,\n): Promise\u003cvoid\u003e {\n    // GENERATE 100 ARTICLES\n    const section: string = \"general\";\n    const articles: IBbsArticle[] = await ArrayUtil.asyncRepeat(100, () =\u003e\n        api.functional.bbs.articles.store(connection, section, {\n            writer: RandomGenerator.name(),\n            title: RandomGenerator.paragraph(),\n            body: RandomGenerator.content(),\n            format: \"txt\",\n            files: [],\n            password: RandomGenerator.alphabets(8),\n        }),\n    );\n    typia.assertEquals(articles);\n\n    // PREPARE VALIDATOR\n    const validator = validate_index_sort(\"BbsArticleProvider.index()\")(\n        (input: IBbsArticle.IRequest) =\u003e\n            api.functional.bbs.articles.index(connection, section, input),\n    );\n\n    // DO VALIDATE\n    const components = [\n        validator(\"created_at\")(GaffComparator.dates((x) =\u003e x.created_at)),\n        validator(\"updated_at\")(GaffComparator.dates((x) =\u003e x.updated_at)),\n        validator(\"title\")(GaffComparator.strings((x) =\u003e x.title)),\n        validator(\"writer\")(GaffComparator.strings((x) =\u003e x.writer)),\n        validator(\n            \"writer\",\n            \"title\",\n        )(GaffComparator.strings((x) =\u003e [x.writer, x.title])),\n    ];\n    for (const comp of components) {\n        await comp(\"+\");\n        await comp(\"-\");\n    }\n}\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsamchon%2Fnestjs-study-router-module","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsamchon%2Fnestjs-study-router-module","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsamchon%2Fnestjs-study-router-module/lists"}