You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/dev/explanations/extensions.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -30,7 +30,7 @@ Okay, so you've decided you definitely do need an extension but not all extensio
30
30
Before proceeding you should read and and understand the [structure of DiracX](./components/index.md) to know which components you want to extend.
31
31
For most components you can extend them in isolation without needing to have an extension for the other components, for example:
32
32
33
-
-`diracx-web` can be extended to customize the web interface without needing to extend any of the Python packages.
33
+
-`diracx-web` can be extended to customize the web interface without needing to extend any of the Python packages. For details, see the [Creating a web extension](../tutorials/web-extensions.md) tutorial.
34
34
-`diracx-logic` can be extended without needing to extend `diracx-core` or `diracx-routers`
35
35
36
36
The exception to this is when extending `diracx-routers` you MUST also extend `diracx-client` and your client extension MUST be regenerated for every DiracX release.
DiracX is developed across three repositories, each with a distinct responsibility. They are combined into a single documentation site and a single deployment, but developed independently.
4
+
5
+
```mermaid
6
+
---
7
+
config:
8
+
layout: elk
9
+
---
10
+
flowchart TD
11
+
subgraph diracx["diracx (Python)"]
12
+
direction TB
13
+
subgraph backend["Backend"]
14
+
core["diracx-core"]
15
+
db["diracx-db"]
16
+
logic["diracx-logic"]
17
+
routers["diracx-routers"]
18
+
tasks["diracx-tasks"]
19
+
end
20
+
subgraph frontend-py["Frontend (CLI)"]
21
+
client["diracx-client"]
22
+
api["diracx-api"]
23
+
cli["diracx-cli"]
24
+
end
25
+
end
26
+
subgraph diracx-web["diracx-web (TypeScript)"]
27
+
direction TB
28
+
subgraph frontend-web["Frontend (Web)"]
29
+
components["diracx-web-components"]
30
+
app["diracx-web app"]
31
+
extensions["extensions (gubbins)"]
32
+
end
33
+
end
34
+
subgraph diracx-charts["diracx-charts (Helm)"]
35
+
direction TB
36
+
charts["Helm charts"]
37
+
demo["run_demo.sh"]
38
+
end
39
+
routers -- serves API --> client
40
+
client -. "calls through OpenAPI" .-> routers
41
+
charts -. deploys .-> diracx
42
+
charts -. deploys .-> diracx-web
43
+
app -. "calls through OpenAPI" .-> routers
44
+
45
+
core:::Pine
46
+
db:::Pine
47
+
logic:::Pine
48
+
routers:::Pine
49
+
tasks:::Pine
50
+
client:::Sky
51
+
api:::Sky
52
+
cli:::Sky
53
+
components:::Rose
54
+
app:::Rose
55
+
extensions:::Rose
56
+
charts:::Aqua
57
+
demo:::Aqua
58
+
classDef Pine stroke-width:1px, stroke-dasharray:none, stroke:#254336, fill:#27654A, color:#FFFFFF
The main repository containing all Python packages. It holds both **backend** (server-side) and **frontend CLI** (client-side) code:
69
+
70
+
-**Backend** — `diracx-core`, `diracx-db`, `diracx-logic`, `diracx-routers`, `diracx-tasks`: the server that exposes an OpenAPI-based REST API.
71
+
-**Frontend (CLI)** — `diracx-client`, `diracx-api`, `diracx-cli`: the Python client, higher-level API, and command-line interface that consume the REST API.
72
+
73
+
This repository also owns the `mkdocs.yml` that defines the navigation for the entire documentation site.
The web interface, built with TypeScript / React / Next.js. It is a separate frontend that also consumes the REST API served by `diracx-routers`. See [Web architecture](web-architecture.md) for the internal package structure.
78
+
79
+
Documentation files in this repo are merged into the main site by the [mkdocs-diracx-plugin](https://github.com/DIRACGrid/mkdocs-diracx-plugin). See [Documentation system](documentation-system.md) for details on how the merge works.
Helm charts for deploying DiracX (backend + web) on Kubernetes. Also provides `run_demo.sh` for running a local development instance. Documentation files are similarly merged into the main site.
84
+
85
+
## What "Backend" and "Frontend" mean in this project
86
+
87
+
The terms follow standard software architecture usage:
88
+
89
+
-**Backend** = server-side code that processes requests, accesses databases, and enforces business logic.
90
+
-**Frontend** = client-side code that users interact with to consume backend services.
- **Code Documentation:** Ensure that any code you write is well-documented. This includes:
25
-
26
-
- Inline comments where necessary to explain complex logic.
27
-
- Updating or creating Storybook documentation if you are contributing to the `diracx-web-components` library.
28
-
29
-
- **Writing/Updating Tests:** When you change or add new code, make sure to write or update tests accordingly. This helps maintain the reliability and stability of the codebase.
22
+
**Requirements:** [Setup web environment](setup-web-environment.md)
30
23
31
-
**Note:** Don't forget to update the `extensions` code if you integrate breaking changes in the `diracx-web-components` library. See [Managing the extension](../setup_environment.md) for further details.
24
+
For web-specific contribution guidelines (code documentation, testing, accessibility, Husky hooks), see the [DiracX Web contribution guide](contribute-to-web.md).
0 commit comments