AOE Technology RadarAOE Technology Radar

Flamingo

coding
This item was not updated in last three versions of the Radar. Should it have appeared in one of the more recent editions, there is a good chance it remains pertinent. However, if the item dates back further, its relevance may have diminished and our current evaluation could vary. Regrettably, our capacity to consistently revisit items from past Radar editions is limited.
Adopt

Flamingo is a high productivity go based framework for rapidly building fast and pluggable web projects. It is used to build scalable and maintainable (web)applications.

Flamingo is:

  • open source
  • written in go
  • easy to learn
  • fast and flexible

Go as simple, powerful and typesafe language is great to implement and scale serverside logic. Flamingo has a clean architecture with clear dependencies in mind and offers a typical features and support for nowadays web applications:

  • Powerful Templating Engines, e.g. support for Pug templates with reusable mixins and lightweight scripting.
  • Configuration concepts using yml and support for multiple areas and contexts
  • Powerful Dependency Injection
  • A Module concept for building modular and pluggable applications
  • Authentication concepts and security middleware
  • Flexible routing with support for prefix routes and reverse routing
  • Web Controller Support with: Request / Response / Form Handling etc
  • Operational Readiness: Logging, (distributed) Tracing, Metrics and Healthchecks with separate endpoint
  • Localisation
  • Commands
  • Session Handling and Management
  • GraphQL support and therefore support to build nice SPA and PWAs on top of it
  • Resilience and Caching for external APIs calls.

Flamingo itself does not contain ORM Mapper or libraries - instead it emphasizes "ports and adapters" architecture - so that you have a technology free (domain) model and any possible (and replaceable) persistence behind it. That makes Flamingo useful to build microservices and applications - especially to build "frontends" or portals that require interaction with other (micro) services in a distributed architecture. When sticking to the architectural recommendation, you can build modular applications with replaceable adapters that gives you independent testability.

With "Flamingo Commerce" there is an additional active projects that offer rich and flexible features to build modern e-commerce applications.