Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

A Simple MUXT Project Template using HTMX

This is an example muxt hypertext server. See this article for how to use this template: https://go.dev/blog/gonew.

It is based on https://github.com/crhntr/muxt-template-module-htmx. You may also want to see:

  • HTMX: configured for site interactivity
  • Pico CSS: configured to make the site look a bit better by default
  • counterfeiter: used to generate fake Server implementations for testing templates
  • unpkg.com: use the meta query param to get new version integrity values

It extends the module by using sqlc to for database interactions with PostgreSQL.

  • sqlc: to generate type safe database interactions
  • pqx: for a database driver
  • goose: for migrations

Tool versions are managed with Mise.

Developing

Add new html in ./internal/hypertext/templates. Use inline template declarations in the template files using muxt template name semantics then run Go generate to generate a function that maps hypertext concepts to helpful handler methods.

Testing

After developing routes, run go generate ./....

Write handler tests in ./internal/hypertext/server_test.go.

Write template tests in ./internal/hypertext/template_routes_test.go.

Run tests with: go test ./...

Database

This project uses PostgreSQL with pgx/v5.

Quick Start

# Start PostgreSQL with Docker
docker compose up -d

# Load environment variables (requires direnv)
direnv allow

# Run the server
go run ./cmd/server

Configuration

The database connection is configured via the DATABASE_URL environment variable.

The included .envrc sets this automatically when using direnv, reading credentials directly from docker-compose.yml.

Docker Compose

The docker-compose.yml provides a PostgreSQL 17 instance with:

  • Database: todo
  • User: todo
  • Password: todo
  • Port: 5432
# Start database
docker compose up -d

# Stop database
docker compose down

# Stop and remove data
docker compose down -v

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages