{"id":13674835,"url":"https://github.com/kammradt/learning-nestjs","last_synced_at":"2026-04-24T16:02:30.309Z","repository":{"id":46901473,"uuid":"253362232","full_name":"kammradt/learning-nestjs","owner":"kammradt","description":"🔺We are on quarentine, so lets study another JS framework 🤷🏻‍♂️ 🔺","archived":false,"fork":false,"pushed_at":"2021-09-21T19:50:02.000Z","size":1690,"stargazers_count":4,"open_issues_count":12,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-05-17T05:10:01.364Z","etag":null,"topics":["api","nest","nestjs","rest","typescript"],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kammradt.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-04-06T00:44:54.000Z","updated_at":"2020-05-10T20:26:16.000Z","dependencies_parsed_at":"2022-08-27T00:41:44.445Z","dependency_job_id":null,"html_url":"https://github.com/kammradt/learning-nestjs","commit_stats":null,"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/kammradt/learning-nestjs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kammradt%2Flearning-nestjs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kammradt%2Flearning-nestjs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kammradt%2Flearning-nestjs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kammradt%2Flearning-nestjs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kammradt","download_url":"https://codeload.github.com/kammradt/learning-nestjs/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kammradt%2Flearning-nestjs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32230421,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-24T13:21:15.438Z","status":"ssl_error","status_checked_at":"2026-04-24T13:21:15.005Z","response_time":64,"last_error":"SSL_read: 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":["api","nest","nestjs","rest","typescript"],"created_at":"2024-08-02T11:01:03.751Z","updated_at":"2026-04-24T16:02:30.273Z","avatar_url":"https://github.com/kammradt.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"http://nestjs.com/\" target=\"blank\"\u003e\u003cimg src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n  \u003cp align=\"center\"\u003eWelcome to my learning proccess with NestJS ✏️ \u003c/p\u003e\n    \u003cp align=\"center\"\u003e\n  \u003ca href=\"https://twitter.com/kammzinho\"\u003e\u003cimg src=\"https://img.shields.io/twitter/follow/kammzinho.svg?style=social\u0026label=Follow\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n## Description 📝\n\n\u003e Hi there!\n\u003e I will update this repo with new information as soon as I build something cool 😅\n\u003e **Update**: Course finished! 🥰 Now I just need to find a problem to be solved 🤔\n\n\n## Sections 🤹🏻‍♂️\n\n- [X] Basic structure to perform CRUD ([this tag](https://github.com/kammradt/learning-nestjs/tree/crud-with-fake-data))   \n- [X] Basic usage of pipes and validation on DTOs ([this tag](https://github.com/kammradt/learning-nestjs/tree/using-pipes-and-validation))   \n- [X] Using persistence and queryBuilder([this tag](https://github.com/kammradt/learning-nestjs/tree/persistence-and-query-builder))\n- [X] Adding basic Jwt Authentication ([this tag](https://github.com/kammradt/learning-nestjs/tree/adding-basic-auth))\n- [X] Adding Authorization ([this tag](https://github.com/kammradt/learning-nestjs/tree/adding-authorization))\n- [X] Adding Tests with Jest ([this tag](https://github.com/kammradt/learning-nestjs/tree/adding-tests))\n- [X] Adding secure responses (@Exclude instead of DTOs) ([this tag](https://github.com/kammradt/learning-nestjs/tree/adding-global-dto-solution))\n- [X] Adding role based authorization (ADMIN section)([this tag](https://github.com/kammradt/learning-nestjs/tree/adding-role-based-authorization))\n\n## Useful links 🔗\n\n- `class-validator` Annotations can be found [here](https://github.com/typestack/class-validator#validation-decorators)\n- `TypeORM` [here](https://typeorm.io/)\n- `queryBuilder` by `TypeORM` [here](https://github.com/typeorm/typeorm/blob/master/docs/select-query-builder.md)\n- `queryBuilder with find { }` [here](https://github.com/typeorm/typeorm/blob/master/docs/find-options.md)\n- Using a `ClassSerializerInterceptor` to hide sensitive data (instead of ResponseDTOs) [here](https://docs.nestjs.com/techniques/serialization#exclude-properties)\n  - How to add it globally [here](https://stackoverflow.com/questions/55720448/nestjs-how-to-setup-classserializerinterceptor-as-global-interceptor)\n- Using roles on handlers [here](https://docs.nestjs.com/guards#setting-roles-per-handler)\n  - More details can be found [here](https://docs.nestjs.com/fundamentals/execution-context#reflection-and-metadata).  \n  I chose the `.getAndOverride` approach, where a `Controller` level has a default `Role`, and some `actions (methods)` inside it can have more specific/restricted roles.\n\n## Stay in touch 🤗 👨🏻‍💻\n\n- Author - [Vinicius Kammradt](https://kammradt.now.sh)\n- Twitter - [@kammzinho](https://twitter.com/kammzinho)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkammradt%2Flearning-nestjs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkammradt%2Flearning-nestjs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkammradt%2Flearning-nestjs/lists"}