Este projeto é uma API desenvolvida e refatorada de uma em Java Spring, em Golang utilizando Gin como framework web, com suporte para autenticação via JWT, configuração com dotenv, e persistência de dados com GORM e PostgreSQL.
Esta API é um sistema completo de gerenciamento de produtos e categorias com autenticação de usuário(admin), com foco em segurança e controle de acesso. Ela oferece uma variedade de funcionalidades, incluindo o registro, login e a autenticação, bem como o gerenciamento de produtos em um catálogo. A API utiliza autenticação baseada em tokens JWT para garantir a segurança e o acesso restrito às rotas protegidas.
- Golang – Linguagem principal do projeto
- Gin – Framework web leve e rápido
- GORM – ORM para manipulação do banco de dados
- PostgreSQL Driver – Conexão com o banco de dados PostgreSQL
- JWT – Autenticação segura
- dotenv – Gerenciamento de variáveis de ambiente
- Air – Live reload para desenvolvimento
-
Clone o repositório:
git clone https://github.com/jpeccia/lariharumi_croche_backend_go cd lariharumi_croche_backend_go
-
Instale as dependências:
go mod tidy
-
Configure as variáveis de ambiente: Crie um arquivo
.env
na raiz do projeto e adicione:JWT_SECRET= DB_HOST= DB_USER= DB_PASSWORD= DB_NAME= DB_URL= FRONTEND_URL= BASEURL=
-
Rode seu docker para criar o banco de dados:
docker-compose up -d
air
go run main.go
├── main.go # Ponto de entrada da aplicação
├── config # Configurações da API (banco de dados, ambiente)
├── controllers # Controladores da API
├── models # Modelos de banco de dados
├── routes # Definição de rotas
├── middleware # Middlewares como autenticação JWT
├── utils # Funções auxiliares
├── .env.example # Exemplo de variáveis de ambiente
├── go.mod # Dependências do projeto
└── README.md # Documentação
A API utiliza JWT para autenticação. Para acessar rotas protegidas, inclua o token no cabeçalho:
Authorization: Bearer SEU_TOKEN_AQUI
Para gerar um token, faça login na API enviando um POST
para /login
com credenciais válidas.
Crie um arquivo Makefile
na raiz do projeto para automatizar tarefas comuns:
.PHONY: run test docker fmt build
run:
air
docker:
docker-compose up -d
test:
go test ./...
fmt:
go fmt ./...
build:
go build -o app .
Agora você pode rodar comandos como:
make run
→ Executa a API com live reloadmake docker
→ Executa as migrações do bancomake test
→ Roda os testesmake fmt
→ Formata o códigomake build
→ Compila o binário da aplicação
Este projeto está sob a licença MIT. Sinta-se livre para contribuir e utilizar como desejar.
Sinta-se à vontade para abrir issues e pull requests. Toda ajuda é bem-vinda! 🚀