Components Diagram
Components Diagram
- Introduction
- Backend (Application Component)
- List Files (Application Interface)
- Update File Extension (Application Interface)
- Download File (Application Interface)
- File Process (Application Component)
- Process File (Application Interface)
- Auth Google (Application Interface)
- Google Identity (Application Component)
- Google Drive (Application Component)
- Push File (Application Interface)
- Github (Application Component)
- Frontend (Application Component)
- Drive Component (Application Function)
- Static Website (Application Component)
- ADR (Application Function)
- File Publish (Application Component)
- Google Gemini (Application Component)
- Pusher (Application Component)
Introduction
![Components Diagram][embedView]
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.
Backend (Application Component)
Properties
| Stereotype | Github |
|---|---|
| Container | https://github.com/mickael-royer/unicorn-express-server |
Relationships
| From | Relationship | To | Name/Label | Description |
|---|---|---|---|---|
| Backend | Aggregation Relationship | List Files (Application Interface) | ||
| Backend | Aggregation Relationship | Update File Extension (Application Interface) | ||
| Backend | Aggregation Relationship | Download File (Application Interface) | ||
| Backend | Composition Relationship | Auth Google (Application Interface) |
Backend for Frontend (BFF) to support Google Drive acces.
List Files (Application Interface)
Properties
| Stereotype | Protocole |
|---|---|
| API | REST |
Relationships
| From | Relationship | To | Name/Label | Description |
|---|---|---|---|---|
| List Files | Flow Relationship | Google Drive (Application Component) | list |
Update File Extension (Application Interface)
Properties
| Stereotype | Protocole |
|---|---|
| API | REST |
Relationships
| From | Relationship | To | Name/Label | Description |
|---|---|---|---|---|
| Update File Extension | Flow Relationship | Google Drive (Application Component) | update |
Iterate through fileIds and update each file
Download File (Application Interface)
Properties
| Stereotype | Protocole |
|---|---|
| API | REST |
Relationships
| From | Relationship | To | Name/Label | Description |
|---|---|---|---|---|
| Download File | Flow Relationship | Process File (Application Interface) | Pub/Sub | |
| Download File | Flow Relationship | Google Drive (Application Component) | get |
File Process (Application Component)
Properties
| Stereotype |
|---|
| Container |
Relationships
| From | Relationship | To | Name/Label | Description |
|---|---|---|---|---|
| File Process | Aggregation Relationship | Process File (Application Interface) |
Microservice to process and enhance Markdown file
Process File (Application Interface)
Properties
| Stereotype | Protocole |
|---|---|
| API | REST |
Relationships
| From | Relationship | To | Name/Label | Description |
|---|---|---|---|---|
| Process File | Triggering Relationship | Push File (Application Interface) | State store | https://docs.dapr.io/developing-applications/building-blocks/state-management/howto-get-save-state/ |
| Process File | Flow Relationship | Google Gemini (Application Component) | prompt | |
| Process File | Flow Relationship | Pusher (Application Component) | notification |
Retrieve the message sent by the publisher Extract the data field, which contains the file information Extract the file content (base64 encoded) and other info If content is base64 encoded, decode it first
Auth Google (Application Interface)
Properties
| Stereotype | Protocole |
|---|---|
| API | REST |
Relationships
| From | Relationship | To | Name/Label | Description |
|---|---|---|---|---|
| Auth Google | Flow Relationship | Google Identity (Application Component) | getToken |
Google Identity (Application Component)
Properties
| Stereotype | Provider | URL |
|---|---|---|
| System Software | https://developers.google.com/identity |
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.
Push File (Application Interface)
Properties
| Stereotype | Protocole |
|---|---|
| API | REST |
Relationships
| From | Relationship | To | Name/Label | Description |
|---|---|---|---|---|
| Push File | Flow Relationship | Github (Application Component) | push | https://learn.microsoft.com/en-us/rest/api/azure/devops/git/pushes/create?view=azure-devops-rest-7.1&tabs=HTTP |
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 | ADR (Application Function) | update |
Code and Artefact repository with version control.
Frontend (Application Component)
Properties
| Stereotype | Github |
|---|---|
| Container | https://github.com/mickael-royer/unicorn-ionic |
Relationships
| From | Relationship | To | Name/Label | Description |
|---|---|---|---|---|
| Frontend | Assignment Relationship | Drive Component (Application Function) |
Frontend based on Ionic and Auth0 authentication
Drive Component (Application Function)
Properties
| Stereotype |
|---|
| Component |
Relationships
| From | Relationship | To | Name/Label | Description |
|---|---|---|---|---|
| Drive Component | Flow Relationship | Backend (Application Component) | fetch |
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 | ADR (Application Function) |
Website to support Project Documentation, Archimate and Architecture Decision Record repositories
ADR (Application Function)
Properties
| Stereotype |
|---|
| Component |
File Publish (Application Component)
Properties
| Stereotype |
|---|
| Container |
Relationships
| From | Relationship | To | Name/Label | Description |
|---|---|---|---|---|
| File Publish | Aggregation Relationship | Push File (Application Interface) |
Microservice to publish Markdown file
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 |
Cross-platform API for native programmatic push notifications.