# djsadd/sciencejournal-miscorservices-and-frontend architecture

> Architecture diagram of the GitHub repository djsadd/sciencejournal-miscorservices-and-frontend, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-30). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/djsadd/sciencejournal-miscorservices-and-frontend
- Repository: https://github.com/djsadd/sciencejournal-miscorservices-and-frontend

## Overview

ScienceJournal is a microservices journal platform with a role-based frontend for authors, reviewers, editors, administrators, and public readers. Users submit and manage articles, participate in editorial and peer-review workflows, and access published articles and volumes; supporting capabilities include identity and profiles, notifications, file handling, layout, AI review, and analytics. The frontend calls a shared API gateway, which is configured with backend service URLs. Several service links are documented by configuration or explicit HTTP calls; unsampled router implementations limit certainty about other runtime connections.

Main entry points: [`API Gateaway/app/config.py`](https://github.com/djsadd/sciencejournal-miscorservices-and-frontend/blob/main/API%20Gateaway/app/config.py) (Service routing config), [`ScienceJournalFrontend/src/App.tsx`](https://github.com/djsadd/sciencejournal-miscorservices-and-frontend/blob/main/ScienceJournalFrontend/src/App.tsx) (Role-based portal), [`Review Service/app/reviews_router.py`](https://github.com/djsadd/sciencejournal-miscorservices-and-frontend/blob/main/Review%20Service/app/reviews_router.py) (Peer review), [`ScienceJournalFrontend/src/api/client.ts`](https://github.com/djsadd/sciencejournal-miscorservices-and-frontend/blob/main/ScienceJournalFrontend/src/api/client.ts) (API client)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Journal frontend"]
  node_webapp["Role-based portal<br/>[App.tsx]"]
  node_api_client["API client<br/>[client.ts]"]
  node_submission_ui["Author submissions"]
  node_editor_ui["Editorial article views"]
end

subgraph group_gateway["API gateway"]
  node_gateway_app["Gateway routing<br/>[main.py]"]
  node_gateway_config["Service routing config<br/>[config.py]"]
end

subgraph group_identity["Identity and profiles"]
  node_auth_service["Authentication<br/>[auth_router.py]"]
  node_profile_service["User profiles<br/>[users_router.py]"]
end

subgraph group_editorial["Editorial workflow"]
  node_article_service["Articles and volumes<br/>[articles_router.py]"]
  node_editorial_service["Editorial workflow<br/>[router.py]"]
  node_review_service["Peer review<br/>[reviews_router.py]"]
  node_ai_review["AI review<br/>[router.py]"]
end

subgraph group_publishing["Publishing"]
  node_publication_service["Publication"]
  node_layout_service["Layout records<br/>[router.py]"]
end

subgraph group_platform["Platform services"]
  node_file_processing["File processing<br/>[router.py]"]
  node_file_storage["File storage<br/>[router.py]"]
  node_notifications["Notifications<br/>[notifications.py]"]
  node_analytics["Usage analytics<br/>[main.py]"]
  node_shared_db[("Shared database module<br/>[database.py]")]
end

node_reader(("Journal users"))

node_reader -->|"uses"| node_webapp
node_webapp -->|"routes to"| node_submission_ui
node_webapp -->|"routes to"| node_editor_ui
node_submission_ui -.->|"requests through"| node_api_client
node_editor_ui -.->|"requests through"| node_api_client
node_api_client -->|"sends API requests"| node_gateway_app
node_gateway_app -->|"loads config"| node_gateway_config
node_gateway_config -->|"configures URL"| node_auth_service
node_gateway_config -->|"configures URL"| node_profile_service
node_gateway_config -->|"configures URL"| node_article_service
node_gateway_config -->|"configures URL"| node_review_service
node_gateway_config -->|"configures URL"| node_editorial_service
node_gateway_config -->|"configures URL"| node_layout_service
node_gateway_config -->|"configures URL"| node_publication_service
node_gateway_config -->|"configures URL"| node_notifications
node_gateway_config -->|"configures URL"| node_analytics
node_gateway_config -->|"configures URL"| node_ai_review
node_auth_service -->|"updates contact"| node_profile_service
node_review_service -->|"updates assignment"| node_article_service
node_review_service -->|"requests notification"| node_notifications
node_article_service -->|"imports database module"| node_shared_db
node_editorial_service -->|"imports database module"| node_shared_db
node_layout_service -->|"uses database"| node_shared_db
node_file_processing -.->|"delegates to"| node_file_storage

click node_webapp "https://github.com/djsadd/sciencejournal-miscorservices-and-frontend/blob/main/ScienceJournalFrontend/src/App.tsx"
click node_api_client "https://github.com/djsadd/sciencejournal-miscorservices-and-frontend/blob/main/ScienceJournalFrontend/src/api/client.ts"
click node_submission_ui "https://github.com/djsadd/sciencejournal-miscorservices-and-frontend/blob/main/ScienceJournalFrontend/src/features/authors/AuthorSubmissions.tsx"
click node_editor_ui "https://github.com/djsadd/sciencejournal-miscorservices-and-frontend/blob/main/ScienceJournalFrontend/src/pages/EditorArticleDetailPage.tsx"
click node_gateway_app "https://github.com/djsadd/sciencejournal-miscorservices-and-frontend/blob/main/API%20Gateaway/app/main.py"
click node_gateway_config "https://github.com/djsadd/sciencejournal-miscorservices-and-frontend/blob/main/API%20Gateaway/app/config.py"
click node_auth_service "https://github.com/djsadd/sciencejournal-miscorservices-and-frontend/blob/main/Auth%20-%20Identity%20Service/app/auth_router.py"
click node_profile_service "https://github.com/djsadd/sciencejournal-miscorservices-and-frontend/blob/main/User%20Profile%20Service/app/users_router.py"
click node_article_service "https://github.com/djsadd/sciencejournal-miscorservices-and-frontend/blob/main/Article%20Management%20Service/app/articles_router.py"
click node_editorial_service "https://github.com/djsadd/sciencejournal-miscorservices-and-frontend/blob/main/Editorial%20Workflow%20Service/app/router.py"
click node_review_service "https://github.com/djsadd/sciencejournal-miscorservices-and-frontend/blob/main/Review%20Service/app/reviews_router.py"
click node_ai_review "https://github.com/djsadd/sciencejournal-miscorservices-and-frontend/blob/main/AI%20Review%20Service/app/router.py"
click node_publication_service "https://github.com/djsadd/sciencejournal-miscorservices-and-frontend/tree/main/Publication%20Service/app"
click node_layout_service "https://github.com/djsadd/sciencejournal-miscorservices-and-frontend/blob/main/Layout%20Service/app/router.py"
click node_file_processing "https://github.com/djsadd/sciencejournal-miscorservices-and-frontend/blob/main/FileProcessingService/app/router.py"
click node_file_storage "https://github.com/djsadd/sciencejournal-miscorservices-and-frontend/blob/main/FileStorageService/app/router.py"
click node_notifications "https://github.com/djsadd/sciencejournal-miscorservices-and-frontend/blob/main/Notification%20Service/app/routers/notifications.py"
click node_analytics "https://github.com/djsadd/sciencejournal-miscorservices-and-frontend/blob/main/Analytics%20-%20Metrics%20Service/app/main.py"
click node_shared_db "https://github.com/djsadd/sciencejournal-miscorservices-and-frontend/blob/main/Layout%20Service/app/database.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_webapp,node_api_client,node_submission_ui,node_editor_ui,node_reader toneBlue
class node_gateway_app,node_gateway_config toneAmber
class node_auth_service,node_profile_service toneMint
class node_article_service,node_editorial_service,node_review_service,node_ai_review toneRose
class node_publication_service,node_layout_service toneIndigo
class node_file_processing,node_file_storage,node_notifications,node_analytics,node_shared_db toneTeal
```

## Components

### Journal frontend

- [Role-based portal](https://github.com/djsadd/sciencejournal-miscorservices-and-frontend/blob/main/ScienceJournalFrontend/src/App.tsx): `ScienceJournalFrontend/src/App.tsx`
- [API client](https://github.com/djsadd/sciencejournal-miscorservices-and-frontend/blob/main/ScienceJournalFrontend/src/api/client.ts): `ScienceJournalFrontend/src/api/client.ts`
- [Author submissions](https://github.com/djsadd/sciencejournal-miscorservices-and-frontend/blob/main/ScienceJournalFrontend/src/features/authors/AuthorSubmissions.tsx): `ScienceJournalFrontend/src/features/authors/AuthorSubmissions.tsx`
- [Editorial article views](https://github.com/djsadd/sciencejournal-miscorservices-and-frontend/blob/main/ScienceJournalFrontend/src/pages/EditorArticleDetailPage.tsx): `ScienceJournalFrontend/src/pages/EditorArticleDetailPage.tsx`

### API gateway

- [Gateway routing](https://github.com/djsadd/sciencejournal-miscorservices-and-frontend/blob/main/API%20Gateaway/app/main.py): `API Gateaway/app/main.py`
- [Service routing config](https://github.com/djsadd/sciencejournal-miscorservices-and-frontend/blob/main/API%20Gateaway/app/config.py): `API Gateaway/app/config.py`

### Identity and profiles

- [Authentication](https://github.com/djsadd/sciencejournal-miscorservices-and-frontend/blob/main/Auth%20-%20Identity%20Service/app/auth_router.py): `Auth - Identity Service/app/auth_router.py`
- [User profiles](https://github.com/djsadd/sciencejournal-miscorservices-and-frontend/blob/main/User%20Profile%20Service/app/users_router.py): `User Profile Service/app/users_router.py`

### Editorial workflow

- [Articles and volumes](https://github.com/djsadd/sciencejournal-miscorservices-and-frontend/blob/main/Article%20Management%20Service/app/articles_router.py): `Article Management Service/app/articles_router.py`
- [Editorial workflow](https://github.com/djsadd/sciencejournal-miscorservices-and-frontend/blob/main/Editorial%20Workflow%20Service/app/router.py): `Editorial Workflow Service/app/router.py`
- [Peer review](https://github.com/djsadd/sciencejournal-miscorservices-and-frontend/blob/main/Review%20Service/app/reviews_router.py): `Review Service/app/reviews_router.py`
- [AI review](https://github.com/djsadd/sciencejournal-miscorservices-and-frontend/blob/main/AI%20Review%20Service/app/router.py): `AI Review Service/app/router.py`

### Publishing

- [Publication](https://github.com/djsadd/sciencejournal-miscorservices-and-frontend/tree/main/Publication%20Service/app): `Publication Service/app`
- [Layout records](https://github.com/djsadd/sciencejournal-miscorservices-and-frontend/blob/main/Layout%20Service/app/router.py): `Layout Service/app/router.py`

### Platform services

- [File processing](https://github.com/djsadd/sciencejournal-miscorservices-and-frontend/blob/main/FileProcessingService/app/router.py): `FileProcessingService/app/router.py`
- [File storage](https://github.com/djsadd/sciencejournal-miscorservices-and-frontend/blob/main/FileStorageService/app/router.py): `FileStorageService/app/router.py`
- [Notifications](https://github.com/djsadd/sciencejournal-miscorservices-and-frontend/blob/main/Notification%20Service/app/routers/notifications.py): `Notification Service/app/routers/notifications.py`
- [Usage analytics](https://github.com/djsadd/sciencejournal-miscorservices-and-frontend/blob/main/Analytics%20-%20Metrics%20Service/app/main.py): `Analytics - Metrics Service/app/main.py`
- [Shared database module](https://github.com/djsadd/sciencejournal-miscorservices-and-frontend/blob/main/Layout%20Service/app/database.py): `Layout Service/app/database.py`

### Other components

- **Journal users**

## Connections

- Journal users → Role-based portal: uses (evidence: `ScienceJournalFrontend/src/App.tsx`)
- Role-based portal → Author submissions: routes to (evidence: `ScienceJournalFrontend/src/App.tsx`)
- Role-based portal → Editorial article views: routes to (evidence: `ScienceJournalFrontend/src/App.tsx`)
- Author submissions → API client: requests through
- Editorial article views → API client: requests through
- API client → Gateway routing: sends API requests (evidence: `ScienceJournalFrontend/src/api/client.ts`)
- Gateway routing → Service routing config: loads config (evidence: `API Gateaway/app/main.py`)
- Service routing config → Authentication: configures URL (evidence: `API Gateaway/app/config.py`)
- Service routing config → User profiles: configures URL (evidence: `API Gateaway/app/config.py`)
- Service routing config → Articles and volumes: configures URL (evidence: `API Gateaway/app/config.py`)
- Service routing config → Peer review: configures URL (evidence: `API Gateaway/app/config.py`)
- Service routing config → Editorial workflow: configures URL (evidence: `API Gateaway/app/config.py`)
- Service routing config → Layout records: configures URL (evidence: `API Gateaway/app/config.py`)
- Service routing config → Publication: configures URL (evidence: `API Gateaway/app/config.py`)
- Service routing config → Notifications: configures URL (evidence: `API Gateaway/app/config.py`)
- Service routing config → Usage analytics: configures URL (evidence: `API Gateaway/app/config.py`)
- Service routing config → AI review: configures URL (evidence: `API Gateaway/app/config.py`)
- Authentication → User profiles: updates contact (evidence: `Auth - Identity Service/app/auth_router.py`)
- Peer review → Articles and volumes: updates assignment (evidence: `Review Service/app/reviews_router.py`)
- Peer review → Notifications: requests notification (evidence: `Review Service/app/reviews_router.py`)
- Articles and volumes → Shared database module: imports database module (evidence: `Article Management Service/app/articles_router.py`)
- Editorial workflow → Shared database module: imports database module (evidence: `Editorial Workflow Service/app/router.py`)
- Layout records → Shared database module: uses database (evidence: `Layout Service/app/router.py`)
- File processing → File storage: delegates to
