Metadata-Version: 2.4
Name: lowbono
Version: 0.1.0rc1
Summary: A reusable pro-bono / low-bono professional-referral engine for Django.
Project-URL: Homepage, https://github.com/dcrefers/lowbono
Project-URL: Documentation, https://github.com/dcrefers/lowbono
Project-URL: Source, https://github.com/dcrefers/lowbono
Project-URL: Changelog, https://github.com/dcrefers/lowbono/blob/main/CHANGELOG.md
Project-URL: Issues, https://github.com/dcrefers/lowbono/issues
Author: DCRefers
License: AGPL-3.0-only
License-File: LICENSE
Keywords: access-to-justice,django,joeflow,legal-aid,pro-bono,referral
Classifier: Development Status :: 4 - Beta
Classifier: Framework :: Django
Classifier: Framework :: Django :: 5.0
Classifier: Framework :: Django :: 5.1
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Legal Industry
Classifier: License :: OSI Approved :: GNU Affero General Public License v3
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
Requires-Python: >=3.11
Requires-Dist: beautifulsoup4
Requires-Dist: celery>=5
Requires-Dist: crispy-bootstrap5
Requires-Dist: django-bootstrap5
Requires-Dist: django-celery-beat
Requires-Dist: django-celery-results
Requires-Dist: django-ckeditor-5
Requires-Dist: django-crispy-forms
Requires-Dist: django-htmx
Requires-Dist: django-localflavor
Requires-Dist: django-modeltranslation
Requires-Dist: django-nested-admin
Requires-Dist: django-phonenumber-field[phonenumbers]
Requires-Dist: django-simple-history
Requires-Dist: django<5.2,>=5.0
Requires-Dist: html-sanitizer
Requires-Dist: joeflow[celery,reversion]==1.4.0
Requires-Dist: pillow
Requires-Dist: redis
Provides-Extra: allauth
Requires-Dist: django-allauth; extra == 'allauth'
Provides-Extra: anymail
Requires-Dist: django-anymail; extra == 'anymail'
Provides-Extra: llm
Requires-Dist: openai; extra == 'llm'
Requires-Dist: presidio-analyzer==2.2.354; extra == 'llm'
Requires-Dist: presidio-anonymizer==2.2.354; extra == 'llm'
Description-Content-Type: text/markdown

# lowbono

A reusable, pip-installable Django library — the **referral engine** behind a
pro-bono / low-bono / nominal-fee professional-referral portal. It provides users
& professionals, referrals, a practice-area taxonomy, income-eligibility
screening, an admin-configurable email/notification engine driven by a
[Joeflow](https://joeflow.readthedocs.io/) workflow base, an optional LLM
categorizer, and a **pluggable-profession framework** that lets you add your own
professional types without touching core.

It is tailor-made for the legal-justice-access domain — not a generic CRM.

## Install

```bash
pip install lowbono
```

Optional extras: `lowbono[llm]` (OpenAI + Presidio categorizer),
`lowbono[allauth]` (Google-OAuth adapter), `lowbono[anymail]` (email backends).

## Quickstart

1. Define a concrete `User(BaseUser)` and set `AUTH_USER_MODEL`.
2. Add the engine + its dependencies to `INSTALLED_APPS` (ordering matters).
3. Register at least one profession plug-in in `LOWBONO_PROFESSIONAL_APPS`.
4. Include `lowbono.urls` and `lowbono.urls_professions`.
5. `migrate`, then `python manage.py lowbono_preflight` and `lowbono_seed_demo`.

See the [documentation](docs/index.md) for the full walkthrough, the settings
reference, the profession-plugin guide, and the frozen public-API contract.

## Design principles

- **Concrete engine, abstract identity** — only `User`/`Professional` are abstract.
- **Explicit contract over convention** — professions declare identity via
  `AppConfig` attributes, never inferred from app-name strings.
- **Settings-driven, registry-based** — no hardcoded app labels or URL names.
- **Override, don't fork** — every template/view/form/admin/string is overridable.

## Support matrix

Python 3.11–3.13 · Django 5.0–5.1 · Joeflow 1.4.0. US-centric defaults are all
settings-overridable. The taxonomy's content-translation columns are fixed at en/es
for 0.1; UI strings are translatable and supplied per project — see
[Internationalization](docs/i18n.md).

## Development

```bash
export UV_PROJECT_ENVIRONMENT=~/.venvs/lowbono   # keep venvs outside the repo
uv sync
make ci        # lint-leakage + migration-check + tests + wheel-contents
```

See [CONTRIBUTING.md](CONTRIBUTING.md).

## License

[AGPL-3.0-only](LICENSE). See [docs/license.md](docs/license.md) and the
[proprietary-boundary doc](docs/boundary.md) for what adopters may keep
proprietary.
