Skip to content

Commit e3b4ed0

Browse files
committed
docs: overview plus introduction
1 parent c20b2f1 commit e3b4ed0

File tree

2 files changed

+163
-30
lines changed

2 files changed

+163
-30
lines changed

docs/overview/Introduction.md

Lines changed: 55 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -6,56 +6,81 @@ title: " "
66

77
# Introduction
88

9-
Flamingock is a change management framework that ensures your distributed systems evolve safely and consistently. It applies versioned, auditable changes to any target system (message brokers, APIs, cloud services, databases, and any other external service) with guaranteed safety and recovery mechanisms.
9+
**Flamingock** brings *Change-as-Code (CaC)* to your entire stack.
10+
It applies **versioned, auditable changes** to the external systems your application depends on — such as databases, schemas, message brokers, APIs, and cloud services.
11+
12+
Unlike infrastructure-as-code tools, Flamingock runs **inside your application** (or via the **CLI**).
13+
It ensures these systems evolve **safely, consistently, and in sync with your code at runtime**.
14+
15+
---
16+
17+
### What Flamingock manages
18+
Flamingock focuses on **application-level changes** that your code requires to run safely:
19+
20+
- Database schemas and reference data
21+
- Message queues and schemas
22+
- APIs and configuration values
23+
- Cloud service resources directly tied to your application
24+
- Configuration changes (feature flags, secrets, runtime values)
25+
26+
### What Flamingock does *not* manage
27+
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**.
28+
29+
---
1030

1131
## Core principles
1232

13-
### Safety by default
33+
### 🔒 Safety by default
1434
When Flamingock cannot guarantee a safe outcome, it stops and requires manual intervention. This prevents silent data corruption and ensures predictable deployments.
1535

16-
### Complete auditability
36+
### 📝 Complete auditability
1737
Every change execution is tracked in an audit store, providing a complete history of what was applied, when, by whom, and with what result.
1838

19-
### Recovery strategies
20-
Configurable recovery mechanisms determine how Flamingock handles failures:
21-
- **Manual intervention** (default): Stops on failure and requires human review
22-
- **Always retry**: Automatically retries idempotent operations
39+
### 🔄 Recovery strategies
40+
Configurable mechanisms determine how Flamingock handles failures:
41+
- **Manual intervention** (default): stops on failure and requires human review
42+
- **Always retry**: automatically retries idempotent operations
2343

44+
---
2445

2546
## Target systems
2647

2748
Flamingock can apply changes to any external service your application interacts with. Examples include:
28-
- **Message brokers**: Kafka, RabbitMQ, AWS SQS
29-
- **Cloud services**: S3, Lambda, API Gateway
30-
- **APIs**: REST endpoints, GraphQL schemas
31-
- **Configuration systems**: Feature flags, vault secrets
32-
- **Databases**: SQL (PostgreSQL, MySQL) and NoSQL (MongoDB, DynamoDB)
33-
- **And any other external system** your application needs to evolve
49+
50+
- **Databases**: SQL (PostgreSQL, MySQL) and NoSQL (MongoDB, DynamoDB)
51+
- **Message brokers**: Kafka, RabbitMQ, AWS SQS
52+
- **Cloud services**: S3, Lambda, API Gateway
53+
- **APIs**: REST endpoints, GraphQL schemas
54+
- **Configuration systems**: feature flags, vault secrets
55+
- **And any other external system** your application needs to evolve
56+
57+
---
3458

3559
## Architecture overview
3660

3761
### Changes
38-
The fundamental unit of change. Each Change:
39-
- Has a unique identifier and execution order
40-
- Targets a specific system
41-
- Contains execution and rollback logic
42-
- Is executed exactly once
62+
The fundamental unit of change. Each **Change**:
63+
- Has a unique identifier and execution order
64+
- Targets a specific system
65+
- Contains execution logic (and optionally rollback logic)
66+
- Is executed exactly once
4367

4468
### Audit store vs target system
45-
- **Audit store**: Where Flamingock tracks execution history (managed by Flamingock)
46-
- **Target system**: Where your business changes are applied (any external service your application interacts with)
69+
- **Audit store** → where Flamingock tracks execution history (managed by Flamingock).
70+
- **Target system** → where your business changes are applied (any external service your application interacts with).
4771

4872
### Execution flow
49-
1. Application startup triggers Flamingock
50-
2. Flamingock discovers all Changes
51-
3. Checks audit store for pending changes
52-
4. Acquires distributed lock
53-
5. Executes changes in order
54-
6. Records results in audit store
55-
7. Handles failures according to recovery strategy
73+
1. Application startup (or CLI invocation) triggers Flamingock
74+
2. Flamingock discovers all Changes
75+
3. Checks audit store for pending changes
76+
4. Acquires a distributed lock
77+
5. Executes changes in order
78+
6. Records results in the audit store
79+
7. Handles failures according to the configured recovery strategy
5680

81+
---
5782

