Container Diagram
Container Diagram
- Introduction
- Unicorn (Application Component)
- Google Drive (Application Component)
- Google Identity (Application Component)
- Auth0 (Application Component)
- MADR Tools (Application Function)
- Ionos (Application Component)
- Github (Application Component)
- Google Gemini (Application Component)
- Pusher (Application Component)
Introduction
System architecture for the Unicorn project, which follows a Frontend/Backend pattern. The Frontend uses an Ionic framework with React (cf. ADR 0013-frontend-framework) and integrates Auth0 for secure user authentication via Authorization Code Flow with PKCE. It connects to Google Identity to obtain access tokens, enabling access to Google Drive for file storage and management.
The Backend consists of:A Backend for Frontend (BFF) implemented using Express (cf. ADR 0015-backend-framework) to interact with Google Drive via APIs. A File Process microservice, implemented with FastAPI, to process Markdown files. The system also supports a Static Website, built with Hugo, to display project documentation, Archimate diagrams, and Architecture Decision Records (ADRs). Processed Markdown files are pushed to a GitHub repository via API, ensuring version control. MADR Tools facilitate the creation and management of ADRs.
Unicorn (Application Component)
Properties
| Stereotype |
|---|
| System Software |
Relationships
| From | Relationship | To | Name/Label | Description |
|---|---|---|---|---|
| Unicorn | Composition Relationship | Frontend (Application Component) | ||
| Unicorn | Composition Relationship | Backend (Application Component) | ||
| Unicorn | Composition Relationship | Static Website (Application Component) | ||
| Unicorn | Composition Relationship | File Process (Application Component) | ||
| Unicorn | Composition Relationship | File Publish (Application Component) |
Handles the import, conversion, and publication of architecture artifacts.
Components Diagram (Archimate Diagram Model)
Backend for Frontend (BFF) architecture that facilitates secure access to Google Drive and integrates with GitHub for file management. The BFF handles user authentication via Google Identity to interact with Google Drive APIs for listing, updating, and downloading files. A File Process Microservice asynchronously processes Markdown files using a Pub/Sub mechanism and pushes the processed files to GitHub for version control. The architecture ensures separation of concerns, secure access, and scalability for file processing and artifact storage.
Frontend (Application Component)
Properties
| Stereotype | Github |
|---|---|
| Container | https://github.com/mickael-royer/unicorn-frontend |
Relationships
| From | Relationship | To | Name/Label | Description |
|---|---|---|---|---|
| Frontend | Assignment Relationship | React (Application Function) | ||
| Frontend | Assignment Relationship | Ionic (Application Function) | ||
| Frontend | Triggering Relationship | Auth0 (Application Component) | OIDC | Authorization Code Flow with PKCE https://auth0.com/docs/get-started/authentication-and-authorization-flow/authorization-code-flow-with-pkce |
| Frontend | Triggering Relationship | Backend (Application Component) | List Drive |
Frontend based on Ionic and Auth0 authentication
React (Application Function)
Properties
| Stereotype |
|---|
| Component |
Ionic (Application Function)
Properties
| Stereotype |
|---|
| Component |
Backend (Application Component)
Properties
| Stereotype | Github |
|---|---|
| Container | https://github.com/mickael-royer/unicorn-backend |
Relationships
| From | Relationship | To | Name/Label | Description |
|---|---|---|---|---|
| Backend | Assignment Relationship | Express (Application Function) | ||
| Backend | Triggering Relationship | Google Drive (Application Component) | REST API | Access Google Drive via API |
| Backend | Triggering Relationship | Google Identity (Application Component) | REST API | Get Access Token via API |
| Backend | Flow Relationship | File Process (Application Component) |
Backend for Frontend (BFF) to support Google Drive acces.
Express (Application Function)
Properties
| Stereotype | URL |
|---|---|
| Component | https://expressjs.com |
Express is a fast, unopinionated, minimalist web framework for Node.js, providing a robust set of features for web and mobile applications.
Static Website (Application Component)
Properties
| Stereotype | Github |
|---|---|
| Container | https://github.com/mickael-royer/unicorn-hugo-website |
Relationships
| From | Relationship | To | Name/Label | Description |
|---|---|---|---|---|
| Static Website | Assignment Relationship | Hugo (Application Function) |
Website to support Project Documentation, Archimate and Architecture Decision Record repositories
Hugo (Application Function)
Properties
| Stereotype | URL |
|---|---|
| Component | https://gohugo.io/ |
File Process (Application Component)
Properties
| Stereotype |
|---|
| Container |
Relationships
| From | Relationship | To | Name/Label | Description |
|---|---|---|---|---|
| File Process | Assignment Relationship | FastAPI (Application Function) | ||
| File Process | Triggering Relationship | File Publish (Application Component) | ||
| File Process | Triggering Relationship | Pusher (Application Component) | REST API |
Microservice to process and enhance Markdown file
FastAPI (Application Function)
Properties
| Stereotype | URL |
|---|---|
| Component | https://fastapi.tiangolo.com/ |
FastAPI is a modern, fast (high-performance), web framework for building APIs with Python based on standard Python type hints.
File Publish (Application Component)
Properties
| Stereotype |
|---|
| Container |
Relationships
| From | Relationship | To | Name/Label | Description |
|---|---|---|---|---|
| File Publish | Assignment Relationship | Gorilla Mux (Application Function) | ||
| File Publish | Triggering Relationship | Github (Application Component) | Push | Push change to repository via API |
| File Publish | Triggering Relationship | Google Gemini (Application Component) | Prompt | Generate ADR Synthesis |
Microservice to publish Markdown file
Gorilla Mux (Application Function)
Properties
| Stereotype | URL |
|---|---|
| Component | https://github.com/gorilla/mux |
Package gorilla/mux implements a request router and dispatcher for matching incoming requests to their respective handler.
Google Drive (Application Component)
Properties
| Stereotype | Provider | URL |
|---|---|---|
| System Software | https://drive.google.com |
Stores files for further processing, with secure access through Google AuthN.
Google Identity (Application Component)
Properties
| Stereotype | Provider | URL |
|---|---|---|
| System Software | https://developers.google.com/identity |
Auth0 (Application Component)
Properties
| Stereotype | Provider | URL |
|---|---|---|
| System Software | Okta | https://auth0.com/ |
Relationships
| From | Relationship | To | Name/Label | Description |
|---|---|---|---|---|
| Auth0 | Triggering Relationship | Google Identity (Application Component) | AuthN |
Manages secure user authentication and access control.
MADR Tools (Application Function)
Properties
| Stereotype | Github |
|---|---|
| Component | https://github.com/butonic/adr-tools |
Relationships
| From | Relationship | To | Name/Label | Description |
|---|---|---|---|---|
| MADR Tools | Triggering Relationship | Static Website (Application Component) | Push MADR |
Markdown Architecture Decision Record Tools
Ionos (Application Component)
Properties
| Stereotype | Provider | URL |
|---|---|---|
| System Software | Ionos | https://www.ionos.fr/ |
Relationships
| From | Relationship | To | Name/Label | Description |
|---|---|---|---|---|
| Ionos | Flow Relationship | Frontend (Application Component) |
DNS domain and SSL Provider
Github (Application Component)
Properties
| Stereotype | URL | Registry |
|---|---|---|
| System Software | https://github.com/mickael-royer | https://github.com/mickael-royer?tab=packages |
Relationships
| From | Relationship | To | Name/Label | Description |
|---|---|---|---|---|
| Github | Triggering Relationship | Static Website (Application Component) | Deploy | Deploy Hugo Website to Static Web App |
Code and Artefact repository with version control.
Google Gemini (Application Component)
Properties
| Stereotype | URL |
|---|---|
| System Software | https://aistudio.google.com/ |
LLM
Pusher (Application Component)
Properties
| Stereotype | URL |
|---|---|
| System Software | https://dashboard.pusher.com/apps/1920401 |
Relationships
| From | Relationship | To | Name/Label | Description |
|---|---|---|---|---|
| Pusher | Triggering Relationship | Frontend (Application Component) | Webb Socket |
Cross-platform API for native programmatic push notifications.