NAPPDesafio/README.md
2024-07-21 00:16:14 -03:00

140 lines
4.2 KiB
Markdown

# 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:
```bash
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:
```bash
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
```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
```env
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`:
```bash
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:
```bash
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:
```url
http://localhost:3000
```
## Funcionalidades Principais
- **Login**: Fazer login na aplicação.
- **CRUD Produtos**: CRUD básico de produtos.
## Tecnologias Utilizadas
- [React](https://react.dev/) - Framework React para o frontend.
- [Golang](https://golang.org) - Linguagem de programação para o backend.
- [Fiber](https://gofiber.io) - Framework web para Golang.
- [PostgreSQL](https://www.postgresql.org/) - Banco de dados PostgreSQL.
- [sqlc](https://sqlc.dev/) - 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](LICENSE) para obter mais detalhes.