Skip to content
forked from configu/configu

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

License

Notifications You must be signed in to change notification settings

eatandi/configu

 
 

Repository files navigation

Hacktoberfest 23 Banner


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

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

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.

About

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

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 54.7%
  • Python 29.3%
  • Go 11.2%
  • Shell 2.1%
  • JavaScript 1.2%
  • PowerShell 0.8%
  • Other 0.7%