Loading page/aidatho_tc_web_app_presentation.html +21 −74 Original line number Diff line number Diff line Loading @@ -4,7 +4,7 @@ <meta charset="utf-8"> <meta name="generator" content="pandoc"> <meta name="author" content="Markus Mößler"> <meta name="dcterms.date" content="2025-04-15"> <meta name="dcterms.date" content="2025-04-30"> <title>AIDAHO Tinkering Club: Web App</title> <meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"> Loading @@ -31,8 +31,9 @@ } .display.math{display: block; text-align: center; margin: 0.5rem auto;} /* CSS for syntax highlighting */ html { -webkit-text-size-adjust: 100%; } pre > code.sourceCode { white-space: pre; position: relative; } pre > code.sourceCode > span { line-height: 1.25; } pre > code.sourceCode > span { display: inline-block; line-height: 1.25; } pre > code.sourceCode > span:empty { height: 1.2em; } .sourceCode { overflow: visible; } code.sourceCode > span { color: inherit; text-decoration: inherit; } Loading Loading @@ -98,6 +99,7 @@ div.csl-bib-body { } div.csl-entry { clear: both; margin-bottom: 0em; } .hanging-indent div.csl-entry { margin-left:2em; Loading Loading @@ -130,7 +132,7 @@ <section id="title-slide"> <h1 class="title">AIDAHO Tinkering Club:<br>Web App</h1> <p class="author">Markus Mößler</p> <p class="date">April 15, 2025</p> <p class="date">April 30, 2025</p> </section> <section> Loading Loading @@ -193,7 +195,7 @@ REST or GraphQL).</li> backend.</li> <li>🙂: Scalability, flexible tech stack, improved performance. <ul> <li>👉 Suits well with containerization.</li> <li>👉🏼 Suits well with containerization.</li> </ul></li> <li>😐: Requires API design and coordination.</li> </ul></li> Loading Loading @@ -221,8 +223,9 @@ flowchart TD style ExternalAPI fill:#bff,stroke:#333,stroke-width:2px </pre> </section> <section id="a-brief-introduction-to-docker" class="slide level2"> <h2>A Brief Introduction to Docker</h2> <section id="a-brief-introduction-to-docker" class="slide level2 small-header"> <h2 class="small-header">A Brief Introduction to Docker</h2> <div style="font-size: 20pt"> <ul> <li><strong>Docker</strong> is a platform for developing, shipping, and Loading Loading @@ -250,23 +253,8 @@ image.</li> <li><strong>Docker Compose</strong>: Tool to define and run multi-container apps.</li> </ul></li> </ul> </div> </section> <section class="slide level2"> <div style="font-size: 20pt"> <ul> <li>Get Started <ul> <li><a href="https://docs.docker.com/get-started/introduction/">Docker Introduction</a></li> <li><a href="https://docs.docker.com/get-started/docker-concepts/the-basics/what-is-a-container/">Docker Concepts</a></li> <li><a href="https://docs.docker.com/get-started/workshop/">Docker Workshop</a></li> </ul></li> <li>👉🏼 <a href="https://docs.docker.com/get-started">Docker Get Started</a></li> </ul> </div> </section></section> Loading Loading @@ -295,7 +283,7 @@ framework, <ul> <li>it can be used to connect to backend services and to…</li> <li>render HTML templates, enabling basic UI rendering</li> <li>👉 <a <li>👉🏼 <a href="https://github.com/tornadoweb/tornado/blob/master/demos/blog/blog.py">See: Tornado blog demo on GitHub</a></li> </ul></li> Loading @@ -310,7 +298,7 @@ data-cites="Dory2012Introduction">Dory, Parrish, & Berg (2012)</span></li> </ul></li> <li><a href="https://github.com/tornadoweb/tornado">See also the tornado GitHub</a></li> GitHub repository</a></li> </ul></li> </ul> </div> Loading @@ -320,58 +308,17 @@ GitHub</a></li> <div style="font-size: 20pt"> <ul> <li>The <strong>Tornado Blog Demo</strong> can be packaged into a Docker container to ensure consistent development and deployment.</li> containers to ensure consistent development and deployment.</li> <li>Structure: <ul> <li>A single container runs the Tornado application.</li> <li>It connects to a separate PostgreSQL container for the database.</li> <li>One container runs the Tornado application.</li> <li>Another container runs the PostgreSQL database.</li> </ul></li> <li>Docker Compose is typically used to orchestrate both services.</li> <li>Docker Compose is used to orchestrate both services.</li> <li><a href="https://github.com/tornadoweb/tornado/blob/master/demos/blog/docker-compose.yml">See also the tornado GitHub repository</a></li> </ul> <!-- ```yml postgres: image: postgres:10.3 environment: POSTGRES_USER: blog POSTGRES_PASSWORD: blog POSTGRES_DB: blog ports: - "3306" blog: build: . links: - postgres ports: - "8888:8888" command: --db_host=postgres ``` ```bash . ├── documentation ├── README.md └── tornado-backend ├── blog.py ├── docker-compose.yml ├── Dockerfile ├── README.md ├── requirements.txt ├── schema.sql ├── static │ └── blog.css └── templates ├── archive.html ├── base.html ├── compose.html ├── create_author.html ├── entry.html ├── feed.xml ├── home.html ├── login.html └── modules └── entry.html ``` --> <div style="display: flex; gap: 2em; font-size: 16pt"> <div style="flex: 1"> <div class="sourceCode" id="cb1"><pre Loading Loading @@ -642,7 +589,7 @@ graph TD <section id="references" class="title-slide slide level1"> <h1>References</h1> <div id="refs" class="references csl-bib-body hanging-indent" data-line-spacing="2" role="list"> data-entry-spacing="0" data-line-spacing="2" role="list"> <div id="ref-Dory2012Introduction" class="csl-entry" role="listitem"> Dory, M., Parrish, A., & Berg, B. (2012). <em>Introduction to tornado: Modern web applications with python</em>. O’Reilly Media. Loading page/aidatho_tc_web_app_presentation.md +13 −65 Original line number Diff line number Diff line --- title: "AIDAHO Tinkering Club:<br>Web App" author: "Markus Mößler" date: "April 15, 2025" date: "April 30, 2025" # date: "April 15, 2025" # date: "December 20, 2024" --- Loading Loading @@ -41,7 +42,7 @@ date: "April 15, 2025" - Frontend and backend are decoupled and communicate via APIs (e.g., REST or GraphQL). - E.g., React or Vue.js for frontend, Tornado or FastAPI (Python) for backend. - 🙂: Scalability, flexible tech stack, improved performance. - 👉 Suits well with containerization. - 👉🏼 Suits well with containerization. - 😐: Requires API design and coordination. </div> Loading Loading @@ -71,7 +72,7 @@ flowchart TD --- ## A Brief Introduction to Docker ## A Brief Introduction to Docker {.small-header} <div style="font-size: 20pt"> Loading @@ -86,17 +87,7 @@ flowchart TD - **Container**: A running instance of an image. - **Dockerfile**: Script to define how to build the image. - **Docker Compose**: Tool to define and run multi-container apps. </div> --- <div style="font-size: 20pt"> - Get Started - [Docker Introduction](https://docs.docker.com/get-started/introduction/) - [Docker Concepts](https://docs.docker.com/get-started/docker-concepts/the-basics/what-is-a-container/) - [Docker Workshop](https://docs.docker.com/get-started/workshop/) - 👉🏼 [Docker Get Started](https://docs.docker.com/get-started) </div> Loading @@ -113,12 +104,12 @@ flowchart TD - **In principle**, Tornado is a web server and a web framework, - it can be used to connect to backend services and to... - render HTML templates, enabling basic UI rendering - 👉 [See: Tornado blog demo on GitHub](https://github.com/tornadoweb/tornado/blob/master/demos/blog/blog.py) - 👉🏼 [See: Tornado blog demo on GitHub](https://github.com/tornadoweb/tornado/blob/master/demos/blog/blog.py) - **Resources**: - The most interesting resources for learning/referencing Tornado: - [https://www.tornadoweb.org/en/stable/](https://www.tornadoweb.org/en/stable/) - Textbook: @Dory2012Introduction - [See also the tornado GitHub](https://github.com/tornadoweb/tornado) - [See also the tornado GitHub repository](https://github.com/tornadoweb/tornado) </div> Loading @@ -128,55 +119,12 @@ flowchart TD <div style="font-size: 20pt"> - The **Tornado Blog Demo** can be packaged into a Docker container to ensure consistent development and deployment. - The **Tornado Blog Demo** can be packaged into a Docker containers to ensure consistent development and deployment. - Structure: - A single container runs the Tornado application. - It connects to a separate PostgreSQL container for the database. - Docker Compose is typically used to orchestrate both services. <!-- ```yml postgres: image: postgres:10.3 environment: POSTGRES_USER: blog POSTGRES_PASSWORD: blog POSTGRES_DB: blog ports: - "3306" blog: build: . links: - postgres ports: - "8888:8888" command: --db_host=postgres ``` ```bash . ├── documentation ├── README.md └── tornado-backend ├── blog.py ├── docker-compose.yml ├── Dockerfile ├── README.md ├── requirements.txt ├── schema.sql ├── static │ └── blog.css └── templates ├── archive.html ├── base.html ├── compose.html ├── create_author.html ├── entry.html ├── feed.xml ├── home.html ├── login.html └── modules └── entry.html ``` --> - One container runs the Tornado application. - Another container runs the PostgreSQL database. - Docker Compose is used to orchestrate both services. - [See also the tornado GitHub repository](https://github.com/tornadoweb/tornado/blob/master/demos/blog/docker-compose.yml) <div style="display: flex; gap: 2em; font-size: 16pt"> Loading Loading @@ -251,7 +199,7 @@ graph TD User["User"] -->|HTTP Requests<br>Port 8888| TornadoServer TornadoServer -->|Renders| Templates TornadoServer -->|Serves| StaticAssets TornadoServer -->|Async Queries<br>Port 5432| PostgreSQL TornadoServer -->|Async Queries<br>Port 3306| PostgreSQL </pre> # A Simple React Frontend on top of a Tornado Backend Loading Loading
page/aidatho_tc_web_app_presentation.html +21 −74 Original line number Diff line number Diff line Loading @@ -4,7 +4,7 @@ <meta charset="utf-8"> <meta name="generator" content="pandoc"> <meta name="author" content="Markus Mößler"> <meta name="dcterms.date" content="2025-04-15"> <meta name="dcterms.date" content="2025-04-30"> <title>AIDAHO Tinkering Club: Web App</title> <meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"> Loading @@ -31,8 +31,9 @@ } .display.math{display: block; text-align: center; margin: 0.5rem auto;} /* CSS for syntax highlighting */ html { -webkit-text-size-adjust: 100%; } pre > code.sourceCode { white-space: pre; position: relative; } pre > code.sourceCode > span { line-height: 1.25; } pre > code.sourceCode > span { display: inline-block; line-height: 1.25; } pre > code.sourceCode > span:empty { height: 1.2em; } .sourceCode { overflow: visible; } code.sourceCode > span { color: inherit; text-decoration: inherit; } Loading Loading @@ -98,6 +99,7 @@ div.csl-bib-body { } div.csl-entry { clear: both; margin-bottom: 0em; } .hanging-indent div.csl-entry { margin-left:2em; Loading Loading @@ -130,7 +132,7 @@ <section id="title-slide"> <h1 class="title">AIDAHO Tinkering Club:<br>Web App</h1> <p class="author">Markus Mößler</p> <p class="date">April 15, 2025</p> <p class="date">April 30, 2025</p> </section> <section> Loading Loading @@ -193,7 +195,7 @@ REST or GraphQL).</li> backend.</li> <li>🙂: Scalability, flexible tech stack, improved performance. <ul> <li>👉 Suits well with containerization.</li> <li>👉🏼 Suits well with containerization.</li> </ul></li> <li>😐: Requires API design and coordination.</li> </ul></li> Loading Loading @@ -221,8 +223,9 @@ flowchart TD style ExternalAPI fill:#bff,stroke:#333,stroke-width:2px </pre> </section> <section id="a-brief-introduction-to-docker" class="slide level2"> <h2>A Brief Introduction to Docker</h2> <section id="a-brief-introduction-to-docker" class="slide level2 small-header"> <h2 class="small-header">A Brief Introduction to Docker</h2> <div style="font-size: 20pt"> <ul> <li><strong>Docker</strong> is a platform for developing, shipping, and Loading Loading @@ -250,23 +253,8 @@ image.</li> <li><strong>Docker Compose</strong>: Tool to define and run multi-container apps.</li> </ul></li> </ul> </div> </section> <section class="slide level2"> <div style="font-size: 20pt"> <ul> <li>Get Started <ul> <li><a href="https://docs.docker.com/get-started/introduction/">Docker Introduction</a></li> <li><a href="https://docs.docker.com/get-started/docker-concepts/the-basics/what-is-a-container/">Docker Concepts</a></li> <li><a href="https://docs.docker.com/get-started/workshop/">Docker Workshop</a></li> </ul></li> <li>👉🏼 <a href="https://docs.docker.com/get-started">Docker Get Started</a></li> </ul> </div> </section></section> Loading Loading @@ -295,7 +283,7 @@ framework, <ul> <li>it can be used to connect to backend services and to…</li> <li>render HTML templates, enabling basic UI rendering</li> <li>👉 <a <li>👉🏼 <a href="https://github.com/tornadoweb/tornado/blob/master/demos/blog/blog.py">See: Tornado blog demo on GitHub</a></li> </ul></li> Loading @@ -310,7 +298,7 @@ data-cites="Dory2012Introduction">Dory, Parrish, & Berg (2012)</span></li> </ul></li> <li><a href="https://github.com/tornadoweb/tornado">See also the tornado GitHub</a></li> GitHub repository</a></li> </ul></li> </ul> </div> Loading @@ -320,58 +308,17 @@ GitHub</a></li> <div style="font-size: 20pt"> <ul> <li>The <strong>Tornado Blog Demo</strong> can be packaged into a Docker container to ensure consistent development and deployment.</li> containers to ensure consistent development and deployment.</li> <li>Structure: <ul> <li>A single container runs the Tornado application.</li> <li>It connects to a separate PostgreSQL container for the database.</li> <li>One container runs the Tornado application.</li> <li>Another container runs the PostgreSQL database.</li> </ul></li> <li>Docker Compose is typically used to orchestrate both services.</li> <li>Docker Compose is used to orchestrate both services.</li> <li><a href="https://github.com/tornadoweb/tornado/blob/master/demos/blog/docker-compose.yml">See also the tornado GitHub repository</a></li> </ul> <!-- ```yml postgres: image: postgres:10.3 environment: POSTGRES_USER: blog POSTGRES_PASSWORD: blog POSTGRES_DB: blog ports: - "3306" blog: build: . links: - postgres ports: - "8888:8888" command: --db_host=postgres ``` ```bash . ├── documentation ├── README.md └── tornado-backend ├── blog.py ├── docker-compose.yml ├── Dockerfile ├── README.md ├── requirements.txt ├── schema.sql ├── static │ └── blog.css └── templates ├── archive.html ├── base.html ├── compose.html ├── create_author.html ├── entry.html ├── feed.xml ├── home.html ├── login.html └── modules └── entry.html ``` --> <div style="display: flex; gap: 2em; font-size: 16pt"> <div style="flex: 1"> <div class="sourceCode" id="cb1"><pre Loading Loading @@ -642,7 +589,7 @@ graph TD <section id="references" class="title-slide slide level1"> <h1>References</h1> <div id="refs" class="references csl-bib-body hanging-indent" data-line-spacing="2" role="list"> data-entry-spacing="0" data-line-spacing="2" role="list"> <div id="ref-Dory2012Introduction" class="csl-entry" role="listitem"> Dory, M., Parrish, A., & Berg, B. (2012). <em>Introduction to tornado: Modern web applications with python</em>. O’Reilly Media. Loading
page/aidatho_tc_web_app_presentation.md +13 −65 Original line number Diff line number Diff line --- title: "AIDAHO Tinkering Club:<br>Web App" author: "Markus Mößler" date: "April 15, 2025" date: "April 30, 2025" # date: "April 15, 2025" # date: "December 20, 2024" --- Loading Loading @@ -41,7 +42,7 @@ date: "April 15, 2025" - Frontend and backend are decoupled and communicate via APIs (e.g., REST or GraphQL). - E.g., React or Vue.js for frontend, Tornado or FastAPI (Python) for backend. - 🙂: Scalability, flexible tech stack, improved performance. - 👉 Suits well with containerization. - 👉🏼 Suits well with containerization. - 😐: Requires API design and coordination. </div> Loading Loading @@ -71,7 +72,7 @@ flowchart TD --- ## A Brief Introduction to Docker ## A Brief Introduction to Docker {.small-header} <div style="font-size: 20pt"> Loading @@ -86,17 +87,7 @@ flowchart TD - **Container**: A running instance of an image. - **Dockerfile**: Script to define how to build the image. - **Docker Compose**: Tool to define and run multi-container apps. </div> --- <div style="font-size: 20pt"> - Get Started - [Docker Introduction](https://docs.docker.com/get-started/introduction/) - [Docker Concepts](https://docs.docker.com/get-started/docker-concepts/the-basics/what-is-a-container/) - [Docker Workshop](https://docs.docker.com/get-started/workshop/) - 👉🏼 [Docker Get Started](https://docs.docker.com/get-started) </div> Loading @@ -113,12 +104,12 @@ flowchart TD - **In principle**, Tornado is a web server and a web framework, - it can be used to connect to backend services and to... - render HTML templates, enabling basic UI rendering - 👉 [See: Tornado blog demo on GitHub](https://github.com/tornadoweb/tornado/blob/master/demos/blog/blog.py) - 👉🏼 [See: Tornado blog demo on GitHub](https://github.com/tornadoweb/tornado/blob/master/demos/blog/blog.py) - **Resources**: - The most interesting resources for learning/referencing Tornado: - [https://www.tornadoweb.org/en/stable/](https://www.tornadoweb.org/en/stable/) - Textbook: @Dory2012Introduction - [See also the tornado GitHub](https://github.com/tornadoweb/tornado) - [See also the tornado GitHub repository](https://github.com/tornadoweb/tornado) </div> Loading @@ -128,55 +119,12 @@ flowchart TD <div style="font-size: 20pt"> - The **Tornado Blog Demo** can be packaged into a Docker container to ensure consistent development and deployment. - The **Tornado Blog Demo** can be packaged into a Docker containers to ensure consistent development and deployment. - Structure: - A single container runs the Tornado application. - It connects to a separate PostgreSQL container for the database. - Docker Compose is typically used to orchestrate both services. <!-- ```yml postgres: image: postgres:10.3 environment: POSTGRES_USER: blog POSTGRES_PASSWORD: blog POSTGRES_DB: blog ports: - "3306" blog: build: . links: - postgres ports: - "8888:8888" command: --db_host=postgres ``` ```bash . ├── documentation ├── README.md └── tornado-backend ├── blog.py ├── docker-compose.yml ├── Dockerfile ├── README.md ├── requirements.txt ├── schema.sql ├── static │ └── blog.css └── templates ├── archive.html ├── base.html ├── compose.html ├── create_author.html ├── entry.html ├── feed.xml ├── home.html ├── login.html └── modules └── entry.html ``` --> - One container runs the Tornado application. - Another container runs the PostgreSQL database. - Docker Compose is used to orchestrate both services. - [See also the tornado GitHub repository](https://github.com/tornadoweb/tornado/blob/master/demos/blog/docker-compose.yml) <div style="display: flex; gap: 2em; font-size: 16pt"> Loading Loading @@ -251,7 +199,7 @@ graph TD User["User"] -->|HTTP Requests<br>Port 8888| TornadoServer TornadoServer -->|Renders| Templates TornadoServer -->|Serves| StaticAssets TornadoServer -->|Async Queries<br>Port 5432| PostgreSQL TornadoServer -->|Async Queries<br>Port 3306| PostgreSQL </pre> # A Simple React Frontend on top of a Tornado Backend Loading