Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/gotuna/gotuna

GoTuna a lightweight web framework for Go with mux router, middlewares, user sessions, templates, embedded views, and static file server.
https://github.com/gotuna/gotuna

framework go golang router web webapp

Last synced: 3 months ago
JSON representation

GoTuna a lightweight web framework for Go with mux router, middlewares, user sessions, templates, embedded views, and static file server.

Awesome Lists containing this project

README

        




PkgGoDev
rests status
Go Report Card
Go Report Card

# GoTuna - Web framework for Go
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](https://gotuna.netlify.app) for the latest documentation, examples, and more.

# Features
- 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

# Requirements
- Make sure you have Go >= 1.16 installed

# Quick Start
Initialize new app and install GoTuna:

```shell
mkdir testapp
cd testapp
go get -u github.com/gotuna/gotuna
```

Now create two files `main.go` and `app.html` as an example:

```go
// 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:

```html
// app.html

{{- define "app" -}}



Please login!

{{- end -}}
```

Run this simple app and visit http://localhost:8888 in your browser:
```shell
go run main.go
```

# Running example apps
GoTuna comes with an example app. Make sure you have git and Go >= 1.16 installed.
```shell
git clone https://github.com/gotuna/gotuna.git
cd gotuna
go run examples/fullapp/cmd/main.go
```

# Testing

```shell
go test -race -v ./...
```

# Licence
This project is licensed under the MIT License.