Golang com estilo Laravel

Posted on: October 08, 2025 09:40 AM

Posted by: Renato

Categories: Go golang Laravel

Views: 245

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 framework
git clone https://github.com/goravel/goravel.git && rm -rf goravel/.git*

// Instalar dependências
cd goravel && go mod tidy

// Criar o arquivo de configuração de ambiente .env
cp .env.example .env

// Gerar a chave da aplicação
go 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 Goravel
git clone https://github.com/goravel/goravel.git && rm -rf goravel/.git*

# Instalar dependências
cd goravel && go mod tidy

# Criar arquivo de configuração de ambiente
cp .env.example .env

# Gerar chave da aplicação (essencial para criptografia)
go run . artisan key:generate

# Iniciar a aplicação
go 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=production
APP_KEY=chave-gerada-aqui
APP_DEBUG=false
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=nome_do_banco
DB_USERNAME=usuario
DB_PASSWORD=senha_segura
JWT_SECRET=sua-chave-jwt
JWT_TTL=60
JWT_REFRESH_TTL=20160

🔐 Boas práticas em produção:

  • Defina APP_DEBUG=false para 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 User
go run . artisan make:model User

# Criar migration
go run . artisan make:migration create_users_table

Modelo User:

// app/models/user.go
package models

import "github.com/goravel/framework/database/orm"

type User struct {
    orm.Model
    Name     string `gorm:"not null"`
    Email    string `gorm:"unique;not null"`
    Password string `gorm:"not null"`
    Avatar   string
    orm.SoftDeletes
}

Migration:

// database/migrations/20250101000000_create_users_table.go
package migrations

