Skip to content

Technologies & stack

Replaces an outdated description

The previous version of this page described an AngularJS + Bootstrap 3 + jQuery-widget frontend from TRAPPER v1. None of that is current — the stack below was verified directly against each module's dependency manifests.

TRAPPER is four independently deployable services (see Ecosystem) sharing a small set of architectural choices.

Trapper Expert (this module)

Layer Technology
Web framework Django 5.1, Django REST Framework
Admin UI Unfold — a modern Tailwind-based theme for the Django admin, replacing the stock admin
Database PostgreSQL with PostGIS (spatial) and TimescaleDB (required — backs the ObjectFrameObservation hypertable, see Frame timeseries)
Async tasks Celery workers + beat, RabbitMQ as broker
Caching Memcached
Chunked uploads A dedicated FastAPI service (trapper_uploader), used by both trapper-tools and the Citizen Science frontend
Bulk file transfer Pure-FTPd (FTPS), bridged to Trapper accounts
Static/media serving Nginx, fronted by Traefik in production deployments
API docs drf-yasg — Swagger UI at /docs/api/, ReDoc at /docs/api/redoc/
Cloud storage django-storages (Azure / Amazon S3 / S3-compatible)
Data export polars + camtrap-package + frictionless[parquet] for Camtrap DP packages

Trapper AI Manager

Also Django 5.1 + DRF — a separate Django project (separate database, separate admin) dedicated to orchestrating prediction jobs: registering PredictionModel/AIRuntime rows from the trapper-schemas manifest, batching resources, and dispatching to the AI Worker over Celery.

Trapper AI Worker

A host-level Coordinator + Runtimes architecture, not a single monolithic service:

  • The coordinator (trapperai-coordinator) is a host process — not a container — so it can autodetect and access GPU/Hailo hardware directly. Installed via a uv-managed tool venv (package trapperai-core) and run as a systemd user unit. Exposes a small FastAPI + Uvicorn API and consumes jobs via Celery.
  • Runtimes are the actual model-execution packages (e.g. trapperai-trackers, trapperai-trackers-ultralytics, trapperai-predictors-torch-depth, trapperai-predictors-hailo-depth) — installed and selected based on detected hardware.

See AI pipeline architecture for how the three services interact end to end.

Citizen Science frontend

Angular 17 in an Nx monorepo (trapper-frontend) — libraries for classification, annotation (resource-annotator), hotkeys, and the upload/dashboard UI are split into separately buildable Nx packages rather than one flat Angular app.

Trapper Tools

A Python CLI (separate repository) for converting, packaging, and uploading camera-trap data — see Convert, package & upload with Trapper-Tools.

Deployment

The whole ecosystem is orchestrated by trapper-setup — Docker Compose for the containerized services, Traefik for SSL/routing in production, and the host-level AI Worker coordinator installed alongside. See Architecture for the full service/port table and Deploy with trapper-setup for the procedure.