-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
470e1f2
commit 368cb53
Showing
4 changed files
with
10 additions
and
69 deletions.
There are no files selected for viewing
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,18 +1,10 @@ | ||
# Architect | ||
|
||
<p align="center"> | ||
<img src="https://img.shields.io/npm/v/@perdition/architect-core" /> | ||
<img src="https://img.shields.io/jsr/v/@perdition/architect-core" /> | ||
<img src="https://img.shields.io/github/actions/workflow/status/RealityAnomaly/architect/test.yml?label=tests" /> | ||
</p> | ||
|
||
Architect is a framework for constructing very complex structured configuration trees in TypeScript. | ||
Architect is a TypeScript-based IaC tool powered by [Deno](https://deno.com), built to handle massive JSON trees such as the resources in a Kubernetes cluster, Nix module parameters, or the configuration for a router. It's designed to be more lightweight than existing frameworks such as Terraform and Pulumi, and makes use of intelligent caching to speed up build times for a faster development loop. | ||
|
||
## Philosophy | ||
- Fast development loop. Architect uses `ts-node` - no manual `tsc` step is required. | ||
- Plainly visible behaviour. No hidden magic. What you declare in TypeScript is what runs. | ||
|
||
## Concepts | ||
|
||
- **Component**: Think of a component like a singular application. It's a self-contained group of configuration or resources. Consists of a class with a function called `build()` that returns either an object or a list of objects to be merged into the global tree. | ||
- **Capability**: A service provided by one or more components, that can be declared on a component and made mandatory on other components. | ||
- **Fact**: Represents a unique source of data that can be requested by any individual component. Think of Facts as the input configuration for your Components. | ||
- **Target**: Holds state for a singular build. Components and facts are registered against a target, and a `resolve` function is called to return the final merged configuration tree. | ||
Architect is currently in the prototype (pre-Alpha) stage, and is still in an early phase of development. It's not yet production-ready, and the API surface is not stable, but contributions are appreciated! Currently, there is a plugin for Kubernetes that represents the first Architect plugin, present under the `packages` folder as `architect-k8s`. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,7 @@ | ||
# Core module | ||
|
||
<p align="center"> | ||
<img src="https://img.shields.io/npm/v/@perdition/architect-core" /> | ||
<img src="https://img.shields.io/jsr/v/@perdition/architect-core" /> | ||
</p> | ||
|
||
This is the core module for Architect. It contains generic supporting code for modules built on top of it. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters