Skip to content

Repository files navigation

Blogs API

Descrição

API REST para produção de conteúdo de um blog, com autenticação e persistência em banco de dados. O projeto implementa um CRUD de posts usando Node.js e Sequelize, com relacionamento entre usuários e posts. Também utiliza categorias para classificar os posts, trabalhando o relacionamento muitos para muitos entre posts e categorias, seguindo princípios de arquitetura REST.

Funcionalidades

  • Autenticação com login e geração de token para liberar rotas protegidas.
  • CRUD de posts com vínculo ao usuário autenticado, incluindo listagem e busca.
  • Gestão de categorias e associação de posts a múltiplas categorias.
  • Endpoints REST com respostas e códigos HTTP apropriados.
  • Validações de dados de entrada e regras de acesso (ex. permissões por autor).

Demonstração do Projeto

O projeto é uma API REST e não possui uma interface gráfica. Abaixo está uma imagem ilustrativa representando o conceito do projeto.
Acesse a demonstração

Tecnologias Utilizadas

  • Node.js: Runtime JavaScript para construir a API e executar o servidor.
  • Express: Framework para criação de rotas, middlewares e organização do servidor HTTP.
  • Sequelize: ORM para modelagem das entidades, migrations, seeders e consultas no banco relacional.
  • MySQL: Banco de dados relacional utilizado para persistir usuários, posts e categorias.
  • JWT: Padrão de token para autenticação e autorização de acesso às rotas protegidas.

Estrutura do Projeto

A estrutura do projeto é organizada da seguinte forma:


/
├── src/
│   ├── controllers/    # Controladores das rotas
│   ├── services/       # Lógica de negócio
│   ├── routes/         # Definição das rotas
│   ├── middlewares/    # Middlewares de autenticação e validação
│   ├── models/         # Modelos Sequelize
│   ├── config/         # Configurações do banco de dados
│   ├── migrations/     # Arquivos de migração
│   ├── seeders/        # Arquivos de seeders
│   ├── models/         # Modelos Sequelize
│   ├── utils/          # Funções utilitárias
│   ├── validations/    # Esquemas de validação
│   ├── database/       # Configuração do banco de dados
│   ├── server.js
│   └── app.js
├── docker-compose.yml
├── Dockerfile
├── jest.config.js
├── package-lock.json
├── env.example
├── package.json
└── README.md

Contato

Willian Gonçalves | LinkedIn | Github | Portfólio | Email

Créditos

Este exercício foi desenvolvido como parte do curso de Desenvolvimento Web Full Stack oferecido pela Trybe.

English Version

Blogs API

Description

REST API for blog content production, including authentication and database persistence. The project implements a full CRUD for posts using Node.js and Sequelize, with a relationship between users and posts. It also supports categories to classify posts, using a many to many relationship between posts and categories, following REST principles.

Features

  • Authentication with login and token generation to access protected routes.
  • Posts CRUD linked to the authenticated user, including listing and searching.
  • Categories management and post association with multiple categories.
  • REST endpoints with proper HTTP status codes and responses.
  • Validations for input data and access rules (for example author permissions).

Project Demonstration

The project is a REST API and does not have a graphical interface. Below is an illustrative image representing the project concept.
Access the demonstration

Technologies Used

  • Node.js: JavaScript runtime to build the API and run the server.
  • Express: Framework for routing, middlewares, and HTTP server structure.
  • Sequelize: ORM for data modeling, migrations, seeders, and relational queries.
  • MySQL: Relational database used to persist users, posts, and categories.
  • JWT: Token standard used for authentication and authorization in protected routes.

Project Structure

The project structure is organized as follows:


  /
  ├── src/
  │   ├── controllers/    # Controllers for the routes
  │   ├── services/       # Business logic
  │   ├── routes/         # Route definitions
  │   ├── middlewares/    # Authentication and validation middlewares
  │   ├── models/         # Sequelize Models
  │   ├── config/         # Database configurations
  │   ├── migrations/     # Migration files
  │   ├── seeders/        # Seeder files
  │   ├── models/         # Sequelize Models
  │   ├── utils/          # Utility functions
  │   ├── validations/    # Validation schemas
  │   ├── database/       # Database setup
  │   ├── server.js
  │   └── app.js
  ├── docker-compose.yml
  ├── Dockerfile
  ├── jest.config.js
  ├── package-lock.json
  ├── env.example
  ├── package.json
  └── README.md
  

Contact

Willian Gonçalves | LinkedIn | Github | Portfolio | Email

Credits

This exercise was developed as part of the Full Stack Web Development course offered by Trybe.

About

API REST para um blog com autenticação e CRUD de posts, usando Node.js, Express e Sequelize (MySQL). Inclui relacionamento usuário.post e posts.categorias (N:N), validações e endpoints seguindo REST.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages