# 0xchrisoliveira/secomp_2026_cybersec architecture

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

- Interactive diagram: https://gitdiagram.com/0xchrisoliveira/secomp_2026_cybersec
- Repository: https://github.com/0xchrisoliveira/secomp_2026_cybersec

## Overview

Banco CTF is an intentionally vulnerable educational banking web app, implemented in Java, Python, and C# with documented feature parity. Its user workflow runs from browser requests through server routes to account and identity operations backed by SQLite. The graph emphasizes the sampled Python route-registration flow and the sampled Java operation handlers; broader subsystem links follow the README’s documented organization, since their source was not sampled.

Main entry points: [`python/back-end/app.py`](https://github.com/0xchrisoliveira/secomp_2026_cybersec/blob/main/python/back-end/app.py) (Flask app), [`java/back-end/core/Main.java`](https://github.com/0xchrisoliveira/secomp_2026_cybersec/blob/main/java/back-end/core/Main.java) (Java HTTP server), [`csharp/back-end/Program.cs`](https://github.com/0xchrisoliveira/secomp_2026_cybersec/blob/main/csharp/back-end/Program.cs) (ASP.NET host), [`python/front-end/js/app.js`](https://github.com/0xchrisoliveira/secomp_2026_cybersec/blob/main/python/front-end/js/app.js) (Python web client)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Browser client"]
  node_pyclient["Python web client<br/>[app.js]"]
end

subgraph group_server["Server runtime"]
  node_pyapp["Flask app<br/>[app.py]"]
  node_javahost["Java HTTP server<br/>[Main.java]"]
  node_cshost["ASP.NET host<br/>[Program.cs]"]
end

subgraph group_identity["Identity"]
  node_pyidentity["Identity routes"]
  node_pyadmin["Admin routes<br/>[admin.py]"]
  node_javaadmin["Java admin handler<br/>[AdminHandler.java]"]
  node_cshuser["C&#35; user endpoints"]
end

subgraph group_banking["Account operations"]
  node_pybanking["Account routes"]
  node_pytransfer["Transfer route<br/>[transferencia.py]"]
  node_javasystem["Java account handlers"]
  node_javatx["Java transfer handler"]
  node_cshsystem["C&#35; account endpoints"]
end

subgraph group_data["Persistence"]
  node_pybank["Python bank data<br/>[banco.py]"]
  node_pydb[("SQLite database<br/>[banco.py]")]
  node_javabank["Java bank data<br/>[Banco.java]"]
  node_cshbank["C&#35; bank data<br/>[Banco.cs]"]
end

node_person(("Bank user"))

node_person -->|"uses"| node_pyclient
node_pyclient -->|"sends HTTP requests"| node_pyapp
node_pyapp -->|"registers routes"| node_pyidentity
node_pyapp -->|"registers routes"| node_pyadmin
node_pyapp -->|"registers routes"| node_pybanking
node_pyapp -->|"initializes database"| node_pybank
node_pybank -->|"prepares"| node_pydb
node_pyapp -.->|"alternate implementation"| node_javahost
node_javahost -->|"dispatches requests"| node_javasystem
node_javahost -->|"dispatches requests"| node_javaadmin
node_javasystem -->|"includes transfer"| node_javatx
node_javatx -->|"checks ownership"| node_javabank
node_javahost -->|"prepares database"| node_javabank
node_pyapp -.->|"alternate implementation"| node_cshost
node_cshost -->|"maps endpoints"| node_cshsystem
node_cshost -->|"maps endpoints"| node_cshuser
node_cshost -->|"creates database"| node_cshbank

click node_pyclient "https://github.com/0xchrisoliveira/secomp_2026_cybersec/blob/main/python/front-end/js/app.js"
click node_pyapp "https://github.com/0xchrisoliveira/secomp_2026_cybersec/blob/main/python/back-end/app.py"
click node_pyidentity "https://github.com/0xchrisoliveira/secomp_2026_cybersec/tree/main/python/back-end/usuario"
click node_pyadmin "https://github.com/0xchrisoliveira/secomp_2026_cybersec/blob/main/python/back-end/usuario/admin.py"
click node_pybanking "https://github.com/0xchrisoliveira/secomp_2026_cybersec/tree/main/python/back-end/sistema"
click node_pytransfer "https://github.com/0xchrisoliveira/secomp_2026_cybersec/blob/main/python/back-end/sistema/transferencia.py"
click node_pybank "https://github.com/0xchrisoliveira/secomp_2026_cybersec/blob/main/python/back-end/banco.py"
click node_pydb "https://github.com/0xchrisoliveira/secomp_2026_cybersec/blob/main/python/back-end/banco.py"
click node_javahost "https://github.com/0xchrisoliveira/secomp_2026_cybersec/blob/main/java/back-end/core/Main.java"
click node_javabank "https://github.com/0xchrisoliveira/secomp_2026_cybersec/blob/main/java/back-end/core/Banco.java"
click node_javasystem "https://github.com/0xchrisoliveira/secomp_2026_cybersec/tree/main/java/back-end/sistema"
click node_javatx "https://github.com/0xchrisoliveira/secomp_2026_cybersec/blob/main/java/back-end/sistema/TransferenciaHandler.java"
click node_javaadmin "https://github.com/0xchrisoliveira/secomp_2026_cybersec/blob/main/java/back-end/usuario/AdminHandler.java"
click node_cshost "https://github.com/0xchrisoliveira/secomp_2026_cybersec/blob/main/csharp/back-end/Program.cs"
click node_cshsystem "https://github.com/0xchrisoliveira/secomp_2026_cybersec/tree/main/csharp/back-end/Sistema"
click node_cshuser "https://github.com/0xchrisoliveira/secomp_2026_cybersec/tree/main/csharp/back-end/Usuario"
click node_cshbank "https://github.com/0xchrisoliveira/secomp_2026_cybersec/blob/main/csharp/back-end/Banco.cs"

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_pyclient,node_person toneBlue
class node_pyapp,node_javahost,node_cshost toneAmber
class node_pyidentity,node_pyadmin,node_javaadmin,node_cshuser toneMint
class node_pybanking,node_pytransfer,node_javasystem,node_javatx,node_cshsystem toneRose
class node_pybank,node_pydb,node_javabank,node_cshbank toneIndigo
```

## Components

### Browser client

- [Python web client](https://github.com/0xchrisoliveira/secomp_2026_cybersec/blob/main/python/front-end/js/app.js): `python/front-end/js/app.js`

### Server runtime

- [Flask app](https://github.com/0xchrisoliveira/secomp_2026_cybersec/blob/main/python/back-end/app.py): `python/back-end/app.py`
- [Java HTTP server](https://github.com/0xchrisoliveira/secomp_2026_cybersec/blob/main/java/back-end/core/Main.java): `java/back-end/core/Main.java`
- [ASP.NET host](https://github.com/0xchrisoliveira/secomp_2026_cybersec/blob/main/csharp/back-end/Program.cs): `csharp/back-end/Program.cs`

### Identity

- [Identity routes](https://github.com/0xchrisoliveira/secomp_2026_cybersec/tree/main/python/back-end/usuario): `python/back-end/usuario`
- [Admin routes](https://github.com/0xchrisoliveira/secomp_2026_cybersec/blob/main/python/back-end/usuario/admin.py): `python/back-end/usuario/admin.py`
- [Java admin handler](https://github.com/0xchrisoliveira/secomp_2026_cybersec/blob/main/java/back-end/usuario/AdminHandler.java): `java/back-end/usuario/AdminHandler.java`
- [C# user endpoints](https://github.com/0xchrisoliveira/secomp_2026_cybersec/tree/main/csharp/back-end/Usuario): `csharp/back-end/Usuario`

### Account operations

- [Account routes](https://github.com/0xchrisoliveira/secomp_2026_cybersec/tree/main/python/back-end/sistema): `python/back-end/sistema`
- [Transfer route](https://github.com/0xchrisoliveira/secomp_2026_cybersec/blob/main/python/back-end/sistema/transferencia.py): `python/back-end/sistema/transferencia.py`
- [Java account handlers](https://github.com/0xchrisoliveira/secomp_2026_cybersec/tree/main/java/back-end/sistema): `java/back-end/sistema`
- [Java transfer handler](https://github.com/0xchrisoliveira/secomp_2026_cybersec/blob/main/java/back-end/sistema/TransferenciaHandler.java): `java/back-end/sistema/TransferenciaHandler.java`
- [C# account endpoints](https://github.com/0xchrisoliveira/secomp_2026_cybersec/tree/main/csharp/back-end/Sistema): `csharp/back-end/Sistema`

### Persistence

- [Python bank data](https://github.com/0xchrisoliveira/secomp_2026_cybersec/blob/main/python/back-end/banco.py): `python/back-end/banco.py`
- [SQLite database](https://github.com/0xchrisoliveira/secomp_2026_cybersec/blob/main/python/back-end/banco.py): `python/back-end/banco.py`
- [Java bank data](https://github.com/0xchrisoliveira/secomp_2026_cybersec/blob/main/java/back-end/core/Banco.java): `java/back-end/core/Banco.java`
- [C# bank data](https://github.com/0xchrisoliveira/secomp_2026_cybersec/blob/main/csharp/back-end/Banco.cs): `csharp/back-end/Banco.cs`

### Other components

- **Bank user**

## Connections

- Bank user → Python web client: uses
- Python web client → Flask app: sends HTTP requests
- Flask app → Identity routes: registers routes
- Flask app → Admin routes: registers routes
- Flask app → Account routes: registers routes
- Flask app → Python bank data: initializes database
- Python bank data → SQLite database: prepares
- Flask app → Java HTTP server: alternate implementation
- Java HTTP server → Java account handlers: dispatches requests
- Java HTTP server → Java admin handler: dispatches requests
- Java account handlers → Java transfer handler: includes transfer
- Java transfer handler → Java bank data: checks ownership
- Java HTTP server → Java bank data: prepares database
- Flask app → ASP.NET host: alternate implementation
- ASP.NET host → C# account endpoints: maps endpoints
- ASP.NET host → C# user endpoints: maps endpoints
- ASP.NET host → C# bank data: creates database
