Executable architecture rules

Keep your codebase in shape.

Enforce boundaries, module roles and function shape. Make your repository conventions executable.

pip install fensu
Get started Read the docs

Structure is a contract

config/
  • main/
  • _helpers/
  • models.py
  • types.py
A Python domain, with explicit roles

Turn review comments into rules.

Boundaries

Keep imports inside the layers you choose.

Module roles

Keep models, types and orchestration in their assigned modules.

Function shape

Keep orchestrators small and make dataflow explicit.

Adopt. Enforce. Understand.

Start with the defaults. Make the rules your own.

  1. Start with a structure

    fensu init --yes

    Adopt the defaults, then adapt the rules.

    Initialize a repository
  2. Keep it consistent

    fensu check

    Run the configured rules before changes land.

    Read your first findings
  3. See the call flow

    fensu map run_plan --depth 3

    Trace proven Python calls. Mark unresolved seams.

    Explore Python call maps

Keep the rules close to the code.

Review duplicated code

Ranked clusters across supported languages. Advisory, not a failing gate.

fensu dupes --since origin/main
Review duplicated code

Adapt the defaults. Add custom rules in Python.

Make architecture part of every change.

Open source · Apache-2.0 · Python 3.12+