Skip to content

rafaelq80/farmacia_go

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

74 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Projeto Farmácia - Rest API




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.


Principais Características

  1. Gestão de Estoque:
    • Cadastro e atualização de medicamentos
    • Organização por grupo de medicamentos
  2. Gestão de Usuários - Clientes e Fornecedores:
    • Cadastro de clientes e fornecedores
    • Envio de e-mail de confirmação do cadastro
  3. 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

Principais Tecnologias Utilizadas

  • 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


Arquitetura

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.


Diagrama de Classes

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
Loading



Tarefas Concluídas

  • 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)



Referências sobre Golang


Site Oficial - Golang

Documentação Oficial - Golang

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

Go JSON - Golang

Golang JWT - Autenticação com Token JWT - Versão 5.0 - Golang

Golang Testify - Testes E2E - Versão 2.0 - Golang

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published