Skip to main content

Developer onboarding tool — refract complexity into clarity

Project description

Prism

Prism

Refract complexity into clarity

Configuration inheritance system for managing multi-level development environments

License: MIT Python 3.9+ Platform Documentation


What is Prism?

Prism is a configuration inheritance system that manages complex, multi-level development environments through composable YAML configurations. Like a prism refracts white light into distinct colors, Prism takes organizational complexity and refracts it into clear, manageable configuration layers.

The Problem

Large organizations face configuration chaos:

  • Complex hierarchies — Fortune 500 companies with 5+ organizational levels
  • Conflicting requirements — Different teams need different tools, configs, and access
  • Configuration drift — No single source of truth across thousands of employees
  • Onboarding friction — New hires waste days configuring their environment

The Solution

Prism provides:

  • Configuration inheritance — Define once at company level, override per team
  • Multi-level hierarchies — Support structures from flat (startups) to 5+ levels (enterprise)
  • Web UI — Visual prism selection and installation wizard with themes, cascading dropdowns, and real-time progress
  • CLI tools — Scriptable, automatable, CI/CD friendly
  • NPM distribution — Packages published to npm, no custom infrastructure needed
  • Validation — Catch errors before deployment
  • Smart merging — Deep-merge with configurable strategies (union, override, append)
  • Installation rollback — Every action tracked, automatic LIFO undo on failure
  • Privilege separation — Two-phase install with sudo session management

Quick Start

# Clone the repository
git clone https://github.com/andersonwilliam85/prism.git
cd prism

# Install dependencies
make install-dev

# Run tests
make test

# Start the web UI installer
make run
# Opens at http://localhost:5555

See Getting Started for the full guide.


Features

Web UI Installer

  • Prism gallery with visual cards for all configurations
  • Step-by-step wizard with progress tracking
  • Theme system — 5 built-in themes + custom themes with 5 gradient color slots
  • Cascading dropdowns — Dynamic field dependencies (e.g., division filters available teams)
  • Settings panel — Runtime registry, CDN, and language overrides
  • Responsive design with smart validation

Configuration Inheritance

Multi-level hierarchy with configurable merge strategies:

Company (base)
  └── Business Unit
      └── Department
          └── Team
              └── Individual

Configurations merge intelligently — base layer defines company standards, each level can override or extend using union, deep_merge, override, or append strategies.

Built-in Prisms

Prism Use Case Hierarchy Scale
prism Default — individuals to enterprise Scale + environment + platform tiers Any
startup Seed/Series A startups 1 level 10–50
acme-corp Template for companies 2 levels 100–1K
consulting-firm Multi-client work By client Variable
fortune500 Enterprise 5 levels 50K+
university Academic institutions Dept to Lab Variable
opensource Community projects Flat Community

Each prism includes custom themes, cascading user fields, and rollback configuration.

Installation Safety

  • Rollback — Every file copy, directory creation, command execution, and config change is tracked. On failure, changes unwind in LIFO order.
  • Privilege separation — Normal operations run first. Privileged steps (apt-get, global npm) require explicit sudo approval in a separate phase.
  • Sudo sessions — Cryptographic tokens with 15-minute TTL and 3-attempt lockout.

NPM Distribution

# Packages auto-fetch from npm via unpkg CDN
python3 install.py --prism prism

# Use custom registry (corporate/air-gapped)
python3 install.py --npm-registry https://npm.mycompany.com

Local Docs Server

Post-install, browse your workspace configuration:

python3 -m prism.tools.docs_server --workspace ~/dev

Architecture

Prism follows a VBD-inspired (Volatility-Based Decomposition) layered architecture with dependency injection.

Layer Role Components
Managers Orchestration — the "what" installation_manager, package_manager
Engines Business logic — the "how" config_engine (schema evolution), installation_engine (installation surface)
Accessors External boundaries — the "where" file, command, registry, system, rollback, sudo
Utilities Cross-cutting services event_bus (pub/sub progress)
Models Plain dataclasses Installation, config, rollback DTOs
UI Flask web app REST API + static frontend

All layers are wired through a composition root (container.py) with constructor injection — no global state, fully testable.

See Architecture Reference for the full breakdown.


Development

Prerequisites

  • Python 3.9+
  • Flask, PyYAML, Rich

Setup

make install-dev    # Install dev dependencies
make test           # Run tests (unit + CLI)
make test-all       # All tests including E2E
make run            # Start dev server
make lint           # Run linters (flake8 + mypy)
make format         # Format code (black + isort)
make check          # All CI checks

Testing

make test              # Unit + CLI tests
make test-all          # All tests including E2E
make test-coverage     # With coverage report
make test-trace        # E2E with Playwright traces

GitHub Actions runs lint, test, coverage, and security scans on every PR.


Documentation

Full documentation at andersonwilliam85.github.io/prism.


Supported Platforms

  • macOS (Intel and Apple Silicon)
  • Windows 10/11
  • Linux (Ubuntu 20.04+, Debian, Fedora, RHEL)
  • WSL2

Contributing

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/my-feature
  3. Make changes and test: make test-all
  4. Format code: make format
  5. Run CI checks: make check
  6. Submit a Pull Request

See Contributing Guide.


License

MIT License — See LICENSE

Copyright (c) 2025 William Anderson


Prism — Refract complexity into clarity
Made by William Anderson

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

prism_dx-0.1.0b1.tar.gz (54.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

prism_dx-0.1.0b1-py3-none-any.whl (75.0 kB view details)

Uploaded Python 3

File details

Details for the file prism_dx-0.1.0b1.tar.gz.

File metadata

  • Download URL: prism_dx-0.1.0b1.tar.gz
  • Upload date:
  • Size: 54.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for prism_dx-0.1.0b1.tar.gz
Algorithm Hash digest
SHA256 a9a84f16aefeac29cd9c60a557be35e83b86092c30ceff47afc90a592f3b3462
MD5 88dc6b98f64d7222328de9c11b024990
BLAKE2b-256 e8f73f9b3acc3098d6d1e3a0150544b97bd6c22e90e80130810208af49f97d14

See more details on using hashes here.

File details

Details for the file prism_dx-0.1.0b1-py3-none-any.whl.

File metadata

  • Download URL: prism_dx-0.1.0b1-py3-none-any.whl
  • Upload date:
  • Size: 75.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for prism_dx-0.1.0b1-py3-none-any.whl
Algorithm Hash digest
SHA256 2ffe28cd40e4d706e10bf2a9447bdd5f9aef0a5d59addd0c71365c05e9e22cad
MD5 0edf8b3866176abb52d49ee3905a7aa6
BLAKE2b-256 309d847ebe130741f7bce32e4d73f87cb1d7a08af6a07cc075f604744b1bc260

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page