Este projeto é um sistema de gerenciamento para farmácias, do tipo MVP, implementado através da Linguagem Go. O sistema visa fornecer uma solução robusta e eficiente para o controle de estoque e gestão de Usuários em estabelecimentos farmacêuticos.
- Gestão de Estoque:
- Cadastro e atualização de medicamentos
- Organização por grupo de medicamentos
- Gestão de Usuários - Clientes e Fornecedores:
- Cadastro de clientes e fornecedores
- Envio de e-mail de confirmação do cadastro
- Segurança:
- Autenticação via Usuário e Senha
- Criação e Validação de Token JWT com tempo de expiração
- Controle de Nível de Acesso (Roles) por tipo de usuário
-
Linguagem: Go
-
Bancos de Dados:
- MySQL (Desenvolvimento)
- Sqlite (Execução de Testes)
- PostgreSQL (Deploy - Render)
-
Framework Web: Fiber
-
Configuração do ambiente: Air e Viper
-
ORM: GORM
-
Validação de dados: Go Validator 10
-
Testes: Testfy
-
Documentação: Swago
-
Deploy: Render
O projeto segue uma arquitetura em camadas, separando as responsabilidades em:
- Controladores (handlers para requisições HTTP)
- Serviços (lógica de negócios)
- Repositórios (interação com o banco de dados)
- Modelos (estruturas de dados)
Esta arquitetura promove a manutenibilidade e escalabilidade do sistema.
classDiagram
class Categoria {
- ID : uint
- Grupo : string
- Produto : [] Produto
+ FindAll()
+ FindById()
+ FindByGrupo()
+ Create()
+ Update()
+ Delete()
}
class Produto {
- ID : unit
- Nome : string
- Preco: float32
- Foto: string
- CategoriaID : uint
- Categoria : *Categoria
- UsuarioID : uint
- Usuario : *Usuario
+ FindAll()
+ FindById()
+ FindByNome()
+ Create()
+ Update()
+ Delete()
}
class Usuario {
- ID : uint
- Nome : string
- Usuario : string
- Senha : string
- Foto : string
- RoleID : uint
- Role: *Role
- Produto : [] Produto
+ FindAll()
+ FindById()
+ Create()
+ Update()
+ Autenticar()
}
class Role{
- ID : uint
- Role : string
- Descricao : string
- Usuario: []Usuario
+ FindAll()
+ FindById()
+ Create()
+ Update()
}
class UsuarioLogin{
- ID : uint
- Nome : string
- Usuario : string
- Senha : string
- Foto : string
- Token : string
}
Categoria --> Produto
Usuario --> Produto
Role --> Usuario
- Criação do Projeto - Fiber Framework
- Conexão com o Banco de dados MySQL
- Configuração das Rotas
- CRUD de Produto
- CRUD de Categoria
- Relacionamento Produto - Categoria
- CRUD do Usuario
- Relacionamento Produto - Usuario
- Security
- Testes E2E
- Usuario
- Categoria
- Produto
- Swagger
- Deploy no Render
- Refatoramento - Service e Controller
- Envio de E-mails
- Direitos de Acesso (Roles)
Repositório de pacotes Oficial - Golang
Fiber - web Framework - Golang
Air - Gerenciador de Autoinicialização do Servidor - Golang
Viper - Gerenciador de configurações da API - Golang
GORM - Mapeamento Objeto Relacional - Golang
Go Validator V10 - Validação de dados - Golang
Golang JWT - Autenticação com Token JWT - Versão 5.0 - Golang