All Projects → i-love-flamingo → Flamingo

i-love-flamingo / Flamingo

Licence: mit
Flamingo Framework and Core Library. Flamingo is a go based framework for pluggable web projects. It is used to build scalable and maintainable (web)applications.

Programming Languages

go
31211 projects - #10 most used programming language
golang
3204 projects

Projects that are alternatives of or similar to Flamingo

Valval
The fastest web framework in V language (vlang)
Stars: ✭ 103 (-47.98%)
Mutual labels:  framework, web-framework
Trails
🌲 Modern Web Application Framework for Node.js.
Stars: ✭ 1,688 (+752.53%)
Mutual labels:  framework, web-framework
Core
🚀 The Node.js Framework highly focused on developer ergonomics, stability and confidence
Stars: ✭ 11,697 (+5807.58%)
Mutual labels:  framework, web-framework
Cuba
CUBA Platform is a high level framework for enterprise applications development
Stars: ✭ 1,114 (+462.63%)
Mutual labels:  framework, web-framework
Playframework
Play Framework
Stars: ✭ 12,041 (+5981.31%)
Mutual labels:  framework, web-framework
Foal
Elegant and all-inclusive Node.Js web framework based on TypeScript. 🚀.
Stars: ✭ 1,176 (+493.94%)
Mutual labels:  framework, web-framework
Uadmin
The web framework for Golang
Stars: ✭ 127 (-35.86%)
Mutual labels:  framework, web-framework
Iris
The fastest HTTP/2 Go Web Framework. AWS Lambda, gRPC, MVC, Unique Router, Websockets, Sessions, Test suite, Dependency Injection and more. A true successor of expressjs and laravel | 谢谢 https://github.com/kataras/iris/issues/1329 |
Stars: ✭ 21,587 (+10802.53%)
Mutual labels:  framework, web-framework
Flamingo Commerce
Flexible E-Commerce Framework on top of Flamingo. Used to build E-Commerce "Portals" and connect it with the help of individual Adapters to other services.
Stars: ✭ 151 (-23.74%)
Mutual labels:  framework, web-framework
Chicagoboss
Erlang web MVC, now featuring Comet
Stars: ✭ 1,825 (+821.72%)
Mutual labels:  framework, web-framework
Framework
IONDV. Framework is a high level framework for enterprise web applications development.
Stars: ✭ 54 (-72.73%)
Mutual labels:  framework, web-framework
Rocket
A web framework for Rust.
Stars: ✭ 15,760 (+7859.6%)
Mutual labels:  framework, web-framework
Aurelia
Aurelia 2, a standards-based, front-end framework designed for high-performing, ambitious applications.
Stars: ✭ 995 (+402.53%)
Mutual labels:  framework, web-framework
Toruk
Go web 开发脚手架
Stars: ✭ 78 (-60.61%)
Mutual labels:  framework, web-framework
Goyave
🍐 Elegant Golang REST API Framework
Stars: ✭ 811 (+309.6%)
Mutual labels:  framework, web-framework
Denovel
A Deno Framework For Web Artisan - Inspired by Laravel
Stars: ✭ 128 (-35.35%)
Mutual labels:  framework, web-framework
Gramework
Fast and Reliable Golang Web Framework
Stars: ✭ 354 (+78.79%)
Mutual labels:  framework, web-framework
Vapor
💧 A server-side Swift HTTP web framework.
Stars: ✭ 21,194 (+10604.04%)
Mutual labels:  framework, web-framework
Siris
DEPRECATED: The community driven fork of Iris. The fastest web framework for Golang!
Stars: ✭ 146 (-26.26%)
Mutual labels:  framework, web-framework
Ego
Ego is a full-stack web framework written in Go, lightweight and efficient front-end component solutions, based on gin. The front-end is compiled, does not affect the back-end.
Stars: ✭ 185 (-6.57%)
Mutual labels:  framework, web-framework

Flamingo Framework

Go Report Card GoDoc Tests Release TODOs Join the chat at https://gitter.im/i-love-flamingo/community

Flamingo is a web framework based on Go.
It is designed to build pluggable and maintainable web projects. It is production ready, field tested and has a growing ecosystem.

Quick start

See "examples/hello-world"

Initialize an empty project:

mkdir helloworld
cd helloworld
go mod init helloworld

Create your project main file:

cat main.go
package main

import (
	"flamingo.me/dingo"
	"flamingo.me/flamingo/v3"
)

func main() {
	flamingo.App([]dingo.Module{
	})
}

If you then start your project you will see a list of registered commands:

go run main.go

It will print something like:

Flamingo main

Usage:
  main [command]

Examples:
Run with -h or -help to see global debug flags

Available Commands:
  config      Config dump
  handler     Dump the Handlers and its registered methods
  help        Help about any command
  routes      Routes dump
  serve       Default serve command - starts on Port 3322

Flags:
  -h, --help   help for main

Use "main [command] --help" for more information about a command.

To start the server use the following sub command:

go run main.go serve

And open http://localhost:3322

Hello World Example:

To extend this empty flamingo project with a "Hello World" output please create a new module "helloworld" like this:

mkdir helloworld
cat helloworld/module.go

With the following code in module.go:

package helloworld

import (
        "context"
        "net/http"
        "strings"
        
        "flamingo.me/dingo"
        "flamingo.me/flamingo/v3/framework/web"
)

type Module struct{}

func (*Module) Configure(injector *dingo.Injector) {
        web.BindRoutes(injector, new(routes))
}

type routes struct{}

func (*routes) Routes(registry *web.RouterRegistry) {
        registry.Route("/", "home")
        registry.HandleAny("home", indexHandler)
}

func indexHandler(ctx context.Context, req *web.Request) web.Result {
        return &web.Response{
            Status: http.StatusOK,
            Body:   strings.NewReader("Hello World!"),
        }
}

This file now defines a very simple module, that can be used in the Flamingo bootstrap. In this case it registers a new handler that renders a simple "Hello World" message and binds the route "/" to this handler. Now please include this new module in your existing main.go file:

package main

import (
	"flamingo.me/dingo"
	"flamingo.me/flamingo/v3"
	"helloworld/helloworld"
)

func main() {
	flamingo.App([]dingo.Module{
        new(helloworld.Module),
	})
}

If you now run the server again

go run main.go serve

And open http://localhost:3322 you will see your "Hello World!" output.

Getting started

To learn more about Flamingo you can check out the full hello-world example tutorial and read the documentation under docs.flamingo.me

Getting Help

If you need help you can:

Framework Details

Feature List

  • dependency injection with Dingo
  • Flexible templating engines. (gotemplates and pugtemplates)
  • configuration concepts using cue with support for multiple config areas and additional config contexts
  • A module concept for building modular and pluggable applications based on Dingo
  • Authentication concepts and security middleware
  • Flexible routing with support for prefix routes and reverse routing
  • Web controller concept with request/response abstraction; form handling etc
  • Operational readiness: logging, (distributed) tracing, metrics and healthchecks with separate endpoint
  • Localisation support
  • Commands using Cobra
  • Event handling
  • Sessionhandling and Management (By default uses Gorilla)

Ecosystem

  • GraphQL Module (and therefore support to build SPA and PWAs on top of it)
  • Caching modules providing resilience and caching for external APIs calls.
  • pugtemplate template engine for server side rendering with the related frontend tooling Flamingo Carotene
  • Flamingo Commerce is an active projects that offer rich and flexible features to build modern e-commerce applications.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].