# Go + HTMX Template This is built from the template https://github.com/Piszmog/go-htmx-template that comes with everything you need to build a Web Application using Go (templ) and HTMX. The template comes with a basic structure of using a SQL DB (`sqlc`), E2E testing (playwright), and styling (tailwindcss). ## Getting Started Clone https://github.com/Piszmog/go-htmx-template Once cloned, run the `update_module.sh` script to change the module to your module name. ```shell ./update_module my-new-module ``` ## Technologies A few different technologies are configured to help getting off the ground easier. - [sqlc](https://sqlc.dev/) for database layer - Stubbed to use SQLite - This can be easily swapped with [sqlx](https://jmoiron.github.io/sqlx/) - The script `upgrade_sqlc.sh` is available to upgrade GitHub Workflow files to latest sqlc version - [Tailwind CSS](https://tailwindcss.com/) for styling - Output is generated with the [CLI](https://tailwindcss.com/docs/installation) - [templ](https://templ.guide/) for creating HTML - The script `upgrade_templ.sh` is available to make upgrading easier - [HTMX](https://htmx.org/) for HTML interaction - The script `upgrade_htmx.sh` is available to make upgrading easier - [goose](https://github.com/pressly/goose) for DB migrations ### Templates Run `templ generate -path ./components` to generate code based on template files ### DB This is the directory that `sqlc` generates to. Update `queries.sql` to build your database operations. Once `queries.sql` is updated, run `make generate-sql` to update the generated models #### DB Migrations This project now uses [goose](https://github.com/pressly/goose) for DB migrations. Install via `brew install goose` on a mac, or install via golang with command `go install github.com/pressly/goose/v3/cmd/goose@latest` Create a new up/down migration file with this command ```shell goose -dir db/migrations sqlite3 ./db.sqlite3 create init sql ```