Skip to content
🍐 Elegant Golang Web Framework
Go JavaScript Shell Other
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github Fix typo Nov 23, 2019
config Bundle default config and language in executable Jan 11, 2020
cors Document CORS Dec 31, 2019
database Fix Postgres connection options not working #25 Jan 2, 2020
docs Build docs Jan 15, 2020
docs_src
helper Fix File.Save() documentation Jan 11, 2020
lang lang.LoadDefault create new empty map and clone default language Jan 14, 2020
middleware Add status handlers Jan 2, 2020
resources Bundle default config and language in executable Jan 11, 2020
validation
.gitignore Add go module Oct 21, 2019
.travis.yml Fix test suite run server Dec 14, 2019
LICENSE Add meta files Oct 21, 2019
README.md
config.test.json Fix test suite run server Dec 14, 2019
go.mod Improve string length validation taking grapheme clusters into account Jan 13, 2020
go.sum Improve string length validation taking grapheme clusters into account Jan 13, 2020
goyave.go Generate address don't include ports if not needed Dec 19, 2019
goyave_test.go
install.ps1 Improve powershell install script Nov 27, 2019
install.sh Update install.sh to work on macOS Nov 27, 2019
middleware.go Add status handlers Jan 2, 2020
middleware_test.go Add status handlers Jan 2, 2020
native_handler.go Add NativeHandler Nov 24, 2019
native_handler_test.go Test blockchain native middleware Dec 23, 2019
request.go Test request CORS accessor Dec 30, 2019
request_test.go Test request CORS accessor Dec 30, 2019
response.go Don't override Content-Type header when sending a file if already set Jan 11, 2020
response_test.go
router.go Document status handlers Jan 2, 2020
router_test.go Bundle default config and language in executable Jan 11, 2020
run_test.sh Add TestSuite Dec 9, 2019
testsuite.go Add status handlers Jan 2, 2020
testsuite_test.go Mux 404 and 405 errors processed like normal requests Jan 2, 2020

README.md

Goyave Logo

Build Status Version Go Report Coverage Status License

An Elegant Golang Web Framework

Goyave is a progressive and accessible web application framework, aimed at making development easy and enjoyable. It has a philosophy of cleanliness and conciseness to make programs more elegant, easier to maintain and more focused.

Clean Code

Goyave has an expressive, elegant syntax, a robust structure and conventions. Minimalist calls and reduced redundancy are among the Goyave's core principles.

Fast Development

Develop faster and concentrate on the business logic of your application thanks to the many helpers and built-in functions.

Powerful functionalities

Goyave is accessible, yet powerful. The framework includes routing, request parsing, validation, localization, testing, and more!

Most golang frameworks for web development don't have a strong directory structure nor conventions to make applications have a uniform architecture and limit redundancy. This makes it difficult to work with them on different projects. In companies, having a well-defined and documented architecture helps new developers integrate projects faster, and reduces the time needed for maintaining them. For open source projects, it helps newcomers understanding the project and makes it easier to contribute.

Getting Started

Install using the template project

You can bootstrap your project using the Goyave template project. This project has a complete directory structure already set up for you.

Linux / MacOS

$ curl https://raw.githubusercontent.com/System-Glitch/goyave/master/install.sh | bash -s my-project

Windows (Powershell)

> & ([scriptblock]::Create((curl "https://raw.githubusercontent.com/System-Glitch/goyave/master/install.ps1").Content)) -projectName my-project

Run go run my-project in your project's directory to start the server, then try to request the hello route.

$ curl http://localhost:8080/hello
Hi!

There is also an echo route, with basic validation of query parameters.

$ curl http://localhost:8080/echo?text=abc%20123
abc 123

Hello world from scratch

The example below shows a basic Hello world application using Goyave.

import "github.com/System-Glitch/goyave/v2"

func registerRoutes(router *goyave.Router) {
	router.Route("GET", "/hello", func(response *goyave.Response, request *goyave.Request) {
	    response.String(http.StatusOK, "Hello world!")
    }, nil)
}

func main() {
	goyave.Start(registerRoutes)
}

Learning Goyave

The Goyave framework has an extensive documentation covering in-depth subjects and teaching you how to run a project using Goyave from setup to deployment.

Read the documentation

GoDoc

Requirements

  • Go 1.13+
  • Go modules

Contributing

Thank you for considering contributing to the Goyave framework! You can find the contribution guide in the documentation.

I have many ideas for the future of Goyave. I would be infinitely grateful to whoever want to support me and let me continue working on Goyave and making it better and better.

You can support also me on Patreon:

Contributors

A big "Thank you" to the Goyave contributors:

License

The Goyave framework is MIT Licensed. Copyright © 2019 Jérémy LAMBERT (SystemGlitch)

You can’t perform that action at this time.