gowebly – Una herramienta CLI de última generación para crear increíbles aplicaciones web en Go utilizando htmx e hyperscript
English | Русский | 中文 | Español
Esta herramienta CLI puede construir fácilmente increíbles aplicaciones web con Go en el backend, utilizando htmx & hyperscript y los más populares atomic/utility-first frameworks CSS en el frontend.
Características:
- 100% gratis y de código abierto bajo la licencia Apache 2.0 licencia;
- Para cualquier nivel de conocimiento y experiencia técnica del desarrollador;
- Bien documentado, con muchos consejos y ayudas de los autores;
- CLI inteligente que hace la mayor parte de la rutina de configuración y preparación para la producción;
- Ayuda a entrar más rápidamente en la pila tecnológica Go + htmx + hyperscript;
- La posibilidad de añadir simplemente a tu proyecto un framework CSS atómico/utility-first listo para usar y completamente personalizado;
- Admite el modo live-reloading para sus estilos CSS.
- Dispone de una biblioteca de ayudantes de fácil uso para su código Go;
- Contiene un completo ejemplo de cómo utilizarlo fuera de la caja.
💬 De los autores: Para que conozcas a fondo el proyecto, hemos grabado un breve 📺 vídeo y preparado un 📝 artículo de introducción en el que se muestran las principales características de la CLI
gowebly
.
![gowebly logo](https://private-user-images.githubusercontent.com/11155743/271663181-55c80da2-30c6-45e7-a813-1ddc42764480.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk2Mzk5MjUsIm5iZiI6MTczOTYzOTYyNSwicGF0aCI6Ii8xMTE1NTc0My8yNzE2NjMxODEtNTVjODBkYTItMzBjNi00NWU3LWE4MTMtMWRkYzQyNzY0NDgwLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE1VDE3MTM0NVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWQ1NzZhNTgwOWYxZDM2ZWM5YzZmZTMxNzI4N2QzNWJkMDYyNmMxNzliYjE5YTZmZDFkOTU1ZDZkMjIwMGNjZjUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.wD05_2z-CbsJayR-beA4Lupu3QZC1UIUCb8Q-iWE5do)
Primero, descarga e instala Go. Se requiere la
versión 1.21
(o superior).
Ahora, puedes utilizar gowebly
sin instalación. Simplemente,
go run` para crear un nuevo proyecto con una
configuración por defecto:
go run github.com/gowebly/gowebly@latest create
¡Ya está! 🔥 Una maravillosa aplicación web, usando el paquete integrado net/http (como backend de Go), htmx & hyperscript está disponible en tus plantillas HTML de Go.
Si todavía quieres instalar gowebly
CLI en tu sistema por Golang, usa el
comando go install
:
go install github.com/gowebly/gowebly@latest
GNU/Linux y Apple macOS usuarios disponibles manera de instalar gowebly
CLI a través de Homebrew.
Toque una nueva fórmula:
brew tap gowebly/tap
Instale gowebly
:
brew install gowebly/tap/gowebly
Siéntete libre de usar gowebly
CLI desde nuestra
imagen Docker oficial y ejecutarlo en el contenedor aislado:
docker run --rm -it -v ${PWD}:${PWD} -w ${PWD} gowebly/gowebly:latest create
Descargue archivos exe
para Windows, deb
, rpm
, apk
o Arch Linux
desde la página Releases.
Para obtener una guía completa de uso y comprender los principios básicos de
la CLI gowebly
, hemos preparado una explicación exhaustiva de cada comando
a la vez en este archivo README.
💬 De los autores: Siempre valoramos tu tiempo y queremos que empieces a crear productos web realmente geniales en esta impresionante pila tecnológica lo antes posible.
Esperamos que encuentres respuesta a todas tus preguntas 👌 Pero, si no encuentras la información que necesitas, no dudes en crear una issue o enviar un PR a este repositorio.
Comando para crear un archivo de configuración por defecto
(.gowebly.yml
) en la carpeta actual.
gowebly init
💡 Nota: Por supuesto, puedes saltarte este paso si te sientes cómodo con la siguiente configuración por defecto para tu nuevo proyecto:
- Los nombres de los módulos Go (
go.mod
) ypackage.json
se establecen en project;- Sin ningún framework Go para la parte backend (sólo paquete integrado net/http);
- Sin ningún framework CSS para la parte frontend (sólo estilos por defecto para el código de ejemplo);
- El entorno de ejecución JavaScript para la parte frontend utilizará Node.js;
- El puerto del servidor es
5000
, tiempo de espera (en segundos):5
para lectura,10
para escritura;- Últimas versiones de htmx & hyperscript.
![gowebly init](https://private-user-images.githubusercontent.com/11155743/270867417-679dd0e1-ecd6-4cfb-b145-c9f551ab2d9c.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk2Mzk5MjUsIm5iZiI6MTczOTYzOTYyNSwicGF0aCI6Ii8xMTE1NTc0My8yNzA4Njc0MTctNjc5ZGQwZTEtZWNkNi00Y2ZiLWIxNDUtYzlmNTUxYWIyZDljLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE1VDE3MTM0NVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTBlMDljNTEwOGVmNDczODczMjQwNjc3ZWViMmRjMzUxYTliNzg0MjU2YjZmNzRkMDE3ODdjYmRkZTdkY2Q0YzQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.3I8Hvy3nh099SwDi_kv4ER8Y-yuKb0au2JAAGOkambM)
Normalmente, un archivo de configuración creado contiene las siguientes opciones:
backend:
module_name: project # (string) option can be any name of your Go module (for example, 'github.com/user/project')
go_framework: default # (string) option can be one of the values: 'fiber', 'echo', 'chi', or 'default'
port: 5000 # (int) option can be any port that is not taken up on your system
timeout:
read: 5 # (int) option can be any number of seconds, 5 is recommended
write: 10 # (int) option can be any number of seconds, 10 is recommended
frontend:
package_name: project # (string) option can be any name of your package.json (for example, 'project')
css_framework: default # (string) option can be one of the values: 'tailwindcss', 'unocss', or 'default'
runtime_environment: default # (string) option can be one of the values: 'bun', or 'default'
htmx: latest # (string) option can be any existing version
hyperscript: latest # (string) option can be any existing version
Pero, puedes elegir cualquier Go framework para el backend de tu proyecto:
Go framework | Descripción |
---|---|
default |
No uses ningún framework Go (solo el paquete integrado net/http) |
fiber |
Utilizar un backend Go con el framework web Fiber |
echo |
Utilizar un backend Go con el framework web Echo |
chi |
Utilizar un backend Go con el enrutador componible chi |
Además, puedes elegir versiones de htmx, hyperscript, y uno de los más populares atomic/utility-first CSS framework para tu proyecto:
CSS framework | Descripción |
---|---|
default |
No utilice ningún framework CSS (solo estilos por defecto para el ejemplo de código) |
tailwindcss |
Utilizar Tailwind CSS como framework CSS |
unocss |
Utilizar UnoCSS como framework CSS |
Además, puede establecer uno de los entornos de ejecución de JavaScript para su parte frontend:
JavaScript runtime | Descripción |
---|---|
default |
Utilizar Node.js como en torno de ejecución de JavaScript |
bun |
Utilizar Bun como en torno de ejecución de JavaScript |
Comando para crear un nuevo proyecto con el backend Go, htmx & hyperscript, y (opcionalmente) atomic/utility-first CSS framework.
gowebly create
💡 Nota: Si no ejecutas el comando
init
para crear un archivo de configuración (.gowebly.yml
), el CLI degowebly
crea un nuevo proyecto con una configuración por defecto.
![gowebly create](https://private-user-images.githubusercontent.com/11155743/270867412-35b15677-4991-406d-b666-dfbc40beb1ce.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk2Mzk5MjUsIm5iZiI6MTczOTYzOTYyNSwicGF0aCI6Ii8xMTE1NTc0My8yNzA4Njc0MTItMzViMTU2NzctNDk5MS00MDZkLWI2NjYtZGZiYzQwYmViMWNlLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE1VDE3MTM0NVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTdmNjA2MmY5YmYzYTZjYTc3ODA4NTkwMmZmOTI3MzVjM2NkZjM5NjJlNjg5NGNjYzJjNzk5ZjEzYzE0ZDYxZDMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.2wIKIr_M-lyZA3lc6nxeACGt9LMt2aftpRlxcaDtiC8)
Cada vez que haga crear
comando para su proyecto:
- CLI valida la configuración y aplica todos los ajustes al proyecto actual;
- CLI prepara la parte backend de tu proyecto (genera la estructura del
proyecto y los archivos de utilidades necesarios, ejecuta
go mod tidy
); - CLI prepara la parte frontend de tu proyecto (genera los archivos de
utilidades necesarios, ejecuta
npm|bun install
ynpm|bun run build:dev
por primera vez); - CLI descarga versiones minimizadas de htmx y hyperscript (desde
el CDN oficial y de confianza unpkg.com) a la carpeta
./static
y las coloca como etiquetas separadas<script>
(al final de la etiqueta<body>
) en la plantilla Go HTMLtemplates/main.html
.
Típicamente, un proyecto creado contiene los siguientes archivos y carpetas:
.
├── assets
│ └── styles.css
├── static
│ ├── favicon.ico
│ ├── htmx.min.js
│ ├── hyperscript.min.js
│ └── styles.css
├── templates
│ ├── pages
│ │ └── index.html
│ └── main.html
├── .gitignore
├── go.mod
├── go.sum
├── handlers.go
├── main.go
├── package-lock.json
├── package.json
└── server.go
Comando para ejecutar su proyecto en modo desarrollo (no producción).
gowebly run
💡 Nota: Si no ejecutas el comando
init
para crear un fichero de configuración (.gowebly.yml
), el CLI degowebly
ejecuta tu proyecto con una configuración por defecto.
![gowebly run](https://private-user-images.githubusercontent.com/11155743/270867424-51c05652-4601-4f8b-8722-20401d0099d1.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk2Mzk5MjUsIm5iZiI6MTczOTYzOTYyNSwicGF0aCI6Ii8xMTE1NTc0My8yNzA4Njc0MjQtNTFjMDU2NTItNDYwMS00ZjhiLTg3MjItMjA0MDFkMDA5OWQxLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE1VDE3MTM0NVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTJmOWVkMDQxNWFjODhhOTcwMTEzZGJkYzUzZDU0ZDVhOThjOGY3YjFlN2RkZjBlYjA4OTgyYTgxYjRhZGEyZmUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.3Hj4ClLgcW9fQX-ZBEofCB8X1RyBmkcE0flkeIZNVIg)
Cada vez que haga run
comando para su proyecto:
- CLI válida la configuración y aplica todos los ajustes al proyecto actual;
- CLI prepara la parte frontend de tu proyecto (ejecuta
npm|bun run watch
); - CLI prepara una versión de desarrollo (no de producción) del framework
CSS seleccionado en la carpeta
./static
y lo coloca como una etiqueta<link>
(al final de la etiqueta<head>
) en la plantilla Go HTMLtemplates/main.html
; - CLI inicia el backend de un proyecto con los ajustes de la configuración
por defecto (o del archivo de configuración
.gowebly.yml
) mediante un simple comandogo run
.
Comando para construir su proyecto para producción y preparar los archivos Docker para el despliegue.
gowebly build [OPTION]
💡 Nota: Si no ejecutas el comando
init
para crear un archivo de configuración (.gowebly.yml
), el CLI degowebly
construye tu proyecto con una configuración por defecto.
![gowebly build](https://private-user-images.githubusercontent.com/11155743/270867400-ac35b01f-0596-4d33-832e-1618709497d3.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk2Mzk5MjUsIm5iZiI6MTczOTYzOTYyNSwicGF0aCI6Ii8xMTE1NTc0My8yNzA4Njc0MDAtYWMzNWIwMWYtMDU5Ni00ZDMzLTgzMmUtMTYxODcwOTQ5N2QzLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE1VDE3MTM0NVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWIyNWJlZWE1YzE0NDcwNzBlOTlmMzNkNjE2MjAwNTJhZTU4NzU0MjlkYWNhZDE5N2Q3NTEwYWY5NzcxMDA0NjcmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.M9zM-6KXw8KrwnYSfdEjJnIQlEsvVeVYRLnPDoHBzYE)
Puedes añadir las siguientes opciones:
Opción | Descripción | Requerido? |
---|---|---|
--skip-docker |
Omitir el proceso de generación de los archivos Docker (es útil si usted tiene su propio) | no |
Cada vez que haga build
comando para su proyecto:
- CLI valida la configuración y aplica todos los ajustes al proyecto actual;
- CLI descarga versiones minimizadas de htmx y hyperscript (desde
el CDN oficial y de confianza unpkg.com) a la carpeta
./static
y las coloca como etiquetas separadas<script>
(al final de la etiqueta<body>
) en la plantilla Go HTMLtemplates/main.html
; - CLI prepara una versión de producción del CSS framework seleccionado
y lo coloca como una etiqueta
<link>
(al final de la etiqueta<head>
) en la plantilla Go HTMLtemplates/main.html
; - Si la opción
--skip-docker
no está activada, CLI genera unos archivos Docker claros y bien documentados (.dockerignore
,Dockerfile
,docker-compose.yml
) en la raíz de la carpeta del proyecto para desplegarlo en contenedores aislados vía Portainer (recomendado), o manualmente, a tu servidor remoto.
La CLI gowebly
tiene una librería de helpers
amigables para tu código. Esto te ayudará a empezar a construir hermosas
aplicaciones web en Go aún más rápido.
go get -u github.com/gowebly/helpers
💡 Nota: La librería
gowebly helpers
está ya incluida en el backend Go que se crea con el comandocreate
, pero puedes usar estos helpers en otros proyectos también.
Cuéntanos, ¿cuántas veces has tenido que empezar un nuevo proyecto desde cero y has tenido que hacer dolorosas configuraciones manuales? 🤔 Especialmente, cuando recién te estás familiarizando con una nueva tecnología o stack, donde todo es nuevo para ti.
Para muchos desarrolladores, incluidos nosotros, este proceso es lo más tedioso e incluso deprimente posible, y no conlleva ninguna carga de trabajo útil. Es un proceso muy frustrante que puede alejar mucho a cualquier desarrollador de la tecnología.
¿Por qué no dar todo ese horrible trabajo manual a las máquinas? Dejemos que hagan todo el trabajo duro por nosotros, y nos limitaremos a crear increíbles productos web sin tener que pensar en compilar y desplegar.
Es por eso que hemos generado la CLI gowebly
y su biblioteca de ayudantes,
que le ayuda a iniciar una increíble aplicación web en Go utilizando
htmx, hyperscript y populares atómica/utilidad-primero
frameworks CSS.
¡Estamos aquí para salvarte (y salvarnos) de este dolor rutinario! ✨
💬 De los autores: Anteriormente, ya hemos salvado el mundo una vez, fue Create Go App (sí, ese también es nuestro proyecto). Las estadísticas de GitHub stars de este proyecto no pueden mentir: más de 2.2k desarrolladores de cualquier nivel y diferentes países comienzan un nuevo proyecto a través de esta herramienta CLI.
¡Si te ha gustado el proyecto gowebly
y te ha resultado útil para tus
tareas, por favor, dale un 🌟 GitHub Star y haz clic en 👁️ Watch para
no perderte las notificaciones sobre nuevas versiones!
![gowebly star and watch](https://private-user-images.githubusercontent.com/11155743/272504637-6f92ec26-1fe3-44c6-9a13-3abd3ffa58eb.gif?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk2Mzk5MjUsIm5iZiI6MTczOTYzOTYyNSwicGF0aCI6Ii8xMTE1NTc0My8yNzI1MDQ2MzctNmY5MmVjMjYtMWZlMy00NGM2LTlhMTMtM2FiZDNmZmE1OGViLmdpZj9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE1VDE3MTM0NVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWVmMGZmNjVmOTFjOTE5YzdmNTY0MzQ1MGVmNzZlMTU2MTJhM2YzYjM0MDUwODBkZmM5YjExNjY5ODdmOTdkODgmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.AihtctJ-uIBZSyFU43LHpXjvDLnhL9gfsDapxsXZkpY)
Y ahora, ¡te invito a participar en este proyecto! Trabajemos juntos para crear la herramienta más útil para desarrolladores en la web hoy en día.
- Issues: haz preguntas y envía tus funcionalidades.
- Pull requests: envía tus mejoras a la corriente.
¡Tus PR y issues son bienvenidos! Gracias 😘
gowebly
es un software libre y de código abierto licenciado
bajo la Licencia Apache 2.0, creado y soportado por
Vic Shóstak con 🩵 para personas y robots. Logotipo oficial
distribuido bajo Licencia Creative Commons (CC BY-SA
4.0 International).