Architecture
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
graph TB
Users[Users]
subgraph Frontend["Bauhaus Frontend (React)"]
React["React 18 + Redux
TypeScript
PrimeReact UI Components
react-i18next"]
end
subgraph Backend["Bauhaus Back-Office API (Spring Boot)"]
SpringBoot["Spring Boot
Spring Security + OAuth2
REST Controllers"]
end
subgraph Security["Identity & Access Management"]
Keycloak["Keycloak (IAM)
Authentication
Authorization (SSO)
User and role management
OAuth2 / OpenID Connect"]
end
subgraph Storage["File Storage"]
MinIO["MinIO (Object Storage)
File storage
PDF documents, images, etc.
S3-compatible API"]
end
subgraph Database["RDF Database"]
GraphDB["GraphDB
Triple store
Ontologies and reference data
SPARQL Endpoint"]
end
subgraph Metadata["DDI Metadata"]
Colectica["Colectica Repository API
DDI Lifecycle Manager
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
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
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
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
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
Triple store for storing and querying semantic data.
Use Cases:
- Ontology storage
- Metadata reference data
- Semantic relationships
- SPARQL queries
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
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
- 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
- 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
- Getting Started - Developer getting started guide
- Colectica Integration - Colectica Repository integration
- Bauhaus Back-Office - Backend GitHub repository