Posted on: October 08, 2025 09:40 AM
Posted by: Renato
Views: 243
Vamos experimentar o Goravel — Golang com estilo Laravel
Quando eu estava pesquisando sobre Golang, encontrei um framework que me chamou bastante atenção: Goravel, Golang com estilo de código do Laravel 😂.
Para mim, que tenho 6 anos de experiência com Laravel, isso é algo muito interessante — se ele for realmente poderoso, poderá me ajudar a criar serviços incríveis com o mesmo estilo de código que já uso no Laravel.
Vamos começar o teste. Primeiro, você pode conferir a documentação oficial: https://www.goravel.dev/getting-started/installation.html
Iniciando a Instalação
// Baixar o frameworkgit clone https://github.com/goravel/goravel.git && rm -rf goravel/.git*// Instalar dependênciascd goravel && go mod tidy// Criar o arquivo de configuração de ambiente .envcp .env.example .env// Gerar a chave da aplicaçãogo run . artisan key:generate
Se você estiver usando macOS como eu, pode simplesmente copiar e colar esse código.
Se estiver usando Windows, veja o passo a passo na documentação oficial.
Explorando a Estrutura de Diretórios
(Pressione Enter ou clique na imagem para visualizar em tamanho real)
Estrutura de Diretórios do Goravel
Pela estrutura, já me lembra bastante o Laravel — mas com um diretório GRPC adicional. Muito bom!
Executando o Goravel
go run .
Ou, se você estiver usando múltiplos ambientes, pode rodar assim:
go run . --env=./.env.staging
Se você quer que fique ainda mais parecido com Laravel, pode usar live reload.
De acordo com a documentação, para usar live reload é preciso instalar o air.
Para instalar, recomendo seguir esta issue: https://github.com/cosmtrek/air/issues/135
Primeira Impressão
(Pressione Enter ou clique na imagem para visualizar em tamanho real)
Página Inicial do Goravel
A sensação é bem parecida com Laravel, rs.
Se você tem interesse em ver como criar uma aplicação monolítica com Go, pode visitar a documentação de templates/views:
👉 https://www.goravel.dev/the-basics/views.html
No meu caso, eu quero apenas criar APIs com Go, e o que me deixou ainda mais interessado nesse framework é a parte de migrations e seeders de banco de dados — algo que é difícil de encontrar fora do Laravel.
O que vem a seguir
No próximo artigo, quero mostrar como criar uma API CRUD com Goravel.
Fique ligado para o próximo post!
Se você tiver alguma sugestão de algo que eu possa revisar ou explorar, fique à vontade para deixar um comentário 👇
✅ Resumo:
-
Goravel é um framework em Go com sintaxe e estrutura inspiradas no Laravel.
-
Instalação é bem simples e parecida com a do Laravel.
-
Possui suporte a migrations, seeders, GRPC, e estrutura de diretórios familiar.
-
Ideal para desenvolvedores Laravel que querem explorar Go sem mudar totalmente de estilo.
Estrutura de diretórios
goravel└──app├──console├──grpc│ ├──controllers│ ├──.gitignore│ ├──interceptors│ └──kernel.go├──http│ ├──controllers│ │ └──user_controller.go│ ├──middleware│ └──kernel.go├──models│ └──user.go├──providers│ ├──app_service_provider.go│ ├──auth_service_provider.go│ ├──console_service_provider.go│ ├──database_service_provider.go│ ├──event_service_provider.go│ ├──grpc_service_provider.go│ ├──queue_service_provider.go│ ├──route_service_provider.go│ └──validation_service_provider.go└──bootstrap└──config└──database
✅ Essa estrutura é bem parecida com a do Laravel, mas adaptada para Go — com pastas como http, models e providers, além de uma pasta grpc específica para serviços gRPC.
Vamos começar com a instalação; você pode seguir este artigo ou visitar a documentação oficial do Goravel.
Neste guia, criaremos um exemplo completo que mostra como construir um backend usando Goravel, incluindo:
-
🛠️ Configuração do Goravel: Instalação inicial, configuração de ambiente e banco de dados.
-
🔐 Autenticação JWT: Autenticação segura com tokens JWT.
-
🧱 Endurecimento de Segurança: HTTPS, rate limiting, CORS e validação de entrada.
-
🛡️ Medidas de Segurança Adicionais: Criptografia, cabeçalhos HTTP, monitoramento e comunicações seguras.
-
🧪 Testes e Manutenção: Testes automatizados e manutenção contínua.
🚀 Configuração e Instalação Inicial do Goravel
Instalação e criação do projeto:
# Clonar o framework Goravelgit clone https://github.com/goravel/goravel.git && rm -rf goravel/.git*# Instalar dependênciascd goravel && go mod tidy# Criar arquivo de configuração de ambientecp .env.example .env# Gerar chave da aplicação (essencial para criptografia)go run . artisan key:generate# Iniciar a aplicaçãogo run . serve
📌 O comando key:generate cria uma chave única que será usada para operações de criptografia e assinatura de tokens JWT — é a base da segurança da sua aplicação.
⚙️ Configuração de Ambiente
Proteja o arquivo .env — ele contém dados sensíveis e nunca deve ser enviado ao controle de versão. Em produção, garanta que esteja seguro no servidor.
Exemplo de .env:
APP_ENV=productionAPP_KEY=chave-gerada-aquiAPP_DEBUG=falseDB_CONNECTION=mysqlDB_HOST=127.0.0.1DB_PORT=3306DB_DATABASE=nome_do_bancoDB_USERNAME=usuarioDB_PASSWORD=senha_seguraJWT_SECRET=sua-chave-jwtJWT_TTL=60JWT_REFRESH_TTL=20160
🔐 Boas práticas em produção:
-
Defina
APP_DEBUG=falsepara evitar vazamento de dados sensíveis. -
Defina permissões restritas no
.env(ex:640). -
Use credenciais diferentes para produção e desenvolvimento.
-
Considere usar variáveis de ambiente em vez de arquivos físicos.
🗄️ Configuração de Banco de Dados e Migrações
Criando a tabela de usuários:
# Criar model Usergo run . artisan make:model User# Criar migrationgo run . artisan make:migration create_users_table
Modelo User:
// app/models/user.gopackage modelsimport "github.com/goravel/framework/database/orm"type User struct {orm.ModelName string `gorm:"not null"`Email string `gorm:"unique;not null"`Password string `gorm:"not null"`Avatar stringorm.SoftDeletes}
Migration:
// database/migrations/20250101000000_create_users_table.gopackage migrationsimport ("github.com/goravel/framework/database/migration""github.com/goravel/framework/database/schema")type CreateUsersTable struct {migration.Migration}func (r *CreateUsersTable) Up() error {return schema.Create("users", func(table schema.Build) {table.Increments("id")table.String("name", 255).NotNull()table.String("email", 255).NotNull().Unique()table.String("password", 255).NotNull()table.String("avatar", 255).Nullable()table.Timestamps()table.SoftDeletes()})}func (r *CreateUsersTable) Down() error {return schema.Drop("users")}
Rodar a migration:
go run . artisan migrate
🔑 Sistema de Autenticação (JWT)
O Goravel possui suporte nativo a JWT (JSON Web Token), ideal para aplicações mobile e SPA.
// config/jwt.gopackage configimport "github.com/goravel/framework/auth"func init() {auth.Config = auth.JWTConfig{Secret: env("JWT_SECRET", ""),TTL: env("JWT_TTL", 60),RefreshTTL: env("JWT_REFRESH_TTL", 20160),}}
Gerar chave JWT:
go run . artisan jwt:secret
🧑💻 Controller de Autenticação
Criar controller:
go run . artisan make:controller AuthController
-
Registro de usuário
-
Login
-
Logout
-
Refresh Token
✅ Com validações robustas, hash de senha e retorno de token JWT.
🧭 Rotas Protegidas
facades.Route().Middleware("auth").Group(func() {facades.Route().Get("/profile", profileController.Show)facades.Route().Put("/profile", profileController.Update)facades.Route().Post("/logout", authController.Logout)})
🧱 Endurecimento de Segurança
-
Rate Limiting: proteção contra força bruta
-
CORS: controle de origens confiáveis
-
Validação e Sanitização de Inputs
-
Middleware de Cabeçalhos de Segurança
-
Criptografia de dados sensíveis
Exemplo de cabeçalhos:
X-Content-Type-Options: nosniffX-Frame-Options: DENYX-XSS-Protection: 1; mode=blockStrict-Transport-Security: max-age=31536000; includeSubDomains
🕵️ Monitoramento e Logs de Segurança
-
Log de tentativas de login
-
Log de ações sensíveis
-
Sanitização automática de dados nos logs
-
Alertas para eventos de segurança
🧪 Testes Automatizados de Segurança
-
Verificação de cabeçalhos HTTP
-
Proteção contra SQL Injection
-
Teste de Rate Limiting
go test ./tests
🏁 Conclusão
A segurança não é um evento único, mas um processo contínuo.
Mantenha sua aplicação atualizada, monitore eventos de segurança e teste regularmente.
📌 Medidas adicionais recomendadas para produção:
-
🔥 WAF (Web Application Firewall)
-
🌐 Proteção contra DDoS
-
🧪 Auditorias de segurança periódicas
-
🧑🏫 Treinamento de equipe de desenvolvimento
-
🐞 Programas de Bug Bounty
✅ Resumo:
O Goravel combina a produtividade e familiaridade do Laravel com a performance e segurança do Go — ideal para construir APIs modernas, seguras e escaláveis.
- https://github.com/goravel/goravel
- https://www.goravel.dev/
Donate to Site
Renato
Developer