Package: mach-composer
Documentation:docs.machcomposer.ioMACH composer is a framework that you use to orchestrate and extend modern
digital commerce & experience platforms, based on MACH technologies and cloud
native services. It provides a standards-based, future-proof tool-set and
methodology to hand to your teams when building these types of platforms.It includes:A configuration framework for managing MACH-services configuration, using
infrastructure-as-code underneath (powered by Terraform)A microservices architecture based on modern serverless technology (AWS
Lambda and Azure Functions), including (alpha) support for building your
microservices with the Serverless FrameworkMulti-tenancy support for managing many instances of your platform, that
share the same library of micro servicesCI/CD tools for automating the delivery of your MACH ecosystemTight integration with AWS an Azure, including an (opinionated) setup of
these cloud environmentsThe framework is intended as the 'center piece' of your MACH architecture and
incorporates industry best practises such as the 12 Factor Methodology,
Infrastrucure-as-code, DevOps, immutable deployments, FAAS, etc.With combining (and requiring) these practises, using the framework has
significant impact on your engineering methodology and organisation. On the
other hand, by combining those practises we believe it offers an accelerated
'way in' in terms of embracing modern engineering practises in your
organisation.Getting startedRead ourgetting started guideon how to deploy your MACH stack with MACH composer.Example yaml file---mach_composer:version:'1.2'global:environment:testcloud:awsterraform_config:aws_remote_state:bucket:mach-tfstate-tstkey_prefix:mach-composer-tstregion:eu-central-1sites:-identifier:my-siteaws:account_id:1234567890region:eu-central-1endpoints:public:api.tst.mach-example.netcommercetools:project_key:my-site-tstclient_id:...client_secret:...scopes:manage_project:my-site-tst manage_api_clients:my-site-tst view_api_clients:my-site-tsttoken_url:https://auth.europe-west1.gcp.commercetools.comapi_url:https://api.europe-west1.gcp.commercetools.comproject_settings:languages:-en-GB-nl-NLcurrencies:-GBP-EURcountries:-GB-NLcomponents:-name:paymentvariables:STRIPE_ACCOUNT_ID:0123456789secrets:STRIPE_SECRET_KEY:secret-valuecomponents:-name:paymentsource:git::ssh://git@github.com/your-project/components/payment-component.git//terraformendpoints:main:publicversion:e638e57InstallationMake sure you have Terraform 0.14 installed
(tip: Usetfenvto support multiple versions of Terraform)Create a new virtualenv with Python 3.8Run the following commands:$ make installRunning MACHTo generate the files:mach generate # generates all available configs.mach generate -f main.ymlTo init Terraform (optional):mach initTo plan Terraform:mach planTo apply Terraform config:mach applyChecking for updatesMACH can check your components for available updates.To do this, run:mach update -f main.ymlContributingCode styleThe Python source code should be formatted usingblackand the JavaScript code should be
formatted usingprettier. You can usemake formatto run both black and prettier.This project usespre-committo validate the changed
files before they are committed. You can install it on MacOS using brew:$ brew install pre-commitIn the repository you need to register the hooks in git the first time using:$ pre-commit installThe pre-commit config (.pre-commit-config.yaml) currently runs black and
flake8.