Skip to content

Tech-Preta/echo

🚀 Echo Playground

Um playground completo que demonstra todas as funcionalidades do Echo framework - um framework Go de alta performance, extensível e minimalista, seguindo as melhores práticas de layout de projetos Go.

✨ Funcionalidades Demonstradas

🔥 High Performance Router

  • Router otimizado sem alocação dinâmica de memória
  • Priorização inteligente de rotas
  • Processamento eficiente de requisições HTTP

📈 Scalable REST APIs

  • Organização de endpoints em grupos lógicos
  • APIs RESTful robustas e escaláveis
  • Gerenciamento simplificado de APIs complexas

🔒 Automatic TLS

  • Configuração preparada para TLS automático
  • Integração com Let's Encrypt
  • Comunicação segura simplificada

HTTP/2 Support

  • Suporte nativo ao protocolo HTTP/2
  • Melhoria na velocidade e responsividade
  • Otimização na transmissão de dados

🔧 Middleware System

  • Middleware global (Logger, Recover, CORS)
  • Middleware customizado para logging
  • Middleware de autenticação JWT
  • Aplicação flexível em diferentes níveis

📊 Data Binding

  • Binding automático de JSON, XML e form-data
  • Extração simplificada de dados de requisições
  • Integração perfeita com lógica de aplicação

🎨 Data Rendering

  • Respostas em múltiplos formatos (JSON, XML, HTML)
  • Upload e download de arquivos
  • Streaming de dados em tempo real
  • Templates HTML dinâmicos

🎯 Template Support

  • Renderização com qualquer engine de template
  • Templates HTML dinâmicos
  • Design responsivo e moderno

🔌 Extensible Architecture

  • Tratamento de erros centralizado
  • API facilmente extensível
  • Middleware customizado
  • Integração com funcionalidades de terceiros

🏗️ Arquitetura Modular Go

  • Estrutura seguindo padrões da comunidade Go
  • Separação clara de responsabilidades
  • Código reutilizável e testável
  • Organização profissional

🚀 Início Rápido

Pré-requisitos

  • Go 1.21 ou superior
  • Git

Instalação

# Clonar o repositório
git clone https://github.com/nataliagranato/echo.git
cd echo

# Instalar dependências
go mod tidy

# Executar o servidor
go run cmd/echo-playground/main.go

O servidor estará disponível em: http://localhost:8080

Build da Aplicação

# Compilar a aplicação
./scripts/build.sh

# Executar o binário
./bin/echo-playground

📚 Endpoints Principais

Informações Gerais

  • GET /api/v1/ - Informações sobre o framework

Demonstrações

  • GET /api/v1/hello/:name - Saudação personalizada
  • GET /api/v1/html - Página HTML renderizada
  • GET /api/v1/xml - Resposta em XML
  • GET /api/v1/stream - Streaming de dados

Data Binding

  • POST /api/v1/users - Criar usuário com binding automático
  • GET /api/v1/search - Query parameters

Upload/Download

  • POST /api/v1/upload - Upload de arquivos
  • GET /api/v1/download/:filename - Download de arquivos

Autenticação

  • GET /api/v1/protected/profile - Endpoint protegido (requer JWT)

CRUD Completo

  • GET /api/v1/products - Listar produtos
  • GET /api/v1/products/:id - Obter produto
  • POST /api/v1/products - Criar produto
  • PUT /api/v1/products/:id - Atualizar produto
  • DELETE /api/v1/products/:id - Deletar produto

🏗️ Estrutura do Projeto

echo-playground/
├── cmd/                    # Aplicações principais
│   └── echo-playground/   # Aplicação principal
│       └── main.go        # Ponto de entrada
├── internal/              # Código privado da aplicação
│   ├── app/              # Lógica da aplicação
│   │   ├── handlers.go   # Handlers HTTP
│   │   ├── products.go   # Handlers de produtos
│   │   ├── template.go   # Renderizador de templates
│   │   └── error_handler.go # Tratamento de erros
│   └── pkg/              # Pacotes internos compartilhados
├── pkg/                   # Código público reutilizável
│   ├── api/              # Respostas da API
│   ├── middleware/       # Middlewares customizados
│   ├── models/           # Modelos de dados
│   └── utils/            # Utilitários
├── web/                  # Componentes web
│   └── templates/        # Templates HTML
├── configs/              # Arquivos de configuração
├── scripts/              # Scripts de build e deploy
├── build/                # Configurações de build
│   └── ci/              # CI/CD
├── docs/                 # Documentação
├── test/                 # Testes e dados de teste
├── examples/             # Exemplos de uso
├── assets/               # Recursos estáticos
└── go.mod               # Dependências do Go

🧪 Testando a API

Exemplos com cURL

# Informações gerais
curl http://localhost:8080/api/v1/

# Criar usuário
curl -X POST -H "Content-Type: application/json" \
  -d '{"name":"João","email":"[email protected]","age":30}' \
  http://localhost:8080/api/v1/users

# Listar produtos
curl http://localhost:8080/api/v1/products

# Endpoint protegido
curl -H "Authorization: Bearer valid-token" \
  http://localhost:8080/api/v1/protected/profile

# Upload de arquivo
curl -X POST -F "file=@test/teste.txt" \
  http://localhost:8080/api/v1/upload

Script de Teste Automatizado

# Executar todos os testes
./scripts/test_api.sh

📖 Documentação Completa

Para documentação detalhada de todos os endpoints e funcionalidades, consulte:

🔧 Configurações Avançadas

Configuração do Servidor

As configurações do servidor estão em configs/config.yaml:

server:
  port: 8080
  host: "0.0.0.0"
  read_timeout: 30s
  write_timeout: 30s
  idle_timeout: 120s

TLS Automático

Para habilitar TLS automático com Let's Encrypt, modifique o arquivo cmd/echo-playground/main.go:

autoTLS := autocert.Manager{
    Prompt: autocert.AcceptTOS,
    HostPolicy: autocert.HostWhitelist("seu-dominio.com"),
    Cache: autocert.DirCache("/var/www/.cache"),
}
e.AutoTLSManager = &autoTLS

HTTP/2

Para habilitar HTTP/2, descomente as linhas de configuração TLS no cmd/echo-playground/main.go.

🎯 Próximos Passos

Para expandir este playground, você pode:

  1. Implementar banco de dados real (PostgreSQL, MongoDB)
  2. Adicionar validações avançadas com go-playground/validator
  3. Implementar WebSocket real para comunicação em tempo real
  4. Configurar rate limiting e outras medidas de segurança
  5. Adicionar testes unitários e de integração
  6. Implementar documentação Swagger/OpenAPI
  7. Adicionar monitoramento e métricas
  8. Configurar CI/CD com GitHub Actions ou GitLab CI

🤝 Contribuindo

Contribuições são bem-vindas! Sinta-se à vontade para:

  • Reportar bugs
  • Sugerir novas funcionalidades
  • Melhorar a documentação
  • Adicionar exemplos de uso

📄 Licença

Este projeto é um playground educacional para demonstrar as funcionalidades do Echo framework.

🔗 Links Úteis

About

Um playground completo que demonstra todas as funcionalidades do Echo framework.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •