de.NBI Service Registry¶
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.tomland.envsettings — 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 6.0 |
| 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) |