NOTE: galactus
has been superceded by my work on the Draft framework. I suggest following the work there as it has all the same value as galactus
and more!
This project is still in a pre-alpha state. Basic functionality when running locally will mostly work, but MANY features are not yet implemented and some aspects may be completely non-functional. Some future features will include:
- Better documentation/"getting started" pages
- "Easy" remote setup using Terraform
- Example consumers
- Example client
- Domain support
- Hasura as a generic query handler
- CI/CD with Docker images hosted in Docker Hub
The galactus
repository is a place to hold the "galaxy" of microservices, modules, tools, and clients that make up a modern application. It is based off of this Github project which defines a generic project layout for Go development and has been expanded to support clients, Kubernetes deployments, and much, much more.
It is based off of the internal platform used by Circadence but heavily altered to be as generic as possible. This project can be used as a template or starting point for a new project or you can take pieces of it as you find them useful. Please note that the project is still in very early days as an open-source framework and is not yet ready for use except by the most daring. Stay tuned for an official public release.
TL;DR: galactus
is a generic development framework for modern applications.
The absolute basic tooling you need need to develop with galactus
is:
First install the gctl
tool:
cd tools/gctl
go install
Now move to the root of the repository and initialize the gctl
configuration:
cd ../..
gctl config
You're now ready to initialize and start your local infra (databases, brokers, etc.):
gctl infra init
gctl infra start
Once all the infra is running, you can start your core services:
# tip: this will take a bit to run the first time, but will be quick after that
gctl run core
Everything is now running! To learn more, try out this demo: TODO
A quick overview of the directories is below:
api/
: the Protobuf definitions and generated API codeclient/
: the client code for the applicationdata/
: data files like configs, binaries, etc.deployments/
: Helm charts, configs, values, etc.docs/
: wikis, diagrams, etc.examples/
: templates, example configs, etc.functions/
: cloud function apps like Azure Functions, AWS Lambda, etc.infrastructure/
: infrastructure code like Terraform, Cloud Formation, etc.pipelines/
: pipelines configuration for CI/CDpkg/
: common Go modules used across different services and toolsscripts/
: helpful scripts to use during local dev/debuggingservices/
: microservice directories each in their own foldertest/
: functional and integration teststhird_party/
: third party libraries like git submodulestools/
: CLI tools like pipeline binaries, operational tools, etc.
Here is a table of contents of the docs: