Cómo contribuir
Gately es un proyecto de código abierto impulsado por la comunidad. Las incidencias y los pull requests son bienvenidos. Repositorio: https://github.com/wangwanjie/gately
Desarrollo local
Requisitos: Go 1.26+, Node.js 24+, pnpm.
bash
make web # compila el frontend (genera web/dist, integrado con go:embed)
make build # compila bin/gately
make test # go test -race ./...
make lint # gofmt, go vet, comprobación de tipos del frontendPara desarrollar el frontend, ejecuta cd web && pnpm dev; /api se redirige al 127.0.0.1:16680 local.
Convenciones
- El código de compatibilidad debe basarse únicamente en el comportamiento, las interfaces y los formatos de configuración observables públicamente. No envíes código copiado de los binarios o del frontend de software de terceros.
- Un módulo nuevo necesita: una estructura de configuración con validación, arranque y parada en ejecución, endpoints REST y pruebas unitarias. Los módulos que admiten la importación de configuración implementan
luckyimport.Importer, y los que deben mostrar su estado en la página de resumen implementanmodule.Summarizer. - Los comentarios del código se escriben en chino; las sentencias de control deben usar llaves.
Pruebas adicionales
Algunas pruebas se omiten por defecto y requieren una preparación adicional:
| Prueba | Cómo activarla |
|---|---|
| ACME de extremo a extremo (Pebble) | Instala pebble y pebble-challtestsrv, y define GATELY_PEBBLE_BIN y GATELY_PEBBLE_SRC |
| Servidores STUN públicos reales | GATELY_NET_TEST=1 |
| Verificación de importación con una configuración real de Lucky | GATELY_LUCKY_SAMPLE y otras; consulta TestImportRealSample de cada módulo |
Licencia
Traducciones
- Los textos de la interfaz de administración están en
web/src/locales/<language>/<namespace>.json. El idioma de origen es el chino simplificado; al añadir o cambiar textos, actualiza al menoszh-CNyen, y ejecutacd web && node scripts/check-i18n.mjsantes de enviarlos. Consultaweb/src/locales/README.mdpara ver las convenciones. - Los paquetes de idioma del sitio web están en
website/.vitepress/i18n/<language>.json, y las páginas de cada idioma están enwebsite/<language dir>/. - Los textos de ejecución del backend (mensajes de error, registros, notificaciones, documentación de la API) usan como clave las cadenas literales en chino del código fuente, con las traducciones en
internal/i18n/locales/<language>.json. Tras añadir o cambiar texto en chino, ejecutago run ./internal/i18n/cmd/i18nsync -root .para sincronizar las claves nuevas en todos los archivos de idioma y completa las traducciones;go test ./internal/i18ncomprueba que todos los idiomas están completos y que los verbos de formato coinciden con el original. Para las frases que necesitan valores, usa una cadena de formato defmt.Sprintfcon la frase entera en lugar de unir varios fragmentos en chino, para que cada idioma pueda seguir su propio orden de palabras. - La documentación de la API la genera el programa para cada idioma:
make api-docsla escribe endocs/api/<language>/, así que no hay nada que sincronizar a mano. - Idiomas disponibles: 简体中文, English, 繁體中文, 日本語, 한국어, Español, Français, Deutsch, Русский, Português (Brasil).