docs: add AGENTS.md and rewrite readme

This commit is contained in:
ponas committed 2026-11-03 03:52:52 +01:00
1 parent 7cd4b5dfc6
commit 8f58d7fcf9
2 files changed
+45 -11

No files matched your search

+30
View File
@@ -0,0 +1,30 @@
# AGENTS.md
REST API (Django + django-ninja) for managing the virtual domains, users and aliases that Postfix and Dovecot read
from the database. Deployed as mxapi.neuf.no.
## Setup and commands
Tools are managed by [mise](https://mise.jdx.dev) (Python, uv, prek) and Python deps by uv.
```sh
mise install # Python, uv, prek
uv sync # deps + dev tools
prek install # git hooks
uv run pytest # tests, must keep 100% coverage
prek run --all-files # ruff check, ruff format and file hygiene hooks
```
## Rules
- Use [Conventional Commits](https://www.conventionalcommits.org/) for commit messages, e.g.
`feat: add alias search`, `fix(api): reject unknown domains`, `chore(deps): bump django`.
- Postfix and Dovecot query the `dpdapi_domain`, `dpdapi_alias` and `dpdapi_user` tables directly. Never rename
tables or columns, or change how values are stored (addresses are lowercased, passwords are SHA-512 crypt).
`tests/test_schema.py` guards this.
- Django stays on 5.2 LTS (and Python 3.14) until lynx has MySQL 8.4, which Django 6 requires.
- [mailadmin](https://git.neuf.no/edb/mailadmin) is the main API client. Don't change URLs, status codes or response fields it relies on;
`tests/test_mailadmin_contract.py` replays its calls.
- Test the API through HTTP in `tests/`, using pytest and the fixtures in `tests/conftest.py`.
- Keep coverage at 100%; `pytest` fails below it.
- Production-only deps (`gunicorn`, `mysqlclient`) live in the `prod` dependency group.
+15 -11
View File
@@ -1,14 +1,18 @@
# Install
apt install python-dev libmysqlclient-dev python-virtualenv
python -m venv venv
. venv/bin/activate
pip install -r requirements.txt
# django-postfix-dovecot-api
# Deploy
First you need to have your public key in `/home/gitdeploy/.ssh/authorized_keys` on the server and then you can do:
REST API for managing the virtual domains, users and aliases that Postfix and Dovecot read from the database.
Used by [mailadmin](https://git.neuf.no/edb/mailadmin).
fab deploy
## Development
# Inspiration:
- http://modoboa.readthedocs.org/
- https://github.com/lgunsch/django-vmail
```sh
mise install
uv sync
prek install
uv run python manage.py migrate
uv run python manage.py runserver
uv run pytest
```
API docs are served at `/api/docs`. Override settings (database, secret key, Sentry) in
`dpdapisite/local_settings.py`.