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:

  • Centralized tool registry -- Tools defined once in tool-registry.yaml with per-platform install/uninstall commands; child configs reference tools by name only
  • Configuration inheritance -- Define once at company level, override per team
  • Multi-level hierarchies -- Support structures from flat (startups) to 5+ levels (enterprise)
  • Web UI -- Tool selection with categories (Core, Editor, Containers, Runtime, Cloud, Kubernetes, CLI), inline validation, hover tooltips, platform-aware filtering, cancel/retry flow
  • CLI tools -- prism install, prism rollback, prism history -- scriptable, automatable, CI/CD friendly
  • NPM distribution -- Packages published to npm, no custom infrastructure needed
  • Validation -- Config engine validates tool registry (install + uninstall), tool references, and email patterns from YAML
  • Smart merging -- Deep-merge with configurable strategies (union, override, append)
  • Installation rollback -- .prism_rollback.json manifest persisted on install; prism rollback <workspace> reverses all actions
  • Privilege separation -- Two-phase install with sudo session management
  • No generic fallbacks -- Tools without explicit platform install commands are skipped

Quick Start

Install from PyPI

pip install prism-dx
prism ui            # Launch the web installer
prism install       # Or install directly from CLI

Install from source

git clone https://github.com/andersonwilliam85/prism.git
cd prism
make install-dev
make run            # Opens at http://localhost:5555

See Getting Started for the full guide.


Features

Web UI Installer

  • Tool selection page with categories (Core, Editor, Containers, Runtime, Cloud, Kubernetes, CLI)
  • Hover tooltips for tool descriptions
  • Platform-aware filtering (tools without install commands for your OS are hidden)
  • Inline validation (no alerts)
  • 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
  • Environment management on landing page
  • Cancel/retry flow
  • Rollback button

Tool Registry

Tools are defined once in a centralized tool-registry.yaml. Each tool specifies:

  • label, summary, description -- for the UI
  • category -- core, editor, containers, runtime, cloud, kubernetes, cli
  • platforms -- per-OS install commands (mac, ubuntu, linux, windows)
  • uninstall -- per-OS uninstall commands (used by rollback)

Child configs reference tools by string name only (e.g., - git). Tools without explicit install commands for the current platform are skipped -- no guessing.

Starter Packages

8 starter packages ship in the prisms/ directory:

Prism Use Case Hierarchy Scale
prism Default -- solo developers Flat 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
cli-test-prism CLI testing fixture Flat Testing

Installation Safety

  • Rollback -- Every install persists a .prism_rollback.json manifest. prism rollback <workspace> reverses all actions. The UI also has a rollback button. Rollback engine at prism/engines/rollback_engine.py.
  • Privilege separation -- Normal operations run first. Privileged steps (tool installs from the registry) require explicit sudo approval in a separate phase.
  • Sudo sessions -- Cryptographic tokens with 15-minute TTL and 3-attempt lockout.

Installation History

prism history

Scans for previous installations. Also available via the /api/history endpoint.


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, installation_engine, rollback_engine
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
CLI Click commands install, rollback, history, packages, ui

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 (590+ test functions)
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 (590+ test functions)
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. Pre-commit hooks enforce isort, black, flake8, and pytest.


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

Pre-commit hooks run isort, black, flake8, and pytest on every commit. All must pass.

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.2.0b4.tar.gz (1.4 MB 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.2.0b4-py3-none-any.whl (756.9 kB view details)

Uploaded Python 3

File details

Details for the file prism_dx-0.2.0b4.tar.gz.

File metadata

  • Download URL: prism_dx-0.2.0b4.tar.gz
  • Upload date:
  • Size: 1.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for prism_dx-0.2.0b4.tar.gz
Algorithm Hash digest
SHA256 89113cae116e3eadb2a08907eabbd4c70518f00402e9d1af6342d7c4271993c5
MD5 3129f277f520163717334c95696e3a6b
BLAKE2b-256 538dfd215e958365274754452dbfac46eeb932016319da729313eba55e723c6c

See more details on using hashes here.

File details

Details for the file prism_dx-0.2.0b4-py3-none-any.whl.

File metadata

  • Download URL: prism_dx-0.2.0b4-py3-none-any.whl
  • Upload date:
  • Size: 756.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for prism_dx-0.2.0b4-py3-none-any.whl
Algorithm Hash digest
SHA256 b022544eedb7552a402628d6e772c9054ffba96711ba9e94bbb42bc162a365b7
MD5 ad3d82dbd4fb4de9077c2af847ffb151
BLAKE2b-256 18b5fb5e8bc2d0097b13132a4c3f658328d94fab0f97f50981afaf23ead3d3f5

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