Documentation
System overview
OpenDDE follows a hub-and-spoke architecture. The FastAPI backend acts as the hub, orchestrating requests between the frontend, three computational microservices, a cache layer, and external APIs.
Request lifecycle
Every user action follows this path:
- Frontend (Next.js) makes an API call to the backend
- Backend checks the in-memory cache (1h TTL, 200 max entries)
- On cache miss, the backend routes to the appropriate service:
- P2Rank for pocket prediction
- RDKit for molecular properties
- ImmuneBuilder for antibody structures
- External APIs (ChEMBL, UniProt, AlphaFold DB) for data
- Backend stores results in Supabase (PostgreSQL) for persistence
- Backend caches the response and returns it to the frontend
Internal communication
All inter-service communication uses HTTP/REST over the Docker Compose internal network. Services reference each other by container name (e.g., http://p2rank:5001).
External dependencies
| Service | Used for | Required? |
|---|---|---|
| Supabase | Persistent storage | Yes |
| UniProt API | Protein data & sequences | Yes |
| AlphaFold DB | Predicted structures | Yes |
| ChEMBL API | Ligand bioactivity data | Yes |
| Anthropic API | AI assistant | Optional |
| Open Targets | Safety profiles | Optional |