Platform overview
The GDI User Portal is a distributed system composed of multiple independent services working together to provide dataset discovery and access management capabilities.
Architecture at a glance
For detailed architecture diagrams and component interactions, see: GDI application architecture.
Core components
User-facing layer
- Frontend (Next.js): React-based web application providing the user interface
- TypeScript, Next.js 14, TailwindCSS
- Server-side rendering (SSR) for performance
- Responsive design for mobile and desktop
API layer
- Kong Gateway: API gateway handling routing, authentication, and rate limiting
- Routes requests between frontend and backend services
- Enforces security policies
- Provides observability through logging
Backend services (Java/Quarkus)
-
Dataset Discovery Service (DDS): Mediates frontend requests to CKAN
- REST API for dataset search and retrieval
- Transforms CKAN responses to frontend-friendly format
- Implements business logic for dataset filtering
-
Access Management Service (AMS): Manages access request workflows
- Integrates with REMS for application management
- Tracks application status and approvals
- Provides notification capabilities
Data catalogue
- CKAN: Open-source data catalogue system
- PostgreSQL database for metadata storage
- Solr for full-text search
- Custom GDI extensions make it possible to support DCAT-AP 3 and HealthDCAT
- Harvester extensions for collecting external datasets
Supporting services
-
Keycloak: Identity and access management (IAM)
- OpenID Connect (OIDC) authentication
- Integration with LS-AAI federated login
- PKCE flow support for secure authentication
-
REMS: Resource Entitlement Management System
- Access request workflow engine
- Application approval processes
- Integration via REST API
-
FAIR Data Point (FDP): Metadata repository
- Implements FAIR principles
- Provides harvestable metadata endpoints
- DCAT-AP compatible outputs
Technology stack
| Component | Technology | Language |
|---|---|---|
| Frontend | Next.js 14 | TypeScript |
| DDS/AMS | Quarkus | Java 17+ |
| CKAN | CKAN 2.11.3 | Python 3.9+ |
| API Gateway | Kong | Lua/Docker |
| Database | PostgreSQL 14+ | SQL |
| Search | Apache Solr 8+ | - |
| Cache | Redis 7+ | - |
| IAM | Keycloak 22+ | - |
Next steps
Now that you understand the platform, learn about repository structure to find where code lives.