Skip to content

Mercurius gives you speed when create 'Go' applications. It lets you being focused at business.

License

Notifications You must be signed in to change notification settings

lucasgomide/mercurius

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

92 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

mercurius

GoDoc license

Mercurius gives you speed to create new 'Go' applications. It let you more focused on your business than in your backend.

Get a web application template for Golang that includes: Internationalization, Routers, Logging, Cache, Database, Jade Template Render Engine, JWT, oAuth 2.0. Built on top of Macaron, all items are configured and ready to use.

Getting Started

go get -v github.com/novatrixtech/mercurius/...

go install github.com/novatrixtech/mercurius

cd $GOPATH or for Windows users cd %GOPATH% Mercurius must be called from developer's GOPATH dir

mercurius new

Structure of a Project

/conf 
Application configuration including environment-specific configs

/conf/app
Middlewares and routes configuration

/handler
HTTP handlers

/locale
Language specific content bundles

/lib
Common libraries to be used across your app

/model
Models

/public
Web resources that are publicly available

/public/templates
Jade templates or Native templates

/repository
Database comunication following repository pattern

main.go
Application entry

Creating routes

Setup all your routes inside the SetupRoutes func in conf/app/app.go

func SetupRoutes(app *macaron.Macaron) {
	app.Group("", func() {
		app.Get("/", handler.ListAccessPage)
	}, auth.LoginRequired)
	app.Get("/login", handler.LoginPage)
	app.Post("/login", binding.BindIgnErr(model.Login), handler.BasicAuth)
	})

}

Creating handlers for the routers

Put all handler files inside the handler folder

  • Handle raw text
func Hello() string {
        return "Hello"
}
  • Handle JSON
import (
        "net/http"
        "{{.AppPath}}/lib/context"
)

func User(ctx *context.Context) {
	//user is the struct you want to return
        ctx.JSON(http.StatusOk, user)
}
  • Handle XML
import (
        "net/http"
        "{{.AppPath}}/lib/context"
)

func User(ctx *context.Context) {
	//user is the struct you want to return
        ctx.XML(http.StatusOk, user)
}
  • Handle Jade HTML Template Engine

The extension of the templates must be .jade. Put the jade files inside public/templates folder

import (
        "net/http"
        "{{.AppPath}}/lib/context"
)

func User(ctx *context.Context) {
	//edit is the page name you want to render
        ctx.HTML(http.StatusOk, "edit")
}
  • Handle Go HTML Template Engine

The extension of the templates must be .tmpl or .html. Put the Go template files inside public/templates folder

import (
        "net/http"
        "{{.AppPath}}/lib/context"
)

func User(ctx *context.Context) {
	//edit is the page name you want to render
        ctx.NativeHTML(http.StatusOk, "edit")
}

About

Mercurius gives you speed when create 'Go' applications. It lets you being focused at business.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 100.0%