mirror of
https://github.com/rjNemo/auth
synced 2026-06-06 00:16:40 +00:00
3.1 KiB
3.1 KiB
Auth Demo
Auth Demo showcases a fully server-rendered email/password authentication flow with secure session management, CSRF protection, structured logging, and embedded templates/assets for single-binary deployment.
Capabilities
- Email/password signup and login backed by salted hashing and reusable auth services.
- CSRF-protected session middleware with signed cookies and automatic token rotation.
- Structured logging (text or JSON) and environment-driven configuration for production parity.
- Embedded templates styled with Pico.css and progressively enhanced with htmx and Alpine.js.
Getting Started
-
Review or adjust the defaults in .env. To load them in POSIX shells, run
set -a; . ./.env; set +a. -
Use the targets in the Makefile:
Target Description make runStart the HTTP server with the current environment. make devLaunch Air for live reload (requires airon PATH).make buildCompile to ./bin/auth-server.make testRun go test ./... -cover -count=1. -
Visit the login page (default http://localhost:8000) and authenticate with the demo credentials displayed on screen.
Configuration
Settings are sourced from environment variables (see .env).
| Variable | Required | Default | Description |
|---|---|---|---|
AUTH_SESSION_SECRET |
Yes | — | Base64-encoded secret used to sign session cookies. |
AUTH_LISTEN_ADDR |
No | :8000 |
Address the HTTP server binds to. |
AUTH_ENV |
No | development |
Environment label, controls logger source annotation. |
AUTH_LOG_MODE |
No | text |
Structured log encoder (text or json). |
Project Layout
cmd/server— application entrypoint.internal/config— environment-backed configuration loader.internal/driver/logging—sloghelpers for text/JSON output.internal/service/auth— authentication domain logic, hashing, validation.internal/server— router, middleware, handlers, session store.web/templates— embedded HTML templates.
Built With
- Go — standard library HTTP, templates, crypto, and
embed. - Chi — lightweight router and middleware stack.
- htmx — progressive enhancement via HTML attributes.
- Alpine.js — declarative client-side interactions.
- Pico.css — minimal, semantic-first styling.
License
MIT