Developer onboarding tool — refract complexity into clarity
Project description
Prism
Refract complexity into clarity
Configuration inheritance system for managing multi-level development environments
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.
- Getting Started
- Themes & Customization
- Cascading Dropdowns
- Configuration Schema
- Architecture
- Rollback System
- Privilege Separation
- Contributing
Supported Platforms
- macOS (Intel and Apple Silicon)
- Windows 10/11
- Linux (Ubuntu 20.04+, Debian, Fedora, RHEL)
- WSL2
Contributing
- Fork the repository
- Create a feature branch:
git checkout -b feature/my-feature - Make changes and test:
make test-all - Format code:
make format - Run CI checks:
make check - 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a9a84f16aefeac29cd9c60a557be35e83b86092c30ceff47afc90a592f3b3462
|
|
| MD5 |
88dc6b98f64d7222328de9c11b024990
|
|
| BLAKE2b-256 |
e8f73f9b3acc3098d6d1e3a0150544b97bd6c22e90e80130810208af49f97d14
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2ffe28cd40e4d706e10bf2a9447bdd5f9aef0a5d59addd0c71365c05e9e22cad
|
|
| MD5 |
0edf8b3866176abb52d49ee3905a7aa6
|
|
| BLAKE2b-256 |
309d847ebe130741f7bce32e4d73f87cb1d7a08af6a07cc075f604744b1bc260
|