Skip to content

Pulsar - A Go Web framework for web artisans. Batteries included with a lot of features.

License

Notifications You must be signed in to change notification settings

pulsar-go/pulsar

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

60 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Pulsar - A Go Web framework for web artisans

This is a go web microframework for web artisans willing to create amazing go web applications with ease.

Features

  • Server configuration in a single file
  • A blazing fast router (github.com/julienschmidt/httprouter)
  • Simplified request / response API
  • MVC architecture
  • Middlewares
  • Automatic headers for different responses
  • Automatic TLS (SSL) certificate using openssl cli
  • Automatic server creation using HTTP/1.1 or HTTP/2
  • Database Configuration + ORM
  • Emails

How to use

You first need to get the package:

go get github.com/pulsar-go/pulsar

IMPORTANT: Check the official example here: https://github.com/pulsar-go/example

Then you'll need to create some server configuration (server.toml for example):

# Server stores all the settings releated
# to the HTTP / HTTP server itself.
[server]
    # Host determines the IP or name of the
    # HTTP server.
    host = ""
    # Port specifies the port that is going to
    # be used to run the HTTP server.
    port = "8080"
    # Development specifies if the server is going
    # to run in development mode, allowing some output
    # in the terminal while the application runs giving
    # help and insight of what's going on.
    development = true

# HTTPS stores all the settings releated
# to the TLS (SSL) settings used to ensure
# encrypted connections.
[https]
    # Enables or disables the HTTPs server.
    # Please notice that this should always be
    # enabled. HTTPs should always be used.
    # Only a HTTP or HTTPs server can be fired
    # so if enabled, no HTTP server will be provided.
    enabled = true
    # Certificate file that the HTTPs
    # server will use to encrypt connections.
    # Auto generated if no cert_file and key_file
    # exists in the path provided.
    cert_file = "./server.cert"
    # Key file that the HTTPs
    # server will use to encrypt connections.
    # Auto generated if no cert_file and key_file
    # exists in the path provided.
    key_file = "./server.key"

# Views stores all the settings releated
# to the views stored in the application
# used when delivering responses from
# the web server.
[views]
    # Path represents the relative or absolute
    # path where the views will come from.
    # It acts as a path prefix when returning views
    path = "./views"

# Database stores all the settings releated
# to the database connection that the ORM
# will use in order to provide it's functionality
[database]
    # Determines the driver to use
    # Possible options are:
    # 'mysql', 'postgres', 'sqlite3'.
    driver = "mysql"
    # Database represents the database name
    # to use or the database path in case of
    # using sqlite3 driver. If driver is sqlire3
    # the value ':memory:' can also be used to create
    # a temp database stored in memory.
    database = "sample"
    # Host represents the database host where
    # it will connect to. Unused if using
    # the sqlite3 driver.
    host = "localhost"
    # Port represents the database port where
    # it will connect to. Unused if using
    # the sqlite3 driver.
    port = "3306"
    # User represents the user used to establish
    # the database connection. Unused if using
    # the sqlite3 driver.
    user = "sample"
    # Password represents the password used to establish
    # the database connection. Unused if using
    # the sqlite3 driver.
    password = "secret"
    # Auto migrate is used to migrate the database shema
    # using the provided models. It  will ONLY create tables,
    # missing columns and missing indexes, and WON’T change
    # existing column’s type or delete unused columns
    # to protect your data.
    auto_migrate = true

# Mail stores all the information about
# SMTP mailing to send any form of email.
[mail]
    # Host determines the SMTP host that
    # is going to be used.
    host = "smtp.mailtrap.io"
    # Port determines the SMTP port that
    # is going to be used.
    port = "465"
    # Identity determines how the auth is
    # pretended to act as. Usually this
    # should be an empty string.
    identity = ""
    # Username used to authenticate when connecting
    # to the host. Part of the credentials.
    username = ""
    # Password used to authenticate when connecting
    # to the host. Part of the credentials.
    password = ""
    # From determines who the mail is going to be sent
    # from. This setting is the default from address used.
    from = "mail@example.com"

Then create a main file (server.go for example):

package main

import (
	"log"

    "github.com/pulsar-go/pulsar"
    "github.com/pulsar-go/pulsar/config"
    "github.com/pulsar-go/pulsar/router"
	"github.com/pulsar-go/pulsar/request"
	"github.com/pulsar-go/pulsar/response"
)

type sample struct {
	Name string `json:"name"`
	Age  int    `json:"age"`
}

func index(req *request.HTTP) response.HTTP {
	return response.Text("Sample index response")
}

func user(req *request.HTTP) response.HTTP {
	return response.Text("User id: " + req.Params.ByName("id"))
}

func about(req *request.HTTP) response.HTTP {
	return response.JSON(sample{Name: "Erik", Age: 22})
}

func sampleMiddleware(next router.Handler) router.Handler {
	return router.Handler(func(req *request.HTTP) response.HTTP {
		log.Println("Before route middleware")
		r := next(req)
		log.Println("After route middleware")
		return r
	})
}

func main() {
	// Get the settings from the configuration files.
	config.Set("./server.toml")
	// Set the application routes.
	router.Routes.
        Get("/", index).
        Get("/user/:id", user).
        Group(&router.Options{Prefix: "/sample", Middleware: sampleMiddleware}, func(routes *router.Router) {
            routes.Get("/about", about)
        })
	// Serve the HTTP server.
	log.Fatalln(pulsar.Serve())
}

Documentation

About

Pulsar - A Go Web framework for web artisans. Batteries included with a lot of features.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages