https://github.com/andrebeolchi/newsee-fastify-api
https://github.com/andrebeolchi/newsee-fastify-api
Last synced: 5 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/andrebeolchi/newsee-fastify-api
- Owner: andrebeolchi
- Created: 2025-01-13T21:04:20.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-05-17T22:28:58.000Z (about 1 year ago)
- Last Synced: 2025-05-17T23:22:04.542Z (about 1 year ago)
- Language: TypeScript
- Homepage: https://newsee-fastify-api.onrender.com/
- Size: 401 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
README
# Projeto Newsee Fiap Blog

[](https://uptime.betterstack.com/?utm_source=status_badge)
A API Newsee Blog permite que professores possam compartilhar conteúdo didático e informativo com seus alunos.
Este manual oferece uma visão geral de como usar os endpoints disponíveis, incluindo detalhes
de autenticação, exemplos de requisições e respostas, e tratamento de erros.
**Índice**
- [Projeto Newsee Fiap Blog](#projeto-newsee-fiap-blog)
- [Arquitetura da Aplicação](#arquitetura-da-aplicação)
- [Diagrama de Componentes](#diagrama-de-componentes)
- [Fluxo de Dados e Interações](#fluxo-de-dados-e-interações)
- [Estrutura](#estrutura)
- [/adapters](#adapters)
- [/models](#models)
- [/env](#env)
- [/repositories](#repositories)
- [/services](#services)
- [/http](#http)
- [app.ts](#appts)
- [server.ts](#serverts)
- [Instalação e configuração](#instalação-e-configuração)
- [Instalação de dependências](#instalação-de-dependências)
- [Inicialização do banco](#inicialização-do-banco)
- [Configuração do banco](#configuração-do-banco)
- [Atualização do banco](#atualização-do-banco)
- [Configurar variáveis de ambiente](#configurar-variáveis-de-ambiente)
- [Inicialização do projeto](#inicialização-do-projeto)
- [Ambiente de desenvolvimento](#ambiente-de-desenvolvimento)
- [Ambiente de produção](#ambiente-de-produção)
- [CI/CD](#cicd)
- [Autores](#autores)
## Arquitetura da Aplicação
### Diagrama de Componentes
O sistema é dividido atualmente em dois componentes principais:
- **Backend**: Contém a lógica de negócios e a API, construído com Node.js (fastify).
- **Banco de Dados**: Gerenciamento de dados com PostgreSQL.
### Fluxo de Dados e Interações
O fluxo de dados ocorre da seguinte forma:
1. É feita uma requisição á API
2. Middlewares são usados para fazer a validação de autenticação
3. Os controladores fazem a associação da rota e método da requisição ao respectivo serviço
4. Os serviços realizam ações e alterações necessárias ao repositório
5. O repositório armazena a informação e persiste em um banco postgresql
## Estrutura
### /adapters
- **db**: inicialização do client do prisma (banco postgres)
### /models
Definição de tipagem para modelos de usuários e posts
### /env
Garante a configuração correta das variáveis de ambiente
### /repositories
Definição de interfaces dos repositórios base para usuários e posts
- **/in-memory**: Definição de classe de repositório "em memória" para gerenciamento de dados locais sem persistência
- **/prisma**: Definição de classe de repositório integrado ao prisma para gerenciamento de dados persistidos no banco
### /services
Definição de serviços para interação com modelos posts e users
- **/\_errors**: Definição de classes customizadas de erro, e handler que mapeia o erro à sua classe adequada a partir do código de status
- **/factory**: Definição de funções que acoplam o repositório do prisma aos serviços para uso simplificado na aplicação
- **/posts** e **/users**: Definições de serviços para posts e usuários
### /http
- **/controllers**: Definição das rotas da API, utilizando os serviços definidos em /services
- **/middlewares**: Definição de middlewares para interceptar e validar requisições
### app.ts
Configura o servidor fastify e acopla rotas ao app, além de incluir a inicialização do swagger para documentação da API.
### server.ts
Inicializa o servidor
## Instalação e configuração
### Instalação de dependências
```bash
yarn
```
### Inicialização do banco
```bash
docker compose up -d
```
Argumento "-d" usado para rodar o container em background
### Configuração do banco
```bash
yarn prisma generate
```
### Atualização do banco
```bash
yarn prisma migrate dev
```
Esse comando deve ser utilizado em caso de alterações ao schema do prisma
### Configurar variáveis de ambiente
Seguir exemplo demonstrado em `.env.example`, criando um arquivo `.env` na raiz do projeto
## Inicialização do projeto
### Ambiente de desenvolvimento
```bash
yarn dev
```
### Ambiente de produção
Gera versão de build da aplicação
```bash
yarn build
```
Inicializa versão de build
```bash
yarn start
```
## CI/CD
Foi configurado um fluxo utilizando GithubActions para validação do projeto com testes unitários automatizados
## Autores
[André Beolchi](https://github.com/andrebeolchi) (RM 359648)
[Fellipe Corominas](https://github.com/LeFelps) (RM 359677)