Architecture
Overview
Section titled “Overview”Bauhaus is a modern web application built with React that communicates with a backend services ecosystem to manage statistical metadata and documents.
Architecture Diagram
Section titled “Architecture Diagram”graph TB
Users[Users]
subgraph Frontend["Bauhaus Frontend (React)"]
React["React 18 + Redux<br/>TypeScript<br/>PrimeReact UI Components<br/>react-i18next"]
end
subgraph Backend["Bauhaus Back-Office API (Spring Boot)"]
SpringBoot["Spring Boot<br/>Spring Security + OAuth2<br/>REST Controllers"]
end
subgraph Security["Identity & Access Management"]
Keycloak["Keycloak (IAM)<br/>Authentication<br/>Authorization (SSO)<br/>User and role management<br/>OAuth2 / OpenID Connect"]
end
subgraph Storage["File Storage"]
MinIO["MinIO (Object Storage)<br/>File storage<br/>PDF documents, images, etc.<br/>S3-compatible API"]
end
subgraph Database["RDF Database"]
GraphDB["GraphDB<br/>Triple store<br/>Ontologies and reference data<br/>SPARQL Endpoint"]
end
subgraph Metadata["DDI Metadata"]
Colectica["Colectica Repository API<br/>DDI Lifecycle Manager<br/>Statistical metadata"]
end
Users -->|HTTPS| Frontend
Frontend -->|REST API / HTTP| Backend
Backend -->|OAuth2 / OIDC| Keycloak
Backend -->|SPARQL / RDF| GraphDB
Backend -->|S3 Protocol| MinIO
Backend -->|REST API| Colectica
style Users fill:#e1f5ff
style Frontend fill:#fff4e1
style Backend fill:#e8f5e9
style Keycloak fill:#fce4ec
style MinIO fill:#f3e5f5
style GraphDB fill:#e0f2f1
style Colectica fill:#fff9c4
Main Components
Section titled “Main Components”Frontend - Bauhaus
Section titled “Frontend - Bauhaus”React single-page application (SPA) that provides the user interface for managing statistical metadata.
Key Technologies:
- React 18 with Redux for state management
- TypeScript for type safety
- PrimeReact for UI components
- Vite as bundler
React Documentation | Redux Documentation
Backend - Spring Boot API
Section titled “Backend - Spring Boot API”REST API that orchestrates all backend services and exposes business functionalities.
Responsibilities:
- Orchestration of calls to different services
- Business logic
- Data validation and transformation
- Security management
Security - Keycloak
Section titled “Security - Keycloak”Identity and Access Management (IAM) server that secures the entire stack.
Features:
- Single Sign-On (SSO)
- User and role management
- OAuth2 and OpenID Connect protocols
- Identity federation
File Storage - MinIO
Section titled “File Storage - MinIO”S3-compatible object storage server for managing documents and files.
Use Cases:
- PDF document storage
- Images and graphics
- Data files
- Amazon S3-compatible API
RDF Database - GraphDB
Section titled “RDF Database - GraphDB”Triple store for storing and querying semantic data.
Use Cases:
- Ontology storage
- Metadata reference data
- Semantic relationships
- SPARQL queries
DDI Metadata - Colectica Repository
Section titled “DDI Metadata - Colectica Repository”Statistical metadata manager based on the DDI (Data Documentation Initiative) standard.
Features:
- Metadata lifecycle management
- DDI Lifecycle standard support
- Metadata versioning
- REST API for programmatic access
Colectica Documentation | DDI Standard
Data Flows
Section titled “Data Flows”Authentication
Section titled “Authentication”- User accesses Bauhaus Frontend
- Redirect to Keycloak for authentication
- Keycloak validates credentials and issues a JWT token
- Frontend stores the token and sends it with each API request
- Spring Boot backend validates the token with Keycloak
Metadata Retrieval
Section titled “Metadata Retrieval”- Frontend makes a REST request to the backend
- Backend queries:
- GraphDB for reference data and classifications (via SPARQL)
- Colectica for DDI metadata (via REST API)
- Backend aggregates and transforms the data
- JSON response returned to the frontend
Document Management
Section titled “Document Management”- Document upload from the frontend
- Backend validates and processes the file
- File storage in MinIO via S3 API
- Document metadata stored in GraphDB
- Reference returned to the frontend
Learn More
Section titled “Learn More”- Getting Started - Developer getting started guide
- Colectica Integration - Colectica Repository integration
- Bauhaus Back-Office - Backend GitHub repository