Go to file
2024-07-21 00:16:14 -03:00
api send all files 2024-07-21 00:15:14 -03:00
etc send all files 2024-07-21 00:15:14 -03:00
spa send all files 2024-07-21 00:15:14 -03:00
README.md Fix: Readme 2024-07-21 00:16:14 -03:00

NAPPDesafio

Cadastro de Produto

Precisamos criar uma aplicação, em que iremos realizar o cadastro de Produto, Estoque e Preço. Essa aplicação precisa ter um frontend em react em que podemos criar, atualizar, listar e deletar produtos. As informações enviadas para essa API devem ser armazenadas em um banco de dados de sua preferência.

Para o cadastro ser completo precisamos receber via API as seguintes informações:

  • Código
  • Nome
  • Estoque
  • Estoque Total
    • Estoque de Corte
  • Preço De
  • Preço Por

No banco de dados precisamos ter no mínimo seguintes informações de forma obrigatória:

  • Código
  • Nome
  • Estoque
    • Estoque Total
    • Estoque de Corte
    • Estoque Disponível
  • Preço De
  • Preço Por OBS: fique à vontade para acrescentar mais campos caso necessário

Algumas regras que devem ser seguidas:

  • O código precisa ser único;
  • Ao realizar um POST e/ou PUT deve ser enviado apenas o "Estoque Total" e "Estoque de Corte", mas a aplicação precisa calcular e salvar no "Estoque Disponível" o resultado do "Estoque Total" - "Estoque de Corte";
  • O Preço De não pode ser inferior ao Preço Por;
  • Precisamos "auditar" as informações, ou seja, precisamos ver data e hora das transações no banco de dados; A aplicação precisa estar de forma fácil para realizarmos o setup, de preferência Docker. A API não precisa ter autenticação, mas fique à vontade caso queira implementar.

Projeto de CRUD Simples de Produtos com React.js e Golang

Este é um projeto de uma aplicação de um CRUD simples desenvolvida com React.JS para o frontend e Golang (utilizando o framework Fiber) para o backend. O banco de dados utilizado é o Postgres. O propósito deste projeto é demonstrar minhas habilidades de desenvolvimento web e back-end.

Como Rodar o Projeto

Pré-requisitos

Antes de começar, certifique-se de ter o Docker e o Docker Compose instalados em sua máquina.

Passo 1: Clone o Repositório

Clone este repositório para a sua máquina usando o seguinte comando:

git clone https://gitea.pradoc.com.br/Rhuan/NAPPDesafio.git

Passo 2: Navegue até o Diretório do Projeto

Navegue até o diretório do projeto recém-clonado:

cd NAPPDesafio

Passo 3: Configure as Variáveis de Ambiente

Crie um arquivo .env no diretório raiz do projeto e configure as variáveis de ambiente necessárias. Você pode usar o arquivo .env.example como referência. Para api preencha:

.env

PORT=3003
JWT_KEY=t35t4nd0
DATABASE_URL=postgresql://postgres:postgres@postgres-db-api:5432/postgres?sslmode=disable&pool_max_conns=10

Crie um arquivo .env no diretório raiz do projeto e configure as variáveis de ambiente necessárias. Você pode usar o arquivo .env.example como referência. Para spa-insta preencha:

.env.local

VITE_APP_API_URL=http://127.0.0.1:3003

Passo 4: Navegue até o Diretório do Projeto

Navegue até o diretório do projeto /etc:

cd etc/

Passo 5: Inicie o Projeto com Docker Compose

Use o Docker Compose para construir e iniciar os contêineres do frontend, backend e banco de dados:

docker compose up --build

Isso irá construir as imagens Docker e iniciar os serviços. Aguarde até que todos os serviços estejam em execução.

Passo 6: Acesse a Aplicação

Após a conclusão dos passos anteriores, a aplicação deve estar em execução. Você pode acessá-la em seu navegador em:

http://localhost:3000

Funcionalidades Principais

  • Login: Fazer login na aplicação.

  • CRUD Produtos: CRUD básico de produtos.

Tecnologias Utilizadas

  • React - Framework React para o frontend.
  • Golang - Linguagem de programação para o backend.
  • Fiber - Framework web para Golang.
  • PostgreSQL - Banco de dados PostgreSQL.
  • sqlc - Gerador de queries Sqlc.

Contribuição

Este projeto foi criado para fins de demonstração de habilidades. Se você deseja contribuir, sinta-se à vontade para abrir um problema ou enviar uma solicitação pull.

Licença

Este projeto é licenciado sob a licença MIT. Consulte o arquivo LICENSE para obter mais detalhes.