Skip to content

jpeccia/lariharumi_croche_backend_go

Repository files navigation

🏗️ Lari faz Croche! API-GOLANG

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.

🚀 Tecnologias Utilizadas

  • 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

📦 Instalação

  1. Clone o repositório:

    git clone https://github.com/jpeccia/lariharumi_croche_backend_go
    cd lariharumi_croche_backend_go
  2. Instale as dependências:

    go mod tidy
  3. 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=
  4. Rode seu docker para criar o banco de dados:

    docker-compose up -d

🏃‍♂️ Executando a API

Com Air (modo desenvolvimento com live reload)

air

Com Go diretamente

go run main.go

⚙️ Estrutura do Projeto

├── 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

🔑 Autenticação JWT

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.


🛠️ Makefile para Facilitar o Desenvolvimento

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 reload
  • make docker → Executa as migrações do banco
  • make test → Roda os testes
  • make fmt → Formata o código
  • make build → Compila o binário da aplicação

📜 Licença

Este projeto está sob a licença MIT. Sinta-se livre para contribuir e utilizar como desejar.


✨ Contribuindo

Sinta-se à vontade para abrir issues e pull requests. Toda ajuda é bem-vinda! 🚀

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published