2. Ecosystem Overview
Carotene
Flamingo is an
open source
framework written
in Go.
Use Flamingo
Core to build
sophisticated web
applications with
tailored frontends.
Flamingo
Commerce:
Your head for
headless
e-commerce
Npm modules
that provide
frontend build
pipeline –
featuring pug,
sass, webpack
and atomic
design pattern
3. What problems does
Flamingo Commerce solve
• Modern Architecture: Break monolithic e-commerce
architeture to allow scaling and maintainability.
• Modern Architecture: Use it to build commerce for
headless commerce solutions
• Real time commerce: Build personalized experiences -
without the need to cache rendered pages
4. What are the main
design goals of Flamingo Commerce
• Performance
• Clean architecture
• Suiteable for Microservice architectures
• Decoupled and flexible frontend development
• Testability
• Great Developer Experience
• Open Source
5. • Webserver included
• Compiled / Type Safe
• Concurrency
• Easy to learn - build to scale
• Supported by Google
• Increasing Interest and Success
Flamingo Commerce
and Flamingo use Go
6. Frontend
Backend for Frontend
Other Services Other Services
• Anti corruption
layer for the
(tightly) coupled
frontend
• Serverside logic
• Data security and IT
security
• Experience / view
layer
• Can be MPA, SPA, PWA
connect / resilience
Flamingo Commerce
web application architecture
7. Frontend
Backend for Frontend
Core and Framework Modules
Commerce Domains
Product Cart …
ComponentsTemplates Pages+ =
Carotene
Flamingo Commerce
web application architecture
8. Multi Page Application Single Page Application Progressive Web App
• Serverside rendered
• Still king for fast
rendering times.
• Still king for best
SEO.
• Usage of progressive
enhancement
• High user
interaction
• Usage of SPA
frameworks
(React/Vue)
Enhance with offline
features through
service workers
Use flamingo carotene
Flamingo Commerce
possible frontend architectures
Use flamingo graphql or rest api to
access data in your SPA.
For SPA you might use React + Next.js
10. Flamingo commerce
Bounded Contexts with its domain models
Cart
• Mutli delivery
• Multi payment
Product
• Product Types
• Simple
• Configurable
Search
• SearchService
• Documents
…
11. CartProduct Search
…
• Easy to use and decoupled
• Potent models
• Technology neutral domain
model
Flamingo commerce
Bounded Contexts with its domain models
12. Flamingo – Ports and Adapters
Technology Free Domain Model
Application Use Cases
Adapters to the outside / Web
Controllers
Technical details
(e.g. accessing a microservice)
13. Domain of “Product”
Context
Interface Layer
Flamingo – Ports and Adapters
<<interface>>
ProductService
.Get (id)
Used as primary port:
• The product service is called from
the interface layer for example
(in a ProductViewController)
ProductController
.ViewAction
Product
14. Domain of “Product”
Context
Flamingo – Ports and Adapters
<<interface>>
ProductService
.Get (id)
Product
Infrastructure Layer
ProductServiceAdapter
Get (id) {…}
Used as secondary port:
• The product service is
implemented by a secondary adapter