Sobre | Funcionalidades | Tecnologias | Requisitos | Iniciando | Licença | Autor
Este projeto disponibiliza o backend para o sistema web da Agrotec (em desenvolvimento) e para o site da Agrotec (em desenvolvimento) por meio de um REST API.
Para um melhor entendimento do objetivo desta API, vale destacar que:
-
O objetivo do site da Agrotec é servir como catálogo organizado, prático e simples de produtos para melhor auxiliar os clientes da loja.
-
O objetivo do sistema Agrotec é fazer com que o cliente consiga manter seu site de maneira autônoma.
- Deve ser possível cadastrar um novo usuário.
- Não é preciso estar logado no sistema para cadastrar um novo usuário.
- Por padrão, o usuário cadastrado não terá acesso ao sistema, ele não será executor nem administrador, terá somente o cadastro.
- Não deverá ser possível cadastrar um usuário já existente.
- Deve ser possível permitir que o usuário cadastrado acesse o sistema como executor.
- O responsável por dar acesso de executor a um usuário cadastrado, deve ser um usuário administrador.
- O usuário administrador precisa estar logado ao sistema para transformar o usuário cadastrado em um usuário executor.
- Deve ser possível permitir que o usuário cadastrado acesse o sistema como administrador.
- O responsável por dar acesso de administrador a um usuário cadastrado, deve ser um usuário administrador.
- O usuário administrador precisa estar logado ao sistema para transformar o usuário cadastrado em um usuário administrador.
- Deve ser possível listar todos os usuários cadastrados.
- Somente um usuário administrador poderá listar usuários.
- O usuário administrador precisa estar logado no sistema para listar usuários.
- Deve ser possível deletar um usuário cadastrado.
- Somente um usuário administrador poderá deletar um usuário.
- O usuário administrador precisa estar logado no sistema para deletar usuários.
- Deve ser possível cada usuário alterar seus próprios dados de cadastro.
- Todos os usuários, independente do tipo de permissão, podem editar suas próprias informações de cadastro.
- O usuário precisa estar logado no sistema para editar suas informações.
- Não será possível editar o e-mail.
- Deve ser possível cadastrar um novo tipo de grupo
- Somente usuários administradores ou executores podem cadastrar um novo grupo.
- O usuário precisa estar logado no sistema para cadastrar um novo grupo.
- Não deve ser possível cadastrar um grupo que já exista.
- Deve ser possível listar todos os grupos.
- Somente usuários administradores ou executores podem listar os grupos.
- O usuário precisa estar logado no sistema para listar os grupos.
- Deve ser possível deletar um grupo.
- Somente usuários administradores ou executores podem deletar um grupo.
- O usuário precisa estar logado no sistema para deletar um grupo.
- Não será possível deletar um grupo que tenha categoria(s) vinculada(s) a ele.
- Deve ser possível editar informações do grupo cadastrado.
- Somente usuários administradores ou executores podem editar as informações.
- O usuário precisa estar logado no sistema para editar suas informações.
- Não será possível editar o nome do grupo.
- Deve ser possível cadastrar uma nova categoria.
- Somente usuários administradores ou executores podem cadastrar uma nova categoria.
- O usuário precisa estar logado no sistema para cadastrar uma nova categoria.
- Não deve ser possível cadastrar uma categoria que já existe.
- Deve ser possível listar todos as categorias de modo que essa listagem contenha detalhes do grupo que cada uma está vinculada.
- Deve ser possível lista categorias por grupo.
- Somente usuários administradores ou executores podem listar as categorias.
- O usuário precisa estar logado no sistema para listar as categorias.
- Deve ser possível deletar uma categoria.
- Somente usuários administradores ou executores podem deletar uma categoria.
- O usuário precisa estar logado no sistema para deletar uma categoria.
- Não será possível deletar uma categoria que tenha produto(s) vinculado(s) a ela.
- Deve ser possível editar informações da categoria.
- Somente usuários administradores ou executores podem editar as informações.
- O usuário precisa estar logado no sistema para editar.
- Não será possível editar o nome da categoria.
- Deve ser possível cadastrar um novo fornecedor.
- Somente usuários administradores ou executores podem cadastrar um novo fornecedor.
- O usuário precisa estar logado no sistema para cadastrar um novo fornecedor.
- Não deve ser possível cadastrar um fornecedor que já existe.
- Deve ser possível listar todos os fornecedores.
- Somente usuários administradores ou executores podem listar os fornecedores.
- O usuário precisa estar logado no sistema para listar os fornecedores.
- Deve ser possível deletar um fornecedor.
- Somente usuários administradores ou executores podem deletar um fornecedor.
- O usuário precisa estar logado no sistema para deletar um fornecedor.
- Nao deve ser possível deletar um fornecedor que esteja vinculado a um ou mais produtos.
- Deve ser possível editar informações do fornecedor.
- Somente usuários administradores ou executores podem editar as informações.
- O usuário precisa estar logado no sistema para editar.
- Não será possível editar o nome do fornecedor.
- Deve ser possível cadastrar um novo produto.
- Somente usuários administradores ou executores podem cadastrar um novo produto.
- O usuário precisa estar logado no sistema para cadastrar um novo produto.
- Deve ser possível cadastrar a imagem do produto.
- Utilizar o multer para fazer o upload dos arquivos.
- Somente usuários administradores ou executores podem cadastrar uma imagem para o produto.
- O usuário precisa estar logado no sistema para cadastrar imagem para o produto.
- Deve ser possível listar todos os produtos.
- Deve ser possível listar os produtos por grupo de categorias.
- Deve ser possível listar os produtos por categoria.
- Deve ser possível listar os produtos por fornecedor.
- Somente usuários administradores ou executores podem listar os produtos.
- O usuário precisa estar logado no sistema para cadastrar imagem para o produto.
- Deve ser possível deletar um produto.
- Somente usuários administradores ou executores podem deletar um produto.
- O usuário precisa estar logado no sistema para deletar um produto.
- Deve ser possível editar informações de um produto.
- Somente usuários administradores ou executores podem editar informações de um produto.
- O usuário precisa estar logado no sistema para atualizar um produto.
Neste projeto foram utilizadas as seguintes ferramentas:
- Node.js
- Express
- TypeScript
- Prisma
- Docker
- PostgreSQL como uma imagem Docker
- Autenticação com jsonwebtoken
- Injeção de dependências com tsyringe
- Criptografia com o bcryptjs
- Tratamento de erros com o express-async-errors
- Upload de arquivos com multer
- Padronização de código com eslint e prettier
Antes de começar, é preciso ter o Git, o Node e o Docker instalados.
# Clone this project
$ git clone git@github.com:elena-calcada/agrotec-api.git
# Install dependencies
$ npm install
or
$ yarn
# Criar container PostgreSQL
$ docker run --name name_container -e POSTGRES_USER=user_container -e POSTGRES_PASSWORD=password_container -p 5432:5432 -d postgres
# Logar no PostgreSQL
$ psql -U name_user
# Logado no PostgreSQL, criar o database
$ CREATE DATABASE agrotec;
# Run migrate
$ npx prisma migrate dev
or
$ yarn prisma migrate dev
# Run the project
$ npm run dev
or
$ yarn dev
# The server will initialize in the <http://localhost:3333>
Made by Elena Calçada