Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jeff-pedro/challenge-backend-adopet
Back-End Challenge that build an API RESTful for Adopet website.
https://github.com/jeff-pedro/challenge-backend-adopet
adopet adopet-backend api
Last synced: 2 days ago
JSON representation
Back-End Challenge that build an API RESTful for Adopet website.
- Host: GitHub
- URL: https://github.com/jeff-pedro/challenge-backend-adopet
- Owner: jeff-pedro
- Created: 2024-03-20T00:12:24.000Z (8 months ago)
- Default Branch: main
- Last Pushed: 2024-04-28T16:24:03.000Z (7 months ago)
- Last Synced: 2024-10-12T18:13:56.115Z (about 1 month ago)
- Topics: adopet, adopet-backend, api
- Homepage: https://adopet.sapituca.site
- Size: 218 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Challenge Backend: AdoPet
> A **AdoPet 🐾** é uma empresa fictícia que funciona como intermediária entre pessoas que querem adotar pets e ONGs recolhem os animais das ruas.
## 🤖 Tecnologias usadas
## 🦾 Sobre o desafio
Este projeto foi desenvolvido como resultado de um Desafio Back-End exclusivo para alunos da escola de tecnologia [Alura](https://www.alura.com.br).
O desafio consiste em simular um ambiente de trabalho real no qual é disponibilizado tarefas através do Trello com entregas semanais, durante 4 semanas. Cada tarefa descreve o que o cliente fictício deseja que seja construído. Temos a liberdade de realizar modificações ou seguir novas abordagens a depender das necessidades e criatividade. Podemos também escolher as tecnologias que desejarmos para desenvolver o projeto.
## 👨🏽💻 Sobre o desenvolvimento
No desenvolvido da API foi utilizado o [Express](https://expressjs.com/) como framework de construção de aplicações web, o ORM [Sequelize]() para abstrair a integração com o banco de dados SQL entre outras tecnologias listadas ☝🏾 logo acima, todos como forma de praticar os conceitos das bibliotecas, ferramentas e construção de APIs RESTful.
Para a integração da API com o Front-End previamente desponibilizado, explorei os recursos do [React](https://react.dev/) para realizar as chamadas da API com o **UseEffect**, organizar o código da autenticação via login através dos **hooks** e **contexts**, entre outros recursos que foram sendo necessários durante os ajustes no desenvolvimento e testes.
A API abrange rotas para gerenciamento de usuários, pets, abrigos, perfil e permissões. Assim como autenticação de usuários através de login e autorização de acesso as rotas por meio de tokens JWT gererado no login. Além disso, há também o controle via permissão às rotas por perfil de usuário.
Para os _testes de unidade_ e _integração_ na **API** foi usado [Jest](https://jestjs.io), enquanto para os _testes E2E_ no **Front-end** foi usado o [Cypress](https://www.cypress.io/) como test runner.
Usei o [Docker](https://www.docker.com/) para a construção da imagem e o [Docker Compose](https://docs.docker.com/compose/) para subir a aplicação e o banco de dados localmente para dar suporte ao desenvolvimento e testes.
Há testes e build automatizados que são realizados pelo [GithHub Actions](https://docs.github.com/en/actions) toda vez que um novo commit é enviado para branch principal do repositório da API. Uma vez que todas as verificação são validadas é gerada uma imagem docker e publicada no [Docker Hub](https://hub.docker.com/repository/docker/jeffersonps/adopet-api/general).
O deploy da API e do Front-End é realizado pela plataforma do [Render](https://render.com/), também de forma automática seguindo a mesma regra descrito acima.
Contudo uma refatoração futura do código será necessária após a evolução dos meus estudos.
- 🚀 [Acesse o site](https://adopet.sapituca.site/) para conhecer o **AdoPet**.
## 🏗️ Projetos
- 🚀 [AdoPet API](https://github.com/jeff-pedro/adopet-api)
- 🐾 [AdoPet site](https://github.com/jeff-pedro/adopet-client)## ⚙️ Como usar esse repositório
Este repositório consiste de dois **módulos**, a api e o front-end do Adopet.
É possivels clonar os [projetos](#projects) individualmente ou através deste repositório via **[git submodules](https://git-scm.com/book/en/v2/Git-Tools-Submodules).**Clone este repositório atualizando recursivamente os módulos
```shell
git clone --recurse-submodules https://github.com/jeff-pedro/challenge-backend-adopet.git
```E leia os READMEs de cadas [projeto](#projects) para aprender como usuá-los.
---