The monorepo-template
is a bare minimum, all batteries included template, that you can use to run or test applications locally in isolation, or within a Kubernetes cluster provisioned locally, which is generally useful for end-to-end testing.
Our goal is to have 1:1 parity with: local, CI/CD, and cloud environments.
The project includes reference implementations for:
- React web app
- Python backend using Flask
- Infrastructure provisioned using Pulumi and Kind (locally)
- Machine learning workloads using Metaflow
We also include an end-to-end test suite that runs on top of the Kubernetes cluster.
- Test applications locally with hot-reload
- Run applications locally with hot-reload
- CI/CD support for GitHub
- CI/CD support for GitLab
- Support for GCP
- Support for AWS
- Support for Azure
Infra
- Python3.7
- Docker
- Kind
- Kubernetes
- Kubernetes Dashboard
- Kubectl
- Pulumi
- End-to-end tests
API
- Python3.7
- Flask
- Graphene
- SQLAlchemy
- PostgreSQL
- Pytest + Mocha
- Alembic
Frontend
- Node v14
- Apollo + GraphQL
- React
- NPM
- Styled-components
- Jest (with CSS testing)
Observability
- Grafana
MLOps
- Metaflow
Before we get started, make sure you have Docker installed in your local computer. If you don't already have Docker installed, visit https://docs.docker.com/get-docker.
To test api
, frontend
or infra
applications locally type in your command line:
./test.sh {APP_NAME}
Where {APP_NAME}
is one of these values: api
, frontend
or infra
.
Note: when you run ./test.sh infra
, a Kubernetes cluster will be provisioned inside a Docker container using Kind, all applications (api
, frontend
, etc.) will be containerized and provisioned on Kubernetes. Once the cluster is ready, the end-to-end test suite will run.
To run api
, frontend
or infra
applications locally type in your command line:
./run.sh {APP_NAME}
Where {APP_NAME}
is one of these values: api
, frontend
or infra
.
Note: when you run ./run.sh infra
, a Kubernetes cluster will be provisioned inside a Docker container using Kind, all applications (api
, frontend
, etc.) will be containerized and provisioned on Kubernetes, and accessible through your browser.