Sistema de avaliação de disciplinas e professores da USP (Universidade de São Paulo).
Para mais informações, acesse https://uspavalia.com/sobre.
A forma mais simples de executar o UspAvalia:
docker-compose up -dAcesse: http://localhost:8080
- Docker e Docker Compose (para deployment com containers)
- Go 1.24.6+ (para desenvolvimento local)
- SQLite ou MySQL (banco de dados)
Copie o arquivo de exemplo e configure:
cp .uspavalia.example.yaml .uspavalia.yamlEdite .uspavalia.yaml com suas configurações:
- Chaves de segurança (secret_key, csrf_key, magic_link_hmac_key)
- Google OAuth credentials
- SendGrid API key (opcional, para emails)
- hCaptcha keys (opcional, para proteção contra bots)
Importante: Gere chaves seguras para produção:
openssl rand -base64 32go build -o uspavalia .# Criar tabelas
./uspavalia migrate
# Importar unidades do Jupiter Web
./uspavalia fetch-units --store
# Importar disciplinas e professores
./uspavalia fetch-disciplines --store./uspavalia serveAcesse: http://localhost:8080
O aplicativo suporta dois métodos de configuração:
O sistema suporta dois métodos de autenticação:
- Google OAuth: Login social com conta Google
- Magic Link: Login sem senha via link enviado por email
- hCaptcha: Proteção em formulários de login, registro e contato
- Configure as chaves em
security.hcaptcha_site_keyesecurity.hcaptcha_secret_key
- Linguagem: Go 1.24.6+
- Framework Web: Gorilla Mux
- ORM: GORM (SQLite/MySQL)
- Templates: Go html/template
- Autenticação: OAuth 2.0 (Google), Magic Links (HMAC)
- Email: SendGrid
- Segurança: CSRF protection, rate limiting, hCaptcha
.
├── cmd/ # Comandos CLI (Cobra)
├── internal/
│ ├── config/ # Configuração (Viper)
│ ├── database/ # Database e migrations
│ ├── handlers/ # HTTP handlers
│ ├── middleware/ # HTTP middleware
│ ├── models/ # Models GORM
│ └── services/ # Serviços (email, etc)
├── pkg/ # Pacotes públicos
│ ├── auth/ # Autenticação e crypto
│ └── utils/ # Utilidades
├── templates/ # Templates HTML
├── static/ # CSS, JS, imagens
└── matrusp/ # Dados do MatrUSP
go test -v ./...Endpoint: http://localhost:8080/metrics
Métricas disponíveis:
- Duração de requisições HTTP
- Conexões ativas
- Total de requisições
- Status do pool de conexões do banco
- Total de usuários ativos
Este projeto foi reescrito de PHP para Go em 2024-2025. O código PHP original (2014) ainda está presente no repositório para referência, mas não é mais usado.
- URLs antigas (
/?p=disciplina&id=123) são automaticamente redirecionadas - Dados podem ser importados com
./uspavalia import-old-data
Contribuições são bem-vindas! Por favor:
- Fork o projeto
- Crie uma branch para sua feature (
git checkout -b feature/AmazingFeature) - Commit suas mudanças (
git commit -m 'Add some AmazingFeature') - Push para a branch (
git push origin feature/AmazingFeature) - Abra um Pull Request
Para dúvidas ou sugestões, use o formulário de contato em uspavalia.com/contato.
- NÃO commite arquivos com credenciais (
.env,.uspavalia.yamlcom valores reais) - NÃO use as chaves de exemplo em produção
- Gere chaves seguras para produção:
openssl rand -base64 32 - Configure HTTPS em produção (via proxy reverso como Nginx/Traefik)
- Emails dos usuários são armazenados como hash SHA256, nunca em plaintext