# 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 no diretório `/api`: #### .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 preencha no diretório `/spa`: #### .env ```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 - Username:admin Senha:admin - **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.