de.NBI Service Registration Platform¶
A structured registration platform for de.NBI and ELIXIR-DE bioinformatics services — from initial submission through review and publication.
What it does¶
- Structured registration form
Sections for service identity, contact, technical details, EDAM annotations, publications, and KPIs. Validated at every step.
- bio.tools prefill
Paste a bio.tools URL to pre-populate form fields from the bio.tools database automatically.
- EDAM ontology integration
Tag services with EDAM Topic and Operation terms. Ontology is synced automatically from edamontology.org.
- REST API
Full CRUD access with token and API-key authentication. Interactive docs at /api/docs/ (Swagger UI) and /api/redoc/ (ReDoc). Machine-readable OpenAPI schema at /api/schema/.
- Admin portal
Review, approve, reject, and export submissions. Bulk actions, full audit trail, CSV and JSON export.
- Scoped API keys
Each submission gets a scoped key for future programmatic updates — read or read+write scope.
- Service logo upload
Attach a PNG, JPEG, or SVG logo to any service registration — via the web form, the edit form, or the REST API. Images are automatically sanitised (EXIF stripped, SVG scripts removed) before storage.
Quick start¶
git clone https://github.com/denbi/service-registry
cd service-registry
cp .env.example .env # set SECRET_KEY, DB_PASSWORD, REDIS_PASSWORD
make build # builds images + starts stack + runs migrations
make superuser
App at http://localhost:8000 — migrations and EDAM seeding run automatically on first start. See Development Setup for the full local guide.
cp .env.example .env # configure all production values
docker compose -f docker-compose.yml -f docker-compose.prod.yml up -d
docker compose exec web python manage.py collectstatic --noinput
docker compose exec web python manage.py createsuperuser
Migrations run automatically on container start. See Deployment for the full guide.
Documentation¶
Local environment, conda setup, Make targets, and the development workflow.
All site.toml and .env settings — branding, email, security, rate limits.
Production setup: Docker, TLS, nginx, EDAM seeding, backups, updates.
How to register a service, use the update form, and manage API keys.
Reviewing submissions, managing EDAM terms, bio.tools records, and email settings.
Endpoints, authentication schemes, filters, and curl examples.
System design, data model, Docker services, request lifecycle, and static assets.
Running the test suite, coverage targets, and adding new tests.
Full field-level reference for all models.
Release process, migrations, rollback, and upgrade runbook.
How to add or change model fields safely.
Adding a new Django app with API endpoints.
Stack¶
| Layer | Technology |
|---|---|
| Language | Python 3.12 |
| Framework | Django |
| API | Django REST Framework + drf-spectacular |
| Database | PostgreSQL |
| Cache / Broker | Redis |
| Task Queue | Celery + Celery Beat |
| Static Files | WhiteNoise |
| Frontend | Bootstrap 5 + HTMX + Tom Select |
| Container | Docker + Docker Compose |
| Reverse Proxy | Nginx (host-managed) |