flamingo.me/flamingo-commerce/v3@v3.11.0/Readme.md (about)

     1  # Flamingo Commerce
     2  [![Go Report Card](https://goreportcard.com/badge/github.com/i-love-flamingo/flamingo-commerce)](https://goreportcard.com/report/github.com/i-love-flamingo/flamingo-commerce)
     3  [![Tests](https://github.com/i-love-flamingo/flamingo-commerce/workflows/Tests/badge.svg?branch=master)](https://github.com/i-love-flamingo/flamingo-commerce/actions?query=branch%3Amaster+workflow%3ATests)
     4  [![Release](https://img.shields.io/github/release/i-love-flamingo/flamingo-commerce?style=flat-square)](https://github.com/i-love-flamingo/flamingo-commerce/releases)
     5  
     6  
     7  With "Flamingo Commerce" you get your toolkit for building fast and flexible commerce experience applications.
     8  
     9  A demoshop using the standalone adapters is online here https://demoshop.flamingo.me - you can also try the [GraphQL](https://demoshop.flamingo.me/en/graphql-console) support
    10   
    11  ## What problems does Flamingo Commerce solve?
    12  
    13  * Modern Architecture: Break monolithic e-commerce architecture to allow scaling and maintainability. 
    14  * Modern Architecture: Use it to build commerce for headless commerce solutions
    15  * Real time commerce: Build personalized experiences - without the need to cache rendered pages
    16  
    17  ## What are the main design goals of Flamingo Commerce?
    18  
    19  
    20  * **Performance**: We do not want to rely on any frontend caching. Instead it is no problem to show every customer an individual experience.
    21  * **Clean architecture**: We use "domain driven design" and "ports and adapters" to build a maintainable and clean application. 
    22  * **Suiteable for Microservice architectures**: Adapters concept and various resilience concepts makes it easy to connect to other (micro) services.
    23  * **Decoupled and flexible frontend development**: Frontend development is decoupled from the "Backend for Frontend" - so that it is possible to use "any" frontend technology.
    24  * **Testability**: By providing "Fake Adapters" that provide test data, it is possible to test your application without external dependencies.
    25  * **Great Developer Experience**: :-)
    26  * **Open Source**: Flamingo Commerce and Flamingo is Open Source and will remain so.
    27  
    28  
    29  ## Whats does Flamingo Commerce provide?
    30  
    31  * Different e-commerce Flamingo Modules for typical e-commerce domains: Each providing a separated bounded context with its *domain*, *application* and *interface* logic.
    32  * Using *ports and adapters* to separate domain from technical details, all these modules can be used with your own *adapters* to interact with any API or microservice you want.
    33  * Some of the major Flamingo Commerce modules (bounded contexts) are:
    34      * product: Offering domain models for different product types. Supporting multiple prices (including loyalty prices) etc..
    35      * cart: Powerful cart domain model. Supporting multi delivery, multiple payment transactions, and a lot more. 
    36      * search: Generic search service and features
    37      * checkout: Offering logic and interfaces for an example (default) checkout.
    38      
    39  * Each of the modules provide graphql support that you can use.
    40      
    41  
    42  **Flamingo Commerce is build on top of the Flamingo Framework so it makes sense that you read through the Flamingo docs also**
    43  
    44  Read more under [docs.flamingo.me](https://docs.flamingo.me/1.%20Introduction/1.%20Getting%20Started.html)
    45  
    46  ## Commerce Modules:
    47  
    48  * **price**: 
    49      * Offers value objects for prices and charges - supporting calculations, rounding and splitting
    50      * [![GoDoc](https://godoc.org/github.com/i-love-flamingo/flamingo-commerce/price?status.svg)](https://godoc.org/github.com/i-love-flamingo/flamingo-commerce/price)
    51      * [Readme](price/Readme.md)
    52  * **product**: 
    53      * Offers domain models and interface logic for handling different product types
    54      * [![GoDoc](https://godoc.org/github.com/i-love-flamingo/flamingo-commerce/product?status.svg)](https://godoc.org/github.com/i-love-flamingo/flamingo-commerce/product) 
    55      * [Readme](product/Readme.md)
    56  * **category**: 
    57      * Offers domain models and interface logic for category tree and category views
    58      * [![GoDoc](https://godoc.org/github.com/i-love-flamingo/flamingo-commerce/category?status.svg)](https://godoc.org/github.com/i-love-flamingo/flamingo-commerce/category) 
    59      * [Readme](category/Readme.md)
    60  * **cart**: 
    61      * The cart module is one of the main modules in Flamingo Commerce. It offers domain models and logic for multi delivery, multi payment carts.
    62      * [![GoDoc](https://godoc.org/github.com/i-love-flamingo/flamingo-commerce/cart/domain/cart?status.svg)](https://godoc.org/github.com/i-love-flamingo/flamingo-commerce/domain/cart) 
    63      * [Readme](cart/Readme.md)
    64  * **payment**: 
    65      * Offers a generic payment value objects as well as a generic web payment interface and comes with the "offlinepayment" gateway.
    66      * [![GoDoc](https://godoc.org/github.com/i-love-flamingo/flamingo-commerce/payment/domain?status.svg)](https://godoc.org/github.com/i-love-flamingo/flamingo-commerce/payment/domain) 
    67      * [Readme](payment/Readme.md)
    68  * **search**: 
    69      * Offers domain models and interface logic for generic search and search filters.
    70      * [![GoDoc](https://godoc.org/github.com/i-love-flamingo/flamingo-commerce/search/domain?status.svg)](https://godoc.org/github.com/i-love-flamingo/flamingo-commerce/search/domain) 
    71      * [Readme](search/Readme.md)
    72  * **checkout**: 
    73      * Offers a default checkout implementation that can be used.
    74      * [![GoDoc](https://godoc.org/github.com/i-love-flamingo/flamingo-commerce/checkout?status.svg)](https://godoc.org/github.com/i-love-flamingo/flamingo-commerce/checkout) 
    75      * [Readme](checkout/Readme.md)
    76  * **customer**: 
    77      * Offers domain models for customer
    78      * [![GoDoc](https://godoc.org/github.com/i-love-flamingo/flamingo-commerce/customer/domain?status.svg)](https://godoc.org/github.com/i-love-flamingo/flamingo-commerce/customer/domain) 
    79      * [Readme](customer/Readme.md)
    80  * **order**: 
    81      * Offers domain models for orders. For example to use it on a "My Orders" page.
    82      * [![GoDoc](https://godoc.org/github.com/i-love-flamingo/flamingo-commerce/order/domain?status.svg)](https://godoc.org/github.com/i-love-flamingo/flamingo-commerce/order/domain) 
    83      * [Readme](order/Readme.md)
    84  
    85  * **w3cdatalayer**: 
    86      * Offers interface logic to render a Datalayer that can be used for e-commerce tracking
    87      * [Readme](w3cdatalayer/Readme.md)
    88      
    89  # Flamingo Commerce Release Status
    90  
    91  Flamingo Commerce API is Beta because we will still change the API (models and methods).
    92  You are encourages to use it but if you update you might need to adjust your code to the latest changes.
    93  
    94  
    95  ## Setup
    96  
    97  We recommend to use Go modules, so you just need to add Flamingo Commerce to your main go file as import:
    98  
    99  e.g. to use the product module add
   100  
   101  ```go
   102  import (
   103    "flamingo.me/flamingo-commerce/v3/product"
   104  )
   105  ```
   106  
   107  And then load the module in your application bootstrap:
   108  
   109  ```go
   110  
   111  // main is our entry point
   112  func main() {
   113  
   114  	flamingo.App([]dingo.Module{
   115  	    ...
   116  		//flamingo-commerce modules
   117  		new(product.Module),
   118  		
   119  	}, nil)
   120  }
   121  
   122  
   123  ```
   124  
   125  To update the dependency in `go.mod` run
   126  
   127  ```
   128  go get flamingo.me/flamingo-commerce/v3
   129  ```
   130  ## Demo 
   131  
   132  There is a demo: https://demoshop.flamingo.me
   133  
   134  And the code is also published: https://github.com/i-love-flamingo/commerce-demo-carotene