Sistema de banco de dados de Bar. Gerencie produtos, atendimentos e outras atividades do seu bar com nosso sistema.
Esse projeto é parte do projeto final para a disciplina Banco de Dados I.
- Gerenciar o estoque, atualizando o status dos itens, seus preços e disponibilidade.
- Buscar e filtrar itens do estoque por critérios como tipo, data de validade e fornecedor.
- Registrar, consultar e atualizar transações de venda, gastos e cobranças.
- Gerenciar o cadastro e o saldo devedor dos clientes.
- Registrar e consultar gastos operacionais com recursos não comerciais, como utensílios e mobília.
- Gerar e recuperar relatórios financeiros que apresentem ganhos, gastos e projeções para um período arbitrário.
- Gerenciar (CRUD) o cadastro de funcionários, atribuindo cargos e outros valores.
- Consultar e atualizar os dados de pagamento, salários e bonificações de um funcionário específico.
- Gerar e recuperar relatórios de folha de pagamento para uma categoria de funcionários ou para a equipe inteira.
- Gerenciar (CRUD) a criação de regras de desconto e combos promocionais.
- Buscar e filtrar promoções por critérios como popularidade, lucratividade e data de criação.
A API backend foi criada utilizando a linguagem Go (1.24). O servidor HTTP foi desenvolvido usando inteiramente a biblioteca padrão net/http. Enquanto o banco de dados utilizado é um banco PostgreSQL. Já no frontend, foi utilizado o framework Vue.js e CSS puro. Por último, a aplicação foi conteinerizada através de Docker e exposta por reverse proxy Nginx.
- Docker & Docker Compose
- PostgreSQL Opcionalmente (caso prefira não usar o Docker)
- Node.js +22
- Go +1.24
- Go-migrate para as migrações.
O último requisito pode ser instalado com:
go install -tags 'postgres' github.com/golang-migrate/migrate/v4/cmd/migrate@v4.18.3Para rodar em modo de desenvolvimento.
Antes de mais nada é preciso ter o Docker instalado com o Docker Compose. Ou você pode configurar a base de dados Postgres manualmente.
Crie um arquivo .env com variáveis configuradas semelhantes ao arquivo .env.example. Também crie um arquivo .env dentro da pasta frontend com a variável VITE_BACKEND_BASE_URL=http://localhost:8080/v1 para o frontend acessar o back em modo de desenvolvimento.
Os arquivos .env.example contém uma explicação de cada variável, não exponha-as em produção.
Feito isso, inicie o container da base de dados utilizando o comando docker compose up -d database ou com o Make, com make docker-run (derrube o container com make docker-down).
O arquivo
Makefilecontém vários comandos simples para rodar o projeto, veja mais emmake help.
Na primeira vez (ou em modificações ao banco), popule ou atualize a base de dados com o script migrate.sh.
./migrate.sh upNão esqueça de configurar a variável DB_URL dentro arquivo com o caminho para sua base de dados.
Para rodar o backend use o compile o projeto em go ou use o comando make run. Para rodar em modo de hotreloading use:
make watchJá para o frontend, entre na pasta frontend e execute os seguintes comandos:
- Para baixar as dependências:
npm install- Para rodar o projeto:
npm run devA aplicação foi inteiramente conteinerizada para rodar em produção. Configure as variáveis de ambiente corretamente e não exponha segredos. Crie um conjunto de certificados, ou através da um provedor e os armazene na pasta nginx/conf.d/certs. Se necessário mude os nomes dos certificados em nginx/conf.d/site.conf (ou mantenha os nomes atuais: origin.pem e origin.key).
Para o deploy, rode o comando:
docker compose up -d --buildPara as migrações, um comando único do docker foi adicionado:
docker compose --profile migrate run --rm migrateIsso deve executar as migrações na base de dados.
Atualize o script
migrate.shcomDB_URLantes de rodar esse comando.
Migrações são scripts SQL que são rodados na base de dados e permitem criar um histórico de alterações e navegar por elas.
Não esqueça de acionar a base de dados antes de rodar migrações e de atualizar o script em migrate.sh com o endereço, nome de usuário e senha corretos para acessar o banco.
As migrações vivem em migrations. Utilize o script migrate.sh para gerenciar migrações. Crie novas migrações com ./migrate.sh create <migration_name>. Vá para a migração mais recente com ./migrate.sh up, volte uma migração com ./migrate.sh down 1. Veja mais comandos em ./migrate.sh help.
A ferramenta de migrações utilizada é o go-migrate.
Segue um Diagrama Entidade Relacionamento da Aplicação em Banco de Dados.
Esse projeto está sob a GNU General Public License v3.0. O uso e distribuição é permitido desde que siga as restrições impostas pela LICENSA.
