GoTuna is a lightweight web framework for Go with mux router, middlewares, user sessions, templates, embedded views, and static file server.
Please visit https://gotuna.netlify.app for the latest documentation, examples, and more.
- Router (gorilla)
- Standard
http.Handler
interface - Middleware support
- User session management (gorilla)
- Session flash messages
- Native view rendering (html/template) with helpers
- Static file server included with the configurable prefix
- Standard logger interface
- Request logging and panic recovery
- Full support for embedded templates and static files
- User authentication (via user provider interface)
- Sample InMemory user provider included
- Multi-language support
- Database agnostic
- Make sure you have Go >= 1.16 installed
Initialize new app and install GoTuna:
mkdir testapp
cd testapp
go get -u github.com/gotuna/gotuna
Now create two files main.go
and app.html
as an example:
// main.go
package main
import (
"fmt"
"net/http"
"os"
"github.com/gotuna/gotuna"
)
func main() {
app := gotuna.App{
ViewFiles: os.DirFS("."),
Router: gotuna.NewMuxRouter(),
}
app.Router.Handle("/", handlerHome(app))
app.Router.Handle("/login", handlerLogin(app)).Methods(http.MethodGet, http.MethodPost)
fmt.Println("Running on http://localhost:8888")
http.ListenAndServe(":8888", app.Router)
}
func handlerHome(app gotuna.App) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
app.NewTemplatingEngine().
Render(w, r, "app.html")
})
}
func handlerLogin(app gotuna.App) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Login form...")
})
}
This will be your app's html layout:
// app.html
{{- define "app" -}}
<!DOCTYPE html>
<html>
<head></head>
<body>
<a href="/login">Please login!</a>
</body>
</html>
{{- end -}}
Run this simple app and visit http://localhost:8888 in your browser:
go run main.go
GoTuna comes with an example app. Make sure you have git and Go >= 1.16 installed.
git clone https://github.com/gotuna/gotuna.git
cd gotuna
go run examples/fullapp/cmd/main.go
go test -race -v ./...
This project is licensed under the MIT License.