5883
## Next steps
59-
- [Quick start](quick-start.md) - Minimum setup to run Flamingock
60-
- [Core concepts](core-concepts.md) - Detailed explanation of key concepts
61-
- [Audit store vs target system](audit-store-vs-target-system.md) - Understanding the dual-system architecture
84+
- [Quick start](quick-start.md) – minimum setup to run Flamingock
85+
- [Core concepts](core-concepts.md) – detailed explanation of key concepts
86+
- [Changes](../changes/introduction.md) – anatomy and execution of Changes

docs/overview/overview.md

Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
---
2+
id: overview
3+
title: Overview
4+
sidebar_position: 0
5+
---
6+
7+
# Flamingock Documentation
8+
9+
**Flamingock** brings *Change-as-Code (CaC)* to your entire stack.
10+
It applies **versioned, auditable changes** to the external systems your application depends on — such as databases, schemas, message brokers, APIs, and cloud services.
11+
12+
Unlike infrastructure-as-code tools, Flamingock runs **inside your application** (or via the **CLI**).
13+
It ensures these systems evolve **safely, consistently, and in sync with your code at runtime**.
14+
15+
👉 For a deeper explanation, see the [Introduction](./get-started/introduction.md)
16+
17+
---
18+
19+
## 🔎 What It Looks Like
20+
21+
A simple change in Flamingock:
22+
23+
```java
24+
@TargetSystem("user-database")
25+
@Change(id = "add-user-status", author = "dev-team")
26+
public class _0001__AddUserStatus {
27+
28+
@Apply
29+
public void apply(MongoDatabase database) {
30+
database.getCollection("users")
31+
.updateMany(
32+
new Document("status", new Document("$exists", false)),
33+
new Document("$set", new Document("status", "active"))
34+
);
35+
}
36+
37+
@Rollback
38+
public void rollback(MongoDatabase database) {
39+
database.getCollection("users")
40+
.updateMany(
41+
new Document(),
42+
new Document("$unset", new Document("status", ""))
43+
);
44+
}
45+
}
46+
```
47+
48+
👉 **Continue to [Quick Start Guide](./quick-start)**
49+
👉 **Learn the [Core Concepts](./core-concepts)**
50+
👉 **Read the full [Introduction](./Introduction)**
51+
52+
---
53+
54+
## 🔑 Core Building Blocks
55+
56+
**Changes** – versioned, auditable operations (e.g. schema migrations, config toggles, S3 bucket creation).
57+
58+
**Target Systems** – external systems you evolve (MongoDB, DynamoDB, Kafka, S3, REST APIs, …).
59+
60+
**Audit Store** – log where Flamingock records applied changes.
61+
62+
**Runners** – how Flamingock integrates with your app (Standalone, Spring Boot, …).
63+
64+
---
65+
66+
## 📚 Documentation Structure
67+
68+
**Get started**[Introduction](./Introduction), [Quick Start](./quick-start), [Core Concepts](./core-concepts), [Change-as-Code](./Change-as-Code)
69+
70+
**Changes**[Anatomy](../changes/anatomy-and-structure), [Apply and rollback methods](../changes/apply-and-rollback-methods), [Types & implementation](../changes/types-and-implementation), [Best practices](../changes/best-practices)
71+
72+
**Target Systems** – Supported integrations ([SQL](../target-systems/sql-target-system), [MongoDB](../target-systems/mongodb-target-system), [DynamoDB](../target-systems/dynamodb-target-system), [Introduction](../target-systems/introduction), …)
73+
74+
**Community Audit Stores**[MongoDB](../community-audit-stores/mongodb-audit-store), [DynamoDB](../community-audit-stores/dynamodb-audit-store), [SQL](../community-audit-stores/sql-audit-store)
75+
76+
**Safety & Recovery**[Recovery strategies](../safety-and-recovery/introduction), [Safety mechanisms](../safety-and-recovery/introduction)
77+
78+
**Templates**[How to use](../templates/templates-how-to-use), [Introduction](../templates/templates-introduction)
79+
80+
**Supported Frameworks**[Spring Boot](../frameworks/springboot-integration/introduction), [Standalone runner](../flamingock-library-config/setup-and-stages)
81+
82+
**Testing**[Unit testing](../testing/unit-testing), [Integration testing](../testing/integration-testing), [Spring Boot testing](../testing/springboot-integration-testing)
83+
84+
**CLI** – Command-line usage and operations
85+
86+
**Resources** – Examples, FAQ, migration guides
87+
88+
---
89+
90+
## 🛠 Editions
91+
92+
**Community Edition (CE)** – open source, library only
93+
94+
**Cloud Edition** – SaaS with dashboard, observability, and premium features
95+
96+
**Self-Hosted Edition** – Cloud features, deployable in your infra
97+
98+
👉 **Learn more about [Cloud Edition](../cloud-edition/cloud-edition)**
99+
100+
---
101+
102+
## 🔍 Resources
103+
104+
[GitHub repository](https://github.com/flamingock/flamingock-project)
105+
106+
[Releases](https://github.com/flamingock/flamingock-project/releases)
107+
108+
[Issue tracker](https://github.com/flamingock/flamingock-project/issues)

0 commit comments

Comments
 (0)