Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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: about 1 month ago
JSON representation
GoTuna a lightweight web framework for Go with mux router, middlewares, user sessions, templates, embedded views, and static file server.
- Host: GitHub
- URL: https://github.com/gotuna/gotuna
- Owner: gotuna
- License: mit
- Created: 2021-04-08T14:08:08.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2023-08-31T09:50:12.000Z (over 1 year ago)
- Last Synced: 2024-08-03T19:10:03.162Z (5 months ago)
- Topics: framework, go, golang, router, web, webapp
- Language: Go
- Homepage: https://gotuna.netlify.app
- Size: 262 KB
- Stars: 48
- Watchers: 1
- Forks: 22
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
- Security: SECURITY.md
Awesome Lists containing this project
- awesome-go-extra - gotuna - 04-08T14:08:08Z|2022-06-02T06:50:08Z| (Web Frameworks / Fail injection)
README
# 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.gopackage 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" -}}
{{- 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.