import (
    "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.go
package config

import "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: nosniff
X-Frame-Options: DENY
X-XSS-Protection: 1; mode=block
Strict-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/


1

Share

Donate to Site


About Author

Renato

Developer

Add a Comment
Comments 0 Comments

No comments yet! Be the first to comment

Blog Search


Categories

Laravel (227) PHP (151) linux (124) Variados (110) ubuntu (58) Dicas (58) developer (48) postgresql (45) database (44) sql (42) Docker (32) mysql (31) front-end (31) devops (26) webdev (24) programming (23) eloquent (19) aws (19) tecnologia (19) dba (18) OUTROS (17) backend (16) laravelphp (16) dev (12) debian (12) react (10) reactjs (10) 100DaysOfCode (10) git (10) javascript (9) nginx (9) inteligencia-artificial (9) PHP Swoole (9) node (9) linux-tools (8) Architecture (8) ciencia (7) github (7) vue (7) arquitetura (6) windows (6) api (6) vscode (6) nodejs (6) webservice (6) vim (6) jwt (6) apache (5) macox (5) s3 (5) servers (5) ia (5) authentication (5) reactnative (5) rest (5) DevSecOps (5) npm (4) openai (4) google (4) opensource (4) mariadb (4) jenkins (4) Kubernetes (4) gitlab (4) angular (4) autenticacao (4) shell (4) mongodb (4) query (4) Raspberry (4) angularjs (4) inteligenciadedados (4) Padrao de design (4) artigo (4) wsl (4) Swoole (4) lets-encrypt (4) db (3) politica (3) RabbitMQ (3) educacao (3) intel (3) CMS (2) sail (3) script (3) performance (3) js (3) mysqli (3) Black Hat (3) terminal (3) log (3) mac (3) fedora (3) containers (3) json (3) authorization (3) phpswoole (3) ddd (3) blade (3) hardware (3) tests (3) macos (3) web (2) jobs (3) websocket (3) ssh (3) bash (3) telefonia (2) nvm (2) imagick (2) maps (2) colors (2) Passport (2) JQuery (2) phpfpm (2) autorizacao (2) monitoring (2) laptop (2) gnome (2) powerbi (2) Python (2) Oauth2 (2) android (2) unix (2) magento (2) iot (2) ffmpeg (2) combustivel (2) webhook (2) microservices (2) Curisidades (2) Solid (2) zsh (2) Go (2) BigLinux (2) POO (2) LazyVim (2) gource (2) homeOffice (2) html (2) openswoole (2) artificialintelligence (2) security (2) bancodedados (2) tailwind (2) noticias (2) livros (2) Transcribe (2) ElonMusk (2) redis (2) claude (2) ArchLinux (2) java (2) saude (1) seguranca (2) auth (2) cron (2) phpunit (2) kube (2) multiple_authen (2) policia (2) neovim (2) golang (2) Diagramas (1) boot (1) haru (1) dracula (1) TrabalhoEmEquipe (1) Brasil (1) queue (1) agi (1) llama (1) hotfix (1) economia (1) transcription (1) cache (1) Amazon (1) October (1) lumen (1) Hyperf (1) replication (1) faceapp (1) vala (1) cloudstack (1) rpi (1) apple (1) oracle (1) iode (1) ffaa (1) vpn (1) MeioAmbiente (1) firefox (1) composer (1) scheduling (1) Asahi (1) pendrive (1) microservice (1) front (1) cor (1) auth (1) modelagemdedados (1) k8s (1) gasolina (1) wsl2 (1) csv (1) soap (1) piada (1) KubeCon (1) zorin-os (1) spring-boot (1) backup (1) playwright (1) Deepin (1) storage (1) benchmark (1) networking (1) Swoole (1) biologia (1) node-red (1) LETSENCRYPT (1) Grunt (1) guard (1) tensorflow (1) bootstrap (1) nuance (1) historia (1) dropbox (1) traefik (1) bug (1) akitando (1) llm (1) htm (1) transformers (1) cavalotroia (1) odd (1) m1 (1) Error (1) cinnamon (1) repmgr (1) federal (1) ruby (1) AppSec (1) orm (1) ArquiteturaDeSoftware (1) Passwordless (1) memcached (1) flow (1) compression (1) athena (1) front (1) wine (1) covid19 (0) services (1) phpjasper (1) models (1) kali-linux (1) geojson (1) yarn (1) picpay (1) Monolith (1) banco (1) PNPM (1) Desenvolvedor (1) Structurizr (1) symfony (1) presenter (1) lider (1) Lideranca (1) Hackers (1) Bots (1) pytorch (1) nuxt (1) liquid (1) ec2 (1) transaction (1) c4 (1) rancher (1) algoritimo (1) Observability (1) Elasticsearch (1) translate (1) certbot (1) Oh My Zsh (1) ibm (1) escopos (1) usb (1) ckeditor (1) API_KEY_GOOGLE_MAPS (1) Manjaro (1) vicuna (1) coding (1) rust (1) markdown (1) JasperReports (1) Fibonacci (1) community (1) Samurai (1) payment (1) messaging (1) Jesus (1) flutter (1) Migration (1) workflow (1) cqrs (1) kitematic (1) geospacial (1) yeshua (1) data (1) sonarqube (1) Axios (1) pipelines (1) Mozilla (1) kvm (1) GitOps (1) sqlite (1) podcast (1) n8n (1) LaravelFilament (1) God (1) DesenvolvimentoProfissional (1) sw (1) bigtech (1) postgres (1) NoCookies (1) LeetCode (1) governancadedados (1) prf (1) nosql (1) linkedin (1) documentation (1) brain (1) adb (1) nvidia (1) host (1) ecommerce (1) c4-models (1) altadisponibilidade (1) octane (1) lucena (1) http (1) TypeScript (1) chatgpt (1) idiomas (1) eventdrive (1) uuid (1) restfull (1) aplicativo (1) optimization (1) mapas (1) Fetch (1) collections (1) RustLang (1) matematica (1) Filament (1) compactar (1) paypal (1) microg (1) forcas armadas (1) militar (1) fullsta (1) smartphones (1) automacao (1) Monitor (1) zend (1) spaceship (1) PKCE (1) l2tp (1) Glacier (1) laraveloctane (1) Deus (1) binaural (1) gpt (1) bolsonaro (1) privacidade (1) OOD (0) controllers (0)

New Articles



Get Latest Updates by Email