{"id":38452357,"url":"https://github.com/andrebeolchi/newsee-fastify-api","last_synced_at":"2026-01-17T04:49:14.803Z","repository":{"id":272355904,"uuid":"916307758","full_name":"andrebeolchi/newsee-fastify-api","owner":"andrebeolchi","description":null,"archived":false,"fork":false,"pushed_at":"2025-05-17T22:28:58.000Z","size":411,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-17T23:22:04.542Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://newsee-fastify-api.onrender.com/","language":"TypeScript","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/andrebeolchi.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,"zenodo":null}},"created_at":"2025-01-13T21:04:20.000Z","updated_at":"2025-05-17T22:29:01.000Z","dependencies_parsed_at":"2025-01-13T22:35:41.040Z","dependency_job_id":"2171dd4d-6481-446e-97b7-3cb94fd6336c","html_url":"https://github.com/andrebeolchi/newsee-fastify-api","commit_stats":null,"previous_names":["andrebeolchi/newsee-fastify-api"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/andrebeolchi/newsee-fastify-api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrebeolchi%2Fnewsee-fastify-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrebeolchi%2Fnewsee-fastify-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrebeolchi%2Fnewsee-fastify-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrebeolchi%2Fnewsee-fastify-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andrebeolchi","download_url":"https://codeload.github.com/andrebeolchi/newsee-fastify-api/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrebeolchi%2Fnewsee-fastify-api/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28496599,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T04:31:57.058Z","status":"ssl_error","status_checked_at":"2026-01-17T04:31:45.816Z","response_time":85,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":"2026-01-17T04:49:14.718Z","updated_at":"2026-01-17T04:49:14.777Z","avatar_url":"https://github.com/andrebeolchi.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Projeto Newsee Fiap Blog\n\n![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/andrebeolchi/newsee-fastify-api/test.yml?style=flat\u0026label=hourly%20tests)\n[![Better Stack Badge](https://uptime.betterstack.com/status-badges/v2/monitor/1q8no.svg)](https://uptime.betterstack.com/?utm_source=status_badge)\n\nA API Newsee Blog permite que professores possam compartilhar conteúdo didático e informativo com seus alunos.\nEste manual oferece uma visão geral de como usar os endpoints disponíveis, incluindo detalhes\nde autenticação, exemplos de requisições e respostas, e tratamento de erros.\n\n**Índice**\n\n- [Projeto Newsee Fiap Blog](#projeto-newsee-fiap-blog)\n  - [Arquitetura da Aplicação](#arquitetura-da-aplicação)\n    - [Diagrama de Componentes](#diagrama-de-componentes)\n    - [Fluxo de Dados e Interações](#fluxo-de-dados-e-interações)\n  - [Estrutura](#estrutura)\n    - [/adapters](#adapters)\n    - [/models](#models)\n    - [/env](#env)\n    - [/repositories](#repositories)\n    - [/services](#services)\n    - [/http](#http)\n    - [app.ts](#appts)\n    - [server.ts](#serverts)\n  - [Instalação e configuração](#instalação-e-configuração)\n    - [Instalação de dependências](#instalação-de-dependências)\n    - [Inicialização do banco](#inicialização-do-banco)\n    - [Configuração do banco](#configuração-do-banco)\n    - [Atualização do banco](#atualização-do-banco)\n    - [Configurar variáveis de ambiente](#configurar-variáveis-de-ambiente)\n  - [Inicialização do projeto](#inicialização-do-projeto)\n    - [Ambiente de desenvolvimento](#ambiente-de-desenvolvimento)\n    - [Ambiente de produção](#ambiente-de-produção)\n  - [CI/CD](#cicd)\n  - [Autores](#autores)\n\n## Arquitetura da Aplicação\n\n### Diagrama de Componentes\n\nO sistema é dividido atualmente em dois componentes principais:\n\n- **Backend**: Contém a lógica de negócios e a API, construído com Node.js (fastify).\n- **Banco de Dados**: Gerenciamento de dados com PostgreSQL.\n\n### Fluxo de Dados e Interações\n\nO fluxo de dados ocorre da seguinte forma:\n\n1. É feita uma requisição á API\n2. Middlewares são usados para fazer a validação de autenticação\n3. Os controladores fazem a associação da rota e método da requisição ao respectivo serviço\n4. Os serviços realizam ações e alterações necessárias ao repositório\n5. O repositório armazena a informação e persiste em um banco postgresql\n\n## Estrutura\n\n### /adapters\n\n- **db**: inicialização do client do prisma (banco postgres)\n\n### /models\n\nDefinição de tipagem para modelos de usuários e posts\n\n### /env\n\nGarante a configuração correta das variáveis de ambiente\n\n### /repositories\n\nDefinição de interfaces dos repositórios base para usuários e posts\n\n- **/in-memory**: Definição de classe de repositório \"em memória\" para gerenciamento de dados locais sem persistência\n- **/prisma**: Definição de classe de repositório integrado ao prisma para gerenciamento de dados persistidos no banco\n\n### /services\n\nDefinição de serviços para interação com modelos posts e users\n\n- **/\\_errors**: Definição de classes customizadas de erro, e handler que mapeia o erro à sua classe adequada a partir do código de status\n- **/factory**: Definição de funções que acoplam o repositório do prisma aos serviços para uso simplificado na aplicação\n- **/posts** e **/users**: Definições de serviços para posts e usuários\n\n### /http\n\n- **/controllers**: Definição das rotas da API, utilizando os serviços definidos em /services\n- **/middlewares**: Definição de middlewares para interceptar e validar requisições\n\n### app.ts\n\nConfigura o servidor fastify e acopla rotas ao app, além de incluir a inicialização do swagger para documentação da API.\n\n### server.ts\n\nInicializa o servidor\n\n## Instalação e configuração\n\n### Instalação de dependências\n\n```bash\nyarn\n```\n\n### Inicialização do banco\n\n```bash\ndocker compose up -d\n```\n\n\u003csmall\u003eArgumento \"-d\" usado para rodar o container em background\u003c/small\u003e\n\n### Configuração do banco\n\n```bash\nyarn prisma generate\n```\n\n### Atualização do banco\n\n```bash\nyarn prisma migrate dev\n```\n\n\u003csmall\u003eEsse comando deve ser utilizado em caso de alterações ao schema do prisma\u003c/small\u003e\n\n### Configurar variáveis de ambiente\n\nSeguir exemplo demonstrado em `.env.example`, criando um arquivo `.env` na raiz do projeto\n\n## Inicialização do projeto\n\n### Ambiente de desenvolvimento\n\n```bash\nyarn dev\n```\n\n### Ambiente de produção\n\n\u003csmall\u003eGera versão de build da aplicação\u003c/small\u003e\n\n```bash\nyarn build\n```\n\n\u003csmall\u003eInicializa versão de build\u003c/small\u003e\n\n```bash\nyarn start\n```\n\n## CI/CD\n\nFoi configurado um fluxo utilizando GithubActions para validação do projeto com testes unitários automatizados\n\n## Autores\n\n\u003cimg src=\"https://avatars.githubusercontent.com/u/61586777\" width=\"16\" height=\"16\"\u003e [André Beolchi](https://github.com/andrebeolchi) (RM 359648)\n\u003cbr\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/34667580\" width=\"16\" height=\"16\"\u003e [Fellipe Corominas](https://github.com/LeFelps) (RM 359677)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandrebeolchi%2Fnewsee-fastify-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandrebeolchi%2Fnewsee-fastify-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandrebeolchi%2Fnewsee-fastify-api/lists"}