{"id":26235831,"url":"https://github.com/sub-dev/blog-comments-api-nestjs","last_synced_at":"2026-04-27T13:32:30.568Z","repository":{"id":261479051,"uuid":"884411508","full_name":"Sub-Dev/blog-comments-api-nestjs","owner":"Sub-Dev","description":null,"archived":false,"fork":false,"pushed_at":"2024-11-14T19:58:35.000Z","size":387,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-12-30T22:33:15.143Z","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/Sub-Dev.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,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-11-06T17:46:36.000Z","updated_at":"2024-11-14T19:58:38.000Z","dependencies_parsed_at":"2024-11-06T19:42:46.020Z","dependency_job_id":"7833d3ec-5a9b-4d61-83df-61f3cb1159ca","html_url":"https://github.com/Sub-Dev/blog-comments-api-nestjs","commit_stats":null,"previous_names":["sub-dev/blog-comments-api-nestjs"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Sub-Dev/blog-comments-api-nestjs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sub-Dev%2Fblog-comments-api-nestjs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sub-Dev%2Fblog-comments-api-nestjs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sub-Dev%2Fblog-comments-api-nestjs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sub-Dev%2Fblog-comments-api-nestjs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Sub-Dev","download_url":"https://codeload.github.com/Sub-Dev/blog-comments-api-nestjs/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sub-Dev%2Fblog-comments-api-nestjs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32339289,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-26T23:26:28.701Z","status":"online","status_checked_at":"2026-04-27T02:00:06.769Z","response_time":128,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":"2025-03-13T03:18:06.364Z","updated_at":"2026-04-27T13:32:30.551Z","avatar_url":"https://github.com/Sub-Dev.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch3 align = \"center\" fontSize=\"60px\"\u003e\n    📄 Blog Comments API\n\u003c/h3\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg alt=\"Swagger\" title=\"blog-comments-api\" src=\".github/swagger.png\" width=\"100%\" /\u003e\n\u003c/p\u003e\n\nEsta é uma API para um sistema de comentários de blog, desenvolvida com NestJS, TypeORM e PostgreSQL. O projeto possui autenticação com JWT e documentação com Swagger.\n\n## 📋 Sumário\n\n- [✨ Recursos](#-recursos)\n- [🛠️ Tecnologias Utilizadas](#️-tecnologias-utilizadas)\n- [🎓 Aprendizados](#-aprendizados)\n- [📋 Pré-requisitos](#-pré-requisitos)\n- [📥 Instalação](#-instalação)\n- [⚙️ Configuração do Ambiente](#️-configuração-do-ambiente)\n- [🚀 Executando o Projeto](#-executando-o-projeto)\n- [🧪 Testes](#-testes)\n- [📘 Endpoints da API](#-endpoints-da-api)\n- [📜 Licença](#-licença)\n\n---\n\n## ✨ Recursos\n\n- CRUD para Posts e Comentários\n- Autenticação com JWT\n- Documentação da API com Swagger\n\n## 🛠️ Tecnologias Utilizadas\n\n- ![NestJS](https://img.shields.io/badge/-NestJS-E0234E?style=flat\u0026logo=nestjs\u0026logoColor=white) [NestJS](https://nestjs.com/)\n- ![TypeORM](https://img.shields.io/badge/-TypeORM-FF6C37?style=flat\u0026logo=typeorm\u0026logoColor=white) [TypeORM](https://typeorm.io/)\n- ![PostgreSQL](https://img.shields.io/badge/-PostgreSQL-336791?style=flat\u0026logo=postgresql\u0026logoColor=white) [PostgreSQL](https://www.postgresql.org/)\n- ![Docker](https://img.shields.io/badge/-Docker-2496ED?style=flat\u0026logo=docker\u0026logoColor=white) [Docker](https://www.docker.com/)\n- ![JWT](https://img.shields.io/badge/-JWT-000000?style=flat\u0026logo=json-web-tokens\u0026logoColor=white) [JWT](https://jwt.io/)\n- ![Swagger](https://img.shields.io/badge/-Swagger-85EA2D?style=flat\u0026logo=swagger\u0026logoColor=black) [Swagger](https://swagger.io/)\n\n## 🎓 Aprendizados\n\nDurante o desenvolvimento deste projeto, foram adquiridos e aprimorados conhecimentos em diversas áreas:\n\n- NestJS: Estruturação de um projeto modular com NestJS, incluindo o uso de Controllers, Services e Guards para autenticação.\n- TypeORM: Criação e configuração de entidades e relações no banco de dados, além do uso do repositório para operações CRUD.\n- Autenticação JWT: Implementação de autenticação segura usando JSON Web Tokens (JWT), com proteção de rotas sensíveis.\n- Swagger: Documentação automática da API com Swagger, facilitando a visualização e teste dos endpoints.\n- Testes Unitários com Jest: Criação de testes unitários para verificar o comportamento dos módulos principais do projeto, simulando interações com a API.\n- Docker: Configuração do ambiente de desenvolvimento e banco de dados com Docker, facilitando a instalação e execução do projeto.\n- Boas práticas e segurança: Aplicação de práticas para proteção de dados, como hashing de senhas e uso de variáveis de ambiente para informações sensíveis.\n\n## 📋 Pré-requisitos\n\n- ![Node.js](https://img.shields.io/badge/-Node.js-339933?style=flat\u0026logo=node.js\u0026logoColor=white) [Node.js](https://nodejs.org/) (versão 14 ou superior)\n- ![npm](https://img.shields.io/badge/-npm-CB3837?style=flat\u0026logo=npm\u0026logoColor=white) ou ![Yarn](https://img.shields.io/badge/-Yarn-2C8EBB?style=flat\u0026logo=yarn\u0026logoColor=white) [npm](https://www.npmjs.com/) ou [Yarn](https://yarnpkg.com/)\n- ![PostgreSQL](https://img.shields.io/badge/-PostgreSQL-336791?style=flat\u0026logo=postgresql\u0026logoColor=white) [PostgreSQL](https://www.postgresql.org/)\n\n## 📥 Instalação\n\n1. Clone o repositório:\n\n   ```bash\n   git clone https://github.com/Sub-Dev/blog-comments-api-nestjs\n   cd blog-comments-api\n   ```\n\n2. Instale as dependências:\n\n   ```bash\n   npm install\n   ```\n\n## ⚙️ Configuração do Ambiente\n\n1.  Crie um arquivo `.env` na raiz do projeto e defina as variáveis de ambiente:\n\n   ```env\n\n    DB_HOST=localhost\n    DB_PORT=5432\n    DB_USER=nestuser\n    DB_PASSWORD=nestpassword\n    DB_NAME=blog_comments\n    JWT_SECRET=chavesecreta\n\n   ```\n\n2.  Certifique-se de ter um banco de dados PostgreSQL configurado com os mesmos detalhes acima.\n\n## 🚀 Executando o Projeto\n\n1. Execute as migrações:\n\n   ```bash\n   npm run migration:run\n   ```\n\n2. Inicie o servidor de desenvolvimento:\n\n   ```bash\n   npm run start:dev\n   ```\n\n3. A API estará disponível em `http://localhost:3000`.\n\n## 🧪 Testes\n\nEste projeto utiliza Jest para testes. Para rodar os testes, execute:\n\n```bash\nnpm test\n```\n\n## 📘 Endpoints da API\n\nA documentação completa dos endpoints está disponível no Swagger. Após iniciar o servidor, acesse:\n\n🔗 [Swagger Documentation](http://localhost:3000/api)\n\n### Exemplos de Endpoints\n\n#### 🔒 Autenticação\n\n- **POST** `/auth/login` — Autentica um usuário e retorna um token JWT.\n\n#### 👤 Usuários\n\n- **POST** `/users/register` — Cria um novo usuário.\n- **POST** `/users/login` — Realiza o login do usuário e retorna o token JWT.\n\n#### 📝 Posts\n\n- **POST** `/posts` — Cria um novo post. _(Requer autenticação)_\n- **GET** `/posts` — Retorna todos os posts.\n\n#### 💬 Comentários\n\n- **POST** `/comments/:postId` — Adiciona um comentário a um post específico. _(Requer autenticação)_\n\n## 📜 Licença\n\nDistribuído sob a licença MIT. Veja LICENSE para mais informações.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsub-dev%2Fblog-comments-api-nestjs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsub-dev%2Fblog-comments-api-nestjs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsub-dev%2Fblog-comments-api-nestjs/lists"}