Markus Mößler
December 20, 2025
flowchart TD User["👤 User"] -->|Accesses| Browser["🌐 Web Browser"] Browser -->|Sends Request| Server["🖥️ Application Server"] Server -->|Processes Request| Backend["⚙️ Backend Services"] Backend -->|Queries| Database["💾 Database"] Backend -->|Calls APIs| ExternalAPI["🔗 External APIs"] Backend -->|Sends Response| Server Server -->|Sends Response| Browser Browser -->|Displays Data| User style User fill:#f9f,stroke:#333,stroke-width:2px style Browser fill:#bbf,stroke:#333,stroke-width:2px style Server fill:#afa,stroke:#333,stroke-width:2px style Backend fill:#faa,stroke:#333,stroke-width:2px style Database fill:#ff9,stroke:#333,stroke-width:2px style ExternalAPI fill:#bff,stroke:#333,stroke-width:2px
Wikipedia contributors (2024)
In principle, Tornado is a web server and a web framework, i.e,
An example for such a “full-stack” web application is the Tornado blog demo on GitHub
graph TD subgraph Blog Service TornadoServer["Tornado Server"] Templates["HTML Templates (Jinja-like)"] StaticAssets["Static Assets (CSS/JS)"] end subgraph Database Service PostgreSQL["PostgreSQL Database"] end User["User"] -->|HTTP Requests
Port 8888| TornadoServer TornadoServer -->|Renders| Templates TornadoServer -->|Serves| StaticAssets TornadoServer -->|Async Queries
Port 5432| PostgreSQL
graph TD index.html --> index.js index.js --> App.js App.js --> ComponentA.js App.js --> ComponentB.js ComponentA.js --> styles.css ComponentB.js --> api.js index.html["index.html
Entry point, mounts React app"] index.js["index.js
ReactDOM renders App.js"] App.js["App.js
Root Component"] ComponentA.js["ComponentA.js
A sub-component"] ComponentB.js["ComponentB.js
Another sub-component"] styles.css["styles.css
CSS for ComponentA"] api.js["api.js
Handles API calls"] subgraph "Public Folder" index.html end subgraph "Src Folder" index.js App.js ComponentA.js ComponentB.js styles.css api.js end