/configu

a simple, modern, and secure standard for managing and collaborating software configurations ⚙️✨.

Primary LanguageTypeScriptApache License 2.0Apache-2.0

Configu

PRs Welcome License Chat Discord

Configu Icon

Configu is a simple, modern, and secure standard for managing and collaborating software configurations ⚙️.

It is built to provide a common, flexible, and extensible process for storing, mutating, and orchestrating configuration data across different environments and systems.

Learn how to use Configu in your project.

Features

Configu isn’t just a tool; it’s a dedicated companion on your software development journey. Its features are tailored to ensure that your configurations are not just managed but are an integral, secure, and optimized part of your software lifecycle. Try Configu and transform the way you handle software configurations.

🎯 Simple

Offers a unified API for all configuration tasks, whether dealing with files, databases, secret managers, or custom implementations. Enables end-to-end configuration automation throughout the software development lifecycle.

🚀 Modern

Expertly manages configuration data across multiple deployments, workflows, runtimes, and environments. Scales to accommodate infinite configuration contexts, maintaining seamless management and organization.

🔒 Secure

Equipped with a robust configuration type system and a comprehensive policy framework. Provides built-in safeguards against application misconfigurations, ensuring a secure environment for your configurations.

🌐 Common

Promotes a clear understanding and consistent management of configuration data. Facilitates collaboration and ensures configurations are accurate and up-to-date. Provides a declarative approach that integrates seamlessly with coding tasks, enabling "Learn Once, Write Anywhere" flexibility and automation across diverse environments and systems.

🌟 Flexible

Adapts to any modern tech stack and use case. Allows to manage configurations across files, directories, codebases, and repositories. Accommodates configuration values over a context tree for inheritance and advanced overriding. Allows combining and piping commands to produce any necessary configuration artifact.

🛠 Extensible

Supports custom configuration storage implementations, configuration formatters, and injectors. Continuously evolving and driven by community contributions.

Configu is more than just a tool; it’s a solution that evolves with you, enhancing the way you think and interact with software configurations.

Concepts

Config Config

A generic representation of application configuration using three properties: key, value, set. types/Config

Cfgu Cfgu

A generic declaration of a Config, using properties like type, description and constraints. types/Cfgu

ConfigStore ConfigStore

A storage engine interface for Configs records. types/ConfigStore

ConfigSet ConfigSet

A unique path within a tree-like data structure that groups Configs contextually. types/ConfigSet

ConfigSchema ConfigSchema

A file containing binding records linking each unique ConfigKey to its corresponding Cfgu declaration. types/ConfigSchema

⤴️ Upsert Command

Create, update or delete Configs from a ConfigStore. Search Upsert Command

⤵️ Eval Command

Fetch Configs from ConfigStore on demand. Search Eval Command

▶️ Export Command

Export Configs as configuration data in various modes. Search Export Command

Architecture

Configu's architecture is designed to seamlessly integrate into the software development lifecycle. The flow diagram below illustrates this dynamic process:

Configu Flow Diagram

Workflow

The Configu workflow is an iterative process that boosts configuration management as a regular part of your development cycle:

  1. Define ConfigSchema
    Regularly define and revise configuration instances form code sections using ConfigSchema.

  2. Synchronize with VCS
    Keep these ConfigSchema updated with your code in your Version Control System (VCS). This ensures configurations evolve with your application.

  3. Upsert Configurations
    Use ConfigSchema with a ConfigSet to Upsert (updates or inserts) Configs into a ConfigStore. Use the context tree. Any modified Config is validated against the ConfigSchema.

  4. Evaluate Configurations
    From development to deployment, use ConfigSchema and ConfigSet to Evaluate Configs from a ConfigStore. Any fetched Config is validated against the ConfigSchema.

  5. Export Configurations for Use
    After evaluation, Export the Configs into formats needed for your application. This step adapts to various deployment environments and needs. Utilize the CLI for build and deploy time operations, and the SDKs for runtime operations.

Incorporating these steps into your regular development routines, Configu fosters a dynamic and integrated approach to configuration management. This ensures that configurations remain in sync with your application's evolution, bolstering the system's stability and reliability, as well as enhancing team efficiency and productivity.

Documentation

You can find the Configu documentation on the website. The documentation is divided into several sections:

Contributing

There are many ways to contribute to Configu.

Structure

This repository is a monorepo that contains the Configu user interface packages.

Interface Version Setup Code Build
Bash Configu CLI cli version Instructions ts/packages/cli GitHub Workflow Status
Node.js Node.js SDK npm Instructions ts/packages/node GitHub Workflow Status
Internet Explorer Browser SDK npm Instructions ts/packages/browser GitHub Workflow Status
Python Python SDK pypi Instructions py GitHub Workflow Status
Java Java SDK coming-soon label
.NET .NET SDK coming-soon label
C++ C++ SDK help-wanted label
PHP PHP SDK help-wanted label
Go Go SDK go Instructions go GitHub Workflow Status
Rust Rust SDK help-wanted label
Ruby Ruby SDK help-wanted label
Visual Studio Code VSCode Extension coming-soon label ts/packages/vscode GitHub Workflow Status
IntelliJ IDEA IntelliJ Plugin help-wanted label
Kubernetes Kubernetes Operators help-wanted label
Terraform Terraform Provider help-wanted label

Related

License

Configu is Apache-2.0 licensed. Copyright (c) 2022-present, Configu.