Skip to content

Commit f8647e6

Browse files
committed
chore: Added software architecture documentation
1 parent e1a5ff3 commit f8647e6

3 files changed

Lines changed: 28 additions & 6 deletions

File tree

287 KB
Loading
233 KB
Loading

index.md

Lines changed: 28 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ We provide tools to:
1717

1818
## How it works?
1919

20-
<img id="mode-image" src="/assets/securechain/figs/overview_light.png" alt="Secure Chain Overview" width="1000" />
20+
<img id="overview-image" src="/assets/securechain/figs/overview_light.png" alt="Secure Chain Overview" width="1000" />
2121

2222
### What it receives (Left side)
2323
SecureChain begins by consuming requirement files from different software ecosystems, such as *requirements.txt*, *package.json*, or *pom.xml*. These files describe the dependencies that a software project relies on, serving as the raw material for the rest of the system.
@@ -36,6 +36,20 @@ The output of the system is a unified knowledge graph that represents the softwa
3636

3737
This knowledge graph enables advanced use cases such as automated supply chain impact analysis, configurations reasoning, SBOM enrichment, VEX generation, and maintainer-level risk assessments. It provides a foundation for understanding not only which components are vulnerable, but also how and why those vulnerabilities propagate through modern software stacks.
3838

39+
## How is it made?
40+
41+
<img id="architecture-image" src="/assets/securechain/figs/architecture_light.png" alt="Secure Chain Architecture" width="1000" />
42+
43+
Secure Chain software architecture is based on microservices. The application is divided into several layers, each with a specific role and associated technologies that allow for independent scaling, maintenance, and development of functionalities. The layers that make up this architecture are briefly described below:
44+
45+
1. **Frontend (Client Application):** Built with *Next.js*, this is the user-facing layer accessed through a browser or mobile device. It sends HTTP/HTTPS requests to the backend, handles user input, and displays the results dynamically.
46+
47+
2. **API Gateway (BFF - Backend for Frontend):** Implemented with *FastAPI*, this gateway manages routes client requests to the appropriate microservice, and aggregates data when necessary.
48+
49+
3. **Microservices Layer:** This layer consists of three separate microservices, all built with *FastAPI*. **Auth** manages authentication. **Depex** extracts and analyzes software dependencies from various package managers, and reason on dependency configurations. **VEXGen** generates vulnerability reports in VEX format.
50+
51+
4. **Database Layer:** Each microservice uses its own dedicated database. *MongoDB* stores the vulnerability data, and *Neo4j* stores the software supply chain graph used by our tools to compute SSC degrees and analyze dependency relationships.
52+
3953
<button class="btn js-toggle-dark-mode" style="
4054
position: fixed;
4155
top: 1rem;
@@ -56,18 +70,26 @@ This knowledge graph enables advanced use cases such as automated supply chain i
5670
toggleDarkMode.textContent = '☀️';
5771
}
5872
setTimeout(() => {
59-
const img = document.getElementById('mode-image');
73+
const overview_img = document.getElementById('overview-image');
74+
const architecture_img = document.getElementById('architecture-image');
6075
const theme = jtd.getTheme();
61-
img.src = theme === 'dark'
76+
overview_img.src = theme === 'dark'
6277
? '/assets/securechain/figs/overview_dark.png'
6378
: '/assets/securechain/figs/overview_light.png';
64-
}, 10);
79+
architecture_img.src = theme === 'dark'
80+
? '/assets/securechain/figs/architecture_dark.png'
81+
: '/assets/securechain/figs/architecture_light.png';
82+
}, 5);
6583
});
6684
document.addEventListener("DOMContentLoaded", function () {
67-
const img = document.getElementById('mode-image');
85+
const overview_img = document.getElementById('overview-image');
86+
const architecture_img = document.getElementById('architecture-image');
6887
const theme = jtd.getTheme();
69-
img.src = theme === 'dark'
88+
overview_img.src = theme === 'dark'
7089
? '/assets/securechain/figs/overview_dark.png'
7190
: '/assets/securechain/figs/overview_light.png';
91+
architecture_img.src = theme === 'dark'
92+
? '/assets/securechain/figs/architecture_dark.png'
93+
: '/assets/securechain/figs/architecture_light.png';
7294
});
7395
</script>

0 commit comments

Comments
 (0)