π Download from GCS release bucket of project local β version v1.1.0
The example_application-backend serves an example_application-frontend web react example-application.
Start example_application-backend:
make example-application-backend-run
Build example_application-backend image:
make example-application-backend-image
Run example_application-backend docker-compose service container from the example_application-backend-image.
make example-application-backend-docker-compose-run
Some other companion Makefile targets in familly example-application-backend-* are also available, see example-application/backend/backend.mk for details.
example-application-backend-docker-compose-logs
example-application-backend-docker-compose-rm
example-application-backend-docker-compose-run
example-application-backend-docker-compose-stop
example-application-backend-docker-compose-up
example-application-backend-docker-compose-rm
example-application-backend-image
example-application-backend-image-push
example-application-backend-image-push-ci
example-application-backend-install
example-application-backend-run
As mentionned above the application-frontend web react app is served by the application-backend server.
Application is available at:
- http://localhost:8080 for the standard react example-application.
- or http://localhost:8080/ui for the server-side pre-rendered react example-application.
Some othe companion Makefile targets in familly example-application-frontend-* are available, see example-application/frontend/frontend.mk for details.
A mobile cross platform iOS and Android mobile-application using Flutter is also available.
See example-application/mobile/flutter.mk folder for more details about the available example-application-mobile-* targets.
As an example, get application-mobile Flutter dependancies with:
$ make example-application-mobile-flutter-pub-getThe Vegito project is built on a coherent layered stack of technologies: GitHub CI β Makefile β Docker β modular source code.
Each example-application repository contains an example-application-release.yml workflow that uses the shared template example-application-release-template.yml.
This pipeline:
- builds the example-application (mobile, backend, etc.)
- produces versioned artifacts (APK, AAB, Docker images, ...)
- uploads artifacts to a GCS bucket
- exposes the release via: https://releases.vegito.app
It triggers make targets that are specific to each project.
The top-level Makefile dynamically includes *.mk files from submodules (backend/, mobile/, frontend/, ...).
Each module exposes its own targets through files such as:
mobile/flutter.mk
backend/backend.mk
Benefits:
- local validation of builds
- command factorization for CI and developers
- flexibility: each example-application only needs to expose the targets required by CI
Make targets use:
docker buildx bakewith module-specificdocker-bake.hcldocker composewith module-specificdocker-compose.yml
This enables:
- building versioned images
- running all services inside an isolated Docker network
With DevContainer, the local environment is identical to the CI runtime. It enables:
- local debugging of services (Go, Flutter, Firebase, ...)
- functional testing (RobotFramework)
- GPU usage inside containers
To make a repository compatible with the generic CI pipeline:
- Add a
Makefileat the repository root - Expose the CI-expected targets (
make build,make test, ...) - Organize the code into modules:
backend/,frontend/,mobile/,tests/, etc. - Add the necessary
Dockerfile,docker-compose.ymlanddocker-bake.hcl
graph TD
A[Dev / CI GitHub] --> B[Workflow example-application-release.yml]
B --> C[Make commands]
C --> D[Top-level Makefile]
D --> E[Modules *.mk]
C --> F[docker buildx bake]
C --> G[docker compose up]
F --> H[Dockerfile + docker-bake.hcl]
G --> I[docker-compose.yml]
H --> J[Versioned Docker image]
I --> K[Containers for tests / builds]
K --> L[Versioned artifacts: APK, AAB, Images...]
L --> M[GCS bucket + releases page]
This modular CI / Makefile / Docker system ensures:
- strong portability (local/dev/CI parity)
- easy extensibility (add modules or repos)
- full reproducibility of builds
It can be reused as-is for any Flutter/Go containerized project using GitHub Actions.
This project serves as the foundation for a powerful dev experience:
- As a portable open-source kit for Android/GPU developers
- As a base layer for building SaaS platforms:
- Provision remote GPU-powered Android workspaces
- Run ephemeral builds/tests with GPU emulation
- Power SSR previews for design+QA workflows
- π Mobile emulator testing with real OpenGL (no CPU lag)
- π₯ Flutter + Maps integration preview
- π§ ML inferencing with shared GPU
- π§ͺ CI pipelines with rendering tests
- βοΈ Remote dev with full graphical support
- The environment is designed to be reproducible, shared, and modular.
- Feel free to create your own
makecommands or.mkfiles inlocalas needed. - If you have any questions or suggestions for improvement: open an issue or contact the infra team.
MIT β use freely, contribute openly, and stay sharp β see the LICENSE file.
