{"id":19272193,"url":"https://github.com/isaque-s-0liveira/blogs-api-be","last_synced_at":"2026-05-06T01:34:51.367Z","repository":{"id":256077183,"uuid":"728421250","full_name":"isaque-S-0liveira/blogs-api-BE","owner":"isaque-S-0liveira","description":"Este projeto consiste no desenvolvimento de uma API RESTful para gerenciar um blog, utilizando Node.js e o ORM Sequelize para a interação com o banco de dados MySQL. ","archived":false,"fork":false,"pushed_at":"2024-09-08T20:54:39.000Z","size":292,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-05T13:42:06.502Z","etag":null,"topics":["express","joi","jwt-jsonwebtoken","mysql","sequelize"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/isaque-S-0liveira.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-12-06T22:51:28.000Z","updated_at":"2024-09-08T20:58:14.000Z","dependencies_parsed_at":"2024-09-08T21:36:18.403Z","dependency_job_id":"5956ec51-a7a5-4651-a50e-1d418944da57","html_url":"https://github.com/isaque-S-0liveira/blogs-api-BE","commit_stats":null,"previous_names":["isaque-s-0liveira/blogs-api-be"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/isaque-S-0liveira%2Fblogs-api-BE","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/isaque-S-0liveira%2Fblogs-api-BE/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/isaque-S-0liveira%2Fblogs-api-BE/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/isaque-S-0liveira%2Fblogs-api-BE/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/isaque-S-0liveira","download_url":"https://codeload.github.com/isaque-S-0liveira/blogs-api-BE/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240373995,"owners_count":19791325,"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":["express","joi","jwt-jsonwebtoken","mysql","sequelize"],"created_at":"2024-11-09T20:35:47.108Z","updated_at":"2025-10-26T10:13:09.396Z","avatar_url":"https://github.com/isaque-S-0liveira.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Blogs api\n\n## Contexto\n\nO foco principal deste projeto é, com base nos ensinamentos da **Trybe**, desenvolver uma **API** e um **banco de dados** para a produção de conteúdo de um blog. O objetivo é criar uma aplicação utilizando **Node.js** e o pacote **Sequelize** para gerenciar as operações de **CRUD** (Create, Read, Update e Delete) de posts e usuários, seguindo os princípios de uma API **RESTful**.\n\n\u003cdetails\u003e\n  \u003csummary\u003eO que é a Trybe?🤔\u003c/summary\u003e\n  A Trybe é uma escola de desenvolvimento web genuinamente comprometida com o sucesso profissional de seus estudantes. Com o Modelo de Sucesso Compartilhado (MSC) oferecido pela Trybe Fintech, uma instituição financeira autorizada pelo Banco Central do Brasil, os alunos têm a opção de pagar apenas quando estiverem trabalhando.\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003e🎲 Diagrama ER\u003c/summary\u003e\n  \u003cdiv style=\"display:flex; justify-content:center;  align-items:center; width=\"100%\"\u003e\n  \u003cimg src=\"Preview/erBlogsApi.png\" alt=\"page1\"/\u003e\n  \u003c/div\u003e\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003e\u003ch3\u003eObjetivos do Projeto:\u003c/h3\u003e\u003c/summary\u003e\n\n  \n1. **Desenvolver uma API RESTful**:\n   - A API foi desenvolvida para gerenciar um blog, permitindo a criação, leitura, atualização e exclusão de posts e usuários.\n   - Cada post deve estar associado a um usuário, e categorias podem ser vinculadas aos posts, criando uma relação entre **users**, **posts**, e **categories**.\n   - A autenticação é implementada por meio de **tokens**, sendo necessário login para realizar operações específicas.\n\n2. **Migrations e Models**:\n   - Utilizando o **Sequelize**, foram criadas **migrations** para estruturar o banco de dados e gerar as tabelas necessárias, como `users`, `categories`, `blog_posts`, e `posts_categories`.\n   - As models foram configuradas para refletir corretamente o diagrama de **Entidade-Relacionamento (ER)**, garantindo que as operações de banco de dados sigam as regras estabelecidas.\n\n3. **Autenticação e Validação**:\n   - A aplicação requer autenticação para acessar determinados endpoints, garantindo que apenas usuários autenticados possam criar, atualizar ou excluir posts.\n   - A validação de token é implementada por **middlewares**, que são responsáveis por verificar a validade dos tokens nas requisições.\n\n4. **Relacionamentos e Categorias**:\n   - O projeto explora as relações entre **posts** e **categorias**, permitindo que os posts sejam vinculados a múltiplas categorias.\n   - Essas relações são tratadas através de associações no Sequelize, utilizando relações de **1:N** e **N:N**.\n     \n\u003c/details\u003e\n \n\n\n\u003cdetails\u003e\n  \u003csummary\u003e\u003ch3\u003eFuncionalidades Implementadas:\u003c/h3\u003e\u003c/summary\u003e\n\n- **Users**:\n  - **POST /login**: Endpoint para login de usuários, retornando um token de autenticação.\n  - **POST /user**: Cadastro de novos usuários.\n  - **GET /user**: Listagem de todos os usuários (requer token).\n  - **GET /user/:id**: Exibe detalhes de um usuário específico (requer token).\n\n- **Categories**:\n  - **POST /categories**: Cadastro de novas categorias (requer token).\n  - **GET /categories**: Listagem de todas as categorias (requer token).\n\n- **Posts**:\n  - **POST /post**: Criação de novos posts vinculados a usuários e categorias (requer token).\n  - **GET /post**: Listagem de todos os posts, com suas respectivas categorias e autores (requer token).\n  - **GET /post/:id**: Exibição de um post específico pelo ID (requer token).\n  - **PUT /post/:id**: Atualização de posts (somente pelo autor, requer token).\n  - **DELETE /post/:id**: Exclusão de posts (somente pelo autor, requer token).\n  - **GET /post/search?q=:searchTerm**: Busca por posts com base no termo fornecido (requer token).\n\u003c/details\u003e\n\n\n\n\u003cdetails\u003e\n  \u003csummary\u003e\u003ch3\u003eHabilidades Desenvolvidas:\u003c/h3\u003e\u003c/summary\u003e\n\n- **Node.js** e **Sequelize**: Utilização do ORM Sequelize para manipulação do banco de dados MySQL, abstraindo operações SQL e facilitando a integração com a API.\n- **Arquitetura RESTful**: Desenvolvimento de uma API organizada em camadas, seguindo os princípios REST para a estruturação de endpoints e recursos.\n- **Autenticação com JWT**: Implementação de autenticação por meio de tokens JWT para garantir a segurança de endpoints privados.\n- **Migrations e Models**: Criação de models e migrations no Sequelize, respeitando o diagrama de Entidade-Relacionamento (ER).\n- **Validação de Dados**: Implementação de validações em diversos endpoints, como o cadastro de usuários e posts, garantindo a integridade dos dados.\n- **Relações entre Tabelas**: Exploração das associações de **1:N** e **N:N** entre `users`, `posts` e `categories` no banco de dados.\n- **Middlewares**: Uso de middlewares para autenticação e validação de dados antes da execução de operações críticas.\n\n\u003c/details\u003e\n\nEste projeto oferece uma visão completa da criação de uma aplicação backend moderna, com funcionalidades robustas de gerenciamento de conteúdo, autenticação e integração com um banco de dados relacional.\n\n\n## Tecnologias Usadas\n\n- [Node.js](https://nodejs.org/) - Plataforma de execução de JavaScript no servidor.\n- [Express](https://expressjs.com/) - Framework para Node.js que facilita a criação de APIs e gerenciamento de rotas.\n- [Sequelize](https://sequelize.org/) - ORM (Object-Relational Mapping) para Node.js, utilizado para interagir com o banco de dados MySQL.\n- [MySQL](https://www.mysql.com/) - Banco de dados relacional utilizado para armazenar as informações de usuários, posts e categorias.\n- [Joi](https://joi.dev/) - Biblioteca para validação de dados no backend.\n- [JWT (JSON Web Token)](https://jwt.io/) - Utilizado para autenticação e geração de tokens de segurança.\n\n\n## Entre em contato:\n\u003ca href=\"mailto:zazac3179@gmail.com\" target=\"_blank\"\u003e\n  \u003cimg align=\"center\" src=\"https://img.shields.io/badge/Gmail-D14836?style=for-the-badge\u0026logo=gmail\u0026logoColor=white\" alt=\"E-mail\" height=\"40\" width=\"auto\" /\u003e\n\u003c/a\u003e\n\u003ca href=\"https://www.linkedin.com/in/isaque-s-oliveira/\" target=\"blank\"\u003e\u003cimg align=\"center\" src=\"https://raw.githubusercontent.com/rahuldkjain/github-profile-readme-generator/master/src/images/icons/Social/linked-in-alt.svg\" alt=\"isaque oliveira\" height=\"30\" width=\"40\" /\u003e\u003c/a\u003e\n\u003ca href=\"https://wa.me/5574981510614\" target=\"blank\"\u003e\u003cimg align=\"center\" src=\"https://raw.githubusercontent.com/rahuldkjain/github-profile-readme-generator/master/src/images/icons/Social/whatsapp.svg\" alt=\"WhatsApp\" height=\"30\" width=\"40\" /\u003e\u003c/a\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fisaque-s-0liveira%2Fblogs-api-be","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fisaque-s-0liveira%2Fblogs-api-be","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fisaque-s-0liveira%2Fblogs-api-be/lists"}