Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/alxdelira/teste-gazintech
https://github.com/alxdelira/teste-gazintech
Last synced: 7 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/alxdelira/teste-gazintech
- Owner: Alxdelira
- License: mit
- Created: 2024-06-10T21:15:07.000Z (5 months ago)
- Default Branch: main
- Last Pushed: 2024-06-14T15:57:09.000Z (5 months ago)
- Last Synced: 2024-10-12T04:06:22.736Z (about 1 month ago)
- Language: JavaScript
- Homepage: https://front-gazintech.vercel.app
- Size: 323 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
## 📦 Sobre o Projeto
Este projeto consiste em uma aplicação para cadastro de desenvolvedores associados a diferentes níveis. A aplicação é composta por um backend que oferece uma API RESTful e um frontend que é uma SPA (Single Page Application) interligada à API.
## 🔥 Checklist 📝
### 🚀 Nível 1
- [x] Listar niveis
- [x] Cadastrar um nível
- [x] Editar um nível
- [x] Remover um nível
- [x] Listar desenvolvedores
- [x] Cadastrar um desenvolvedor
- [x] Editar um desenvolvedor
- [x] Remover um desenvolvedor
### 🚀 Nível 2- [x] Impedir remoção de nível com desenvolvedores associados
- [x] Adicionar busca via query para a listagem de n íveis
- [x] Adicionar busca via query para a listagem de desenvolvedores
- [x] Tratamento de Exceções / Retornos erros concisos
- [x] Paginação na listagem de níveis
- [x] Paginação na listagem de desenvolvedores
- [x] Mensagens de sucesso e/ou erros (Ex. Toast Notification)
- [x] Confirmação para exclusão de itens
- [x] Ordenação das tabelas clicando no nome da coluna
- [x] Validações de campos
- [x] Na página de níveis adicionar uma coluna com a qtde de devs associados### 🚀 Nível 3
- [x] Tipagem de dados
- [x] Organização e estrutura de pastas
- [x] Reaproveitamento de código
- [x] Clean Code
- [x] Arquitetura: Clean, Onion, Hexagonal
- [ ] Testes unitários / Feature
- [x] Documentação código/endpoint (swagger)### 🚀 Nível 4
- [x] Disponibilização do backend via Docker
- [x] Disponibilização do frontend via Docker
- [x] Disponibilização dos containers (backend + frontend) via Docker Compose
- [x] Publicação do projeto online## 🧭 Technologies Back-End
Este projeto foi desenvolvido com as seguintes tecnologias:
- `cors`: [npm cors](https://www.npmjs.com/package/cors)
- `dotenv`: [dotenv on GitHub](https://github.com/motdotla/dotenv)
- `express`: [Express.js on GitHub](https://github.com/expressjs/express)
- `Javascript`: [JavaScript on Docs](https://developer.mozilla.org/pt-BR/docs/Web/JavaScript)
- `Swagger`: [swagger-UI on GitHub](https://github.com/swagger-api/swagger-ui)
- `Mongo DB Atlas`: [MongoDB - Atlas](https://www.mongodb.com/pt-br)
- `mongoose`: [Mongoose on GitHub](https://github.com/Automattic/mongoose)
- `mongoose-paginate-v2`: [npm mongoose-paginate-v2](https://www.npmjs.com/package/mongoose-paginate-v2)## 🌐 Technologies Front-End
Este projeto foi desenvolvido com as seguintes tecnologias:
- `@hookform/resolvers`: [npm @hookform/resolvers](https://www.npmjs.com/package/@hookform/resolvers)
- `@radix-ui/react-dialog`: [npm @radix-ui/react-dialog](https://www.npmjs.com/package/@radix-ui/react-dialog)
- `@radix-ui/react-dropdown-menu`: [npm @radix-ui/react-dropdown-menu](https://www.npmjs.com/package/@radix-ui/react-dropdown-menu)
- `@radix-ui/react-label`: [npm @radix-ui/react-label](https://www.npmjs.com/package/@radix-ui/react-label)
- `@radix-ui/react-popover`: [npm @radix-ui/react-popover](https://www.npmjs.com/package/@radix-ui/react-popover)
- `@radix-ui/react-select`: [npm @radix-ui/react-select](https://www.npmjs.com/package/@radix-ui/react-select)
- `@radix-ui/react-slot`: [npm @radix-ui/react-slot](https://www.npmjs.com/package/@radix-ui/react-slot)
- `@tanstack/react-table`: [npm @tanstack/react-table](https://www.npmjs.com/package/@tanstack/react-table)
- `axios`: [npm axios](https://www.npmjs.com/package/axios)
- `class-variance-authority`: [npm class-variance-authority](https://www.npmjs.com/package/class-variance-authority)
- `clsx`: [npm clsx](https://www.npmjs.com/package/clsx)
- `cmdk`: [npm cmdk](https://www.npmjs.com/package/cmdk)
- `dotenv`: [npm dotenv](https://www.npmjs.com/package/dotenv)
- `lucide-react`: [npm lucide-react](https://www.npmjs.com/package/lucide-react)
- `next`: [npm next](https://www.npmjs.com/package/next)
- `react`: [npm react](https://www.npmjs.com/package/react)
- `react-dom`: [npm react-dom](https://www.npmjs.com/package/react-dom)
- `react-hook-form`: [npm react-hook-form](https://www.npmjs.com/package/react-hook-form)
- `react-toastify`: [npm react-toastify](https://www.npmjs.com/package/react-toastify)
- `sharp`: [npm sharp](https://www.npmjs.com/package/sharp)
- `tailwind-merge`: [npm tailwind-merge](https://www.npmjs.com/package/tailwind-merge)
- `tailwindcss-animate`: [npm tailwindcss-animate](https://www.npmjs.com/package/tailwindcss-animate)
- `zod`: [npm zod](https://www.npmjs.com/package/zod)## ⚓ Rodando o Projeto
Você precisará do [Node.js](https://nodejs.org) e [Docker](https://www.docker.com/get-started/) instalado no seu computador para rodar este app.
🔧 Execute o script para rodar localmente o back-end
```bash
git clone https://github.com/Alxdelira/teste-gazintech.gitcd teste-gazin-tech
cd backend
cp .env.example .env
# Configure o .env de acordo com as portas disponiveis
npm installnpm run dev
```
🔧 Para rodar localmente o back-end
```bash
cd frontendcp .env.example .env
# Configure o .env de acordo com as portas disponiveis
npm installnpm run dev
```
🚢 usando `docker-compose.yml` para rodar as imagens
```bash
# diretorio principal execute o seguinte comando no terminaldocker compose -f docker-compose.yml up -d
docker exec backend/ npm run seed
```## Autor
| [
Alexandre Nogueira](https://github.com/Alxdelira) |
| :-----------------------------------------------------------------------------------------------------------------------------------------------: |