Skip to content

A collection of practical Java examples demonstrating how to use Flamingock to evolve external systems in a controlled, auditable, and versioned way. Each example showcases a specific use case.

License

Notifications You must be signed in to change notification settings

flamingock/flamingock-java-examples

Header Image


Flamingock brings Change-as-Code (CaC) to your entire stack.
It applies versioned, auditable changes to the external systems your application depends on — such as schemas, message brokers, databases, APIs, cloud services, and any other external system your application needs.

Unlike infrastructure-as-code tools, Flamingock runs inside your application (or via the CLI).
It ensures these systems evolve safely, consistently, and in sync with your code at runtime.

What Flamingock manages

Flamingock focuses on application-level changes that your code requires to run safely:

  • Database schemas and reference data
  • Message queues and schemas
  • APIs and configuration values
  • Cloud service resources directly tied to your application
  • Configuration changes (feature flags, secrets, runtime values)

What Flamingock does not manage

Flamingock is not an infrastructure-as-code tool. It does not provision servers, clusters, or networks — those belong in Terraform, Pulumi, or similar. Instead, Flamingock complements them by handling the runtime changes your application depends on.

For more information about Flamingock for Java library, please visit the main repository here.


Examples Overview

This repository is structured as Individual Gradle Projects, with each project demonstrating Flamingock's integration with different frameworks, technologies, and use cases. Explore the examples to find the one that matches your needs!

Each example is prepared to run from its own test with all infrastructure (databases, mocked servers, etc.) needed. But you can also run it with your own infrastructure.


Index of Examples

Example Project Description
inventory-orders-service Example that simulates an e-commerce service that manages inventory and orders. It demonstrates how Flamingock coordinates multiple target systems in lockstep using the Change-as-Code approach.

🚀 New examples will be added regularly! Stay tuned for updates as we expand the repository to cover even more systems and frameworks.


How to Run Examples

1. Clone this repository:

   git clone https://github.com/flamingock/flamingock-java-examples.git
   cd flamingock-java-examples

2. Navigate to the example you want to explore:

cd inventory-orders-service

3. Run example

3.a. Run the project test using Gradle

./gradlew test

3.b. Run the project using Gradle and your own infrastructure

./gradlew run

4. Follow the instructions in the specific project's README for further details.


Contributing

We welcome contributions! If you have an idea for a new example or improvement to an existing one, feel free to submit a pull request. Check out our CONTRIBUTING.md for guidelines.


Get Involved

⭐ Star the Flamingock repository to show your support!

🐞 Report issues or suggest features in the Flamingock issue tracker.

💬 Join the discussion in the Flamingock community.


License

This repository is licensed under the Apache License 2.0.


Explore, experiment, and empower your projects with Flamingock!

Let us know what you think or where you’d like to see Flamingock used next.

About

A collection of practical Java examples demonstrating how to use Flamingock to evolve external systems in a controlled, auditable, and versioned way. Each example showcases a specific use case.

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks