Project Tree & Guide¶
A guided map of the Bijux CLI repository: what lives where, and why.
Table of Contents¶
- At a Glance
- Top-Level Files
- Dotfiles & CI/CD
- Source Code
- Commands
- Services
- Contracts
- Core
- Infra
- Root Modules
- API Schema
- Documentation Site
- Configuration
- Build & Automation
- Plugin Template
- Tests
- Packaging & Tooling
- Licensing & Governance
- Changelog & Releases
At a Glance¶
.
├── api/ # OpenAPI schemas
├── config/ # Lint/type/security configs
├── docs/ # MkDocs site (Material theme)
├── makefiles/ # Makefile modules for tasks
├── plugin_template/ # Cookiecutter-compatible plugin scaffold
├── scripts/ # Helper scripts (hooks, docs generation)
├── src/bijux_cli/ # Library + CLI implementation
├── tests/ # Unit, integration, functional, E2E
└── .github/workflows/ # CI/CD pipelines (GitHub Actions)
Top-Level Files¶
README.md
— overview and quickstartUSAGE.md
— user guideTESTS.md
— testing philosophy & how to run testsPROJECT_TREE.md
— this guided map (mirrorsdocs/project_tree.md
for the site)SECURITY.md
,CODE_OF_CONDUCT.md
,CONTRIBUTING.md
— community & policyCHANGELOG.md
,changelog.d/
— release notes + fragmentspyproject.toml
,tox.ini
,pytest.ini
— packaging & test configmkdocs.yml
— docs site configLICENSES/
— MIT and CC0 textsCITATION.cff
— citation metadataREUSE.toml
— REUSE licensing complianceMakefile
— task entrypoint (delegates tomakefiles/
)
Dotfiles & CI/CD¶
Hidden files/directories that govern editor behavior, linting, hooks, and pipelines.
.
├── .editorconfig
├── .gitattributes
├── .gitignore
├── .gitlab-ci.yml
├── .pre-commit-config.yaml
└── .github/
└── workflows/
├── ci.yml # tests, lint, type-check, security, build
└── docs.yml # docs build/deploy
Pre-commit (recommended):
pipx install pre-commit || python -m pip install -U pre-commit
pre-commit install
pre-commit run --all-files
Source Code¶
Path: src/bijux_cli/
— CLI entrypoints, DI kernel, services, contracts, and infrastructure.
src/bijux_cli/
├── __init__.py
├── __main__.py # python -m bijux_cli
├── __version__.py
├── api.py # HTTP API wiring (if enabled)
├── cli.py # Typer root app (entrypoint)
├── httpapi.py # HTTP server endpoints
├── commands/ # User-facing commands
├── services/ # Business logic implementations
├── contracts/ # Typed interfaces (protocols)
├── core/ # Engine, DI, enums, exceptions, paths
└── infra/ # Emitters, serializers, telemetry, retry, process
py.typed
files (PEP 561) are included across packages to advertise type completeness.
Commands¶
End-user commands and subcommands. Each file is a Typer command module.
reference/commands/index.md
├── audit.py docs.py doctor.py help.py repl.py sleep.py
├── status.py utilities.py version.py
├── config/ # clear/export/get/list_cmd/load/reload/service/set/unset
├── dev/ # di/list_plugins/service
├── history/ # clear/service
├── memory/ # clear/delete/get/list/service/set/utils
└── plugins/ # check/info/install/list/scaffold/uninstall/utils
- Top-level commands: operational functions (
doctor
,status
,audit
, …). - Namespace commands group related operations and include a
service.py
adapter.
Services¶
Concrete implementations behind commands. Orchestrate work, depend on contracts
and infra
.
src/bijux_cli/services/
├── audit.py config.py docs.py doctor.py
├── history.py memory.py utils.py
└── plugins/ (entrypoints.py, groups.py, hooks.py, registry.py)
Contracts¶
Typed interfaces (protocols/ABCs) consumed by services — clean DI seams.
src/bijux_cli/contracts/
audit.py config.py context.py docs.py doctor.py emitter.py
history.py memory.py observability.py process.py registry.py
retry.py serializer.py telemetry.py
Core¶
Framework plumbing: engine loop, DI kernel, exceptions, enums, and path helpers.
Infra¶
Foundational adapters/utilities used across services.
Root Modules¶
cli.py
— Typer app creation and command registrationapi.py
/httpapi.py
— HTTP API composition (if used)__main__.py
— module entry (python -m bijux_cli
)__version__.py
— central version string
API Schema¶
Source of truth for the public HTTP API (if enabled). Used for validation and documentation.
Documentation Site¶
MkDocs (Material) site; build with make docs-serve
/ mkdocs build
.
docs/
├── index.md # Home (wraps README)
├── usage.md # User Guide (wraps USAGE)
├── tests.md # Testing overview (wraps TESTS.md)
├── project_tree.md # This guide (wraps PROJECT_TREE.md)
├── changelog.md # Wraps CHANGELOG.md
├── security.md # Wraps SECURITY.md
├── contributing.md # Wraps CONTRIBUTING.md
├── code_of_conduct.md # Wraps CODE_OF_CONDUCT.md
├── license.md # Wraps LICENSES/MIT.txt
├── community.md # Community landing (overview page)
├── ADR/ # Architecture Decision Records
├── assets/ # Logos, CSS (Material overrides in assets/styles/extra.css)
├── overrides/ # Jinja2 overrides for Material theme
└── nav.md # Generated by helper script
scripts/helper_mkdocs.py
generates API reference pages and the full navigation at build time.
Configuration¶
Centralized tool configs:
config/
├── bijux.dic # custom dictionary
├── mypy.ini # type checking
├── pyrightconfig.json # pyright settings
├── ruff.toml # lint rules (ruff)
├── coveragerc.ini # coverage config
├── cosmic-ray.toml # mutation testing
└── README.md # notes about configs
Build & Automation¶
Makefile modules
makefiles/
api.mk build.mk changelog.mk citation.mk dictionary.mk
docs.mk hooks.mk lint.mk mutation.mk publish.mk quality.mk
sbom.mk security.mk test.mk
Helper scripts
scripts/
├── helper_mkdocs.py # generates docs nav + API reference
├── helper_comments.py # doc/comment utilities
├── check-towncrier-fragment.sh # changelog fragments guard
├── git-hooks/prepare-commit-msg # conventional commit assist
└── README.md
Plugin Template¶
Cookiecutter-ready skeleton for third-party plugins.
plugin_template/
├── README.md __init__.py cookiecutter.json pyproject.toml
└── {{cookiecutter.project_slug}}/
├── __init__.py
├── plugin.json
└── plugin.py
plugin.json
— plugin metadata & entry pointsplugin.py
— plugin’s main module
Tests¶
Four layers: unit, integration, functional, E2E. See also docs/tests.md and the repo file: https://github.com/bijux/bijux-cli/blob/main/TESTS.md.
tests/
├── unit/ # Fast, isolated component tests
├── integration/ # Subsystem wiring, DI, flows
├── functional/ # User-facing behavior/flags/output
└── e2e/ # Full CLI runs + fixtures
Highlights:
e2e/test_fixtures/
— JSON/YAML expected outputs (shape tests)- Namespaced E2E (e.g.,
plugins/
,repl/
,history/
) mirror command areas - Root tests (
unit/root/
) cover entry points:__main__
,cli
,api
,httpapi
Run examples:
Packaging & Tooling¶
pyproject.toml
— build system, dependencies, entry pointstox.ini
— matrix/env automationpytest.ini
— Pytest defaultspackage.json
,package-lock.json
— optional JS tooling for docs/assetsREUSE.toml
— REUSE licensing compliance
Licensing & Governance¶
LICENSES/
— MIT and CC0 textsCODE_OF_CONDUCT.md
— community guidelinesCONTRIBUTING.md
— how to contributeSECURITY.md
— vulnerability reporting policyCITATION.cff
— citation metadata
Changelog & Releases¶
CHANGELOG.md
— curated release noteschangelog.d/
— fragment files (Towncrier-style)- CI enforces fragment presence for PRs (see
scripts/check-towncrier-fragment.sh
)
Tip: New to the codebase? Start at reference/cli.md
, jump to the command under reference/commands/index.md
, then follow into its corresponding service and contract.