{"id":25647412,"url":"https://github.com/lauratrigo/blog_api","last_synced_at":"2026-02-28T02:07:19.778Z","repository":{"id":275870726,"uuid":"927449930","full_name":"lauratrigo/Blog_API","owner":"lauratrigo","description":"Blog API é uma API criada com Node.js e Fastify para gerenciamento de posts de blog. Ela permite realizar operações de CRUD, incluindo criar, listar, comentar, curtir e excluir posts. O projeto foi desenvolvido para fins de estudo, praticando o desenvolvimento de APIs RESTful com essas tecnologias. 📚","archived":false,"fork":false,"pushed_at":"2025-02-09T18:29:45.000Z","size":25,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-23T11:32:50.390Z","etag":null,"topics":["api","api-rest","fastify","javascript","nodejs"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/lauratrigo.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}},"created_at":"2025-02-05T01:12:06.000Z","updated_at":"2025-02-09T18:29:48.000Z","dependencies_parsed_at":"2025-02-05T02:38:42.933Z","dependency_job_id":"742c5e39-94da-4adc-b897-50056e5fcaff","html_url":"https://github.com/lauratrigo/Blog_API","commit_stats":null,"previous_names":["lauratrigo/blog_api"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/lauratrigo/Blog_API","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lauratrigo%2FBlog_API","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lauratrigo%2FBlog_API/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lauratrigo%2FBlog_API/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lauratrigo%2FBlog_API/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lauratrigo","download_url":"https://codeload.github.com/lauratrigo/Blog_API/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lauratrigo%2FBlog_API/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29922850,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-27T19:37:42.220Z","status":"online","status_checked_at":"2026-02-28T02:00:07.010Z","response_time":90,"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":["api","api-rest","fastify","javascript","nodejs"],"created_at":"2025-02-23T11:29:21.115Z","updated_at":"2026-02-28T02:07:19.760Z","avatar_url":"https://github.com/lauratrigo.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 📝 Blog API \n\nEsse é um projeto de **API de Blog** que desenvolvi para fins de estudo. O objetivo principal foi criar uma API simples e funcional utilizando **Fastify** e **Node.js**, permitindo operações de CRUD (criar, ler, atualizar e excluir) para posts de um blog, além de possibilitar comentários e curtidas.\n\n## 🛠 Tecnologias Usadas \n\n- **Node.js**\n- **Fastify**\n- **JavaScript**\n\n![Node.js Badge](https://img.shields.io/badge/Node.js-339933?logo=node.js\u0026logoColor=white)\n![Fastify Badge](https://img.shields.io/badge/Fastify-00C4A7?logo=fastify\u0026logoColor=white)\n![JavaScript Badge](https://img.shields.io/badge/JavaScript-ES6-yellowgreen)\n\n## 💡 Objetivo\n\nO objetivo deste projeto é implementar uma API RESTful simples que permita a criação e gerenciamento de posts, além de possibilitar que os usuários possam comentar, curtir e excluir posts, com um sistema básico de autenticação.\n\n## 🚀 Funcionalidades \n\n- **Listar posts**: Exibe todos os posts criados.\n- **Criar post**: Cria um novo post informando o nome do usuário, o título e o conteúdo.\n- **Comentar post**: Permite que os usuários comentem em posts existentes, com nome e conteúdo do comentário.\n- **Curtir post**: Adiciona ou remove um like de um post.\n- **Excluir post**: Exclui um post se o usuário for o dono do post.\n\n## 📦 Como Rodar o Projeto\n\n### Passo 1: Clonar o Repositório\n\nClone o repositório para sua máquina local:\n\n```bash\ngit clone https://github.com/lauratrigo/Blog_API.git\ncd Blog_API\n```\n### Passo 2: Instalar as Dependências\n\nInstale as dependências do projeto utilizando o npm:\n\n```bash\nnpm install\n```\n### Passo 3: Rodar o Servidor\n\nPara rodar o servidor em modo de desenvolvimento, utilize o seguinte comando:\n\n```bash\nnpm run dev\n```\n  O servidor será iniciado e ficará monitorando alterações nos arquivos para reiniciar automaticamente.\n\n## 🔧 Endpoints\n\n### `GET /posts`\nRetorna a lista de todos os posts.\n\n**Resposta**:\n- Status: `200 OK`\n- Corpo: Array de posts.\n\n### `POST /posts`\nCria um novo post.\n\n**Corpo da Requisição**:\n```json\n{\n  \"username\": \"Nome do Usuário\",\n  \"title\": \"Título do Post\",\n  \"content\": \"Conteúdo do Post\"\n}\n```\n**Resposta**:\n- Status: `201 Created`\n- Corpo: Objeto do novo post.\n\n### `POST /posts/:id/comment`\nAdiciona um comentário a um post.\n\n**Parâmetro**:\n- id: ID do post.\n\n**Corpo da Requisição**:\n```json\n{\n  \"username\": \"Nome do Usuário\",\n  \"content\": \"Conteúdo do Comentário\"\n}\n```\n**Resposta**:\n- Status: `201 Created`\n- Corpo: Objeto do post com o novo comentário.\n\n### `PATCH /posts/:id/like`\nDá ou remove um like de um post.\n\n**Parâmetro**:\n- id: ID do post.\n\n**Corpo da Requisição**:\n```json\n{\n  \"username\": \"Nome do Usuário\"\n}\n```\n**Resposta**:\n- Status: `200 OK`\n- Corpo: Objeto do post atualizado com a lista de likes.\n\n### `DELETE /posts/:id`\nExclui um post.\n\n**Parâmetro**:\n- id: ID do post.\n\n**Corpo da Requisição**:\n```json\n{\n  \"username\": \"Nome do Usuário\"\n}\n```\n**Resposta**:\n- Status: `204 No Content`\n- Corpo: Nenhum.\n\n## 📂 Estrutura do Projeto\n\n```\nblog-api/\n├── src/\n│   ├── middlewares/\n│   │   └── is-auth.js        # Middleware de autenticação\n│   ├── routes/\n│   │   └── posts.js          # Rotas dos posts\n│   └── server.js             # Configuração do servidor Fastify\n├── node_modules/             # Dependências do projeto\n├── package.json              # Dependências e scripts\n└── package-lock.json         # Lock de versões\n```\n\n## 🤝 Agradecimentos\n\nEste projeto foi criado com base em um vídeo do YouTube, onde pude aprender as práticas de criação de uma API com **Fastify**. O objetivo principal foi praticar o uso de **Node.js** e **Fastify** em uma API RESTful.\n\nCaso deseje contribuir, fique à vontade! Para sugestões e melhorias, você pode fazer um fork do repositório, criar uma branch com suas mudanças e enviar um pull request.\n\n## 📜 Licença\n\nEste projeto está licenciado sob a Licença MIT - veja o arquivo LICENSE para mais detalhes.\n\n## 🎥 Créditos\n\nEste projeto foi desenvolvido por Laura Trigo com base no vídeo [como criar uma API com Fastify e Node.js](https://www.youtube.com/watch?v=-zva6JKOWB8\u0026list=PLdP0_O7ZLFU1ze1Lkg1aE8AilZ-_B2JOG\u0026index=4).\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flauratrigo%2Fblog_api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flauratrigo%2Fblog_api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flauratrigo%2Fblog_api/lists"}