First Draft of the Webonomicon

Posted

A few months ago I mused about what might go into a lesson on human-scale software. Juanan Pereira and I have now sketched a rough outline, tentatively titled The Webonomicon. The sections below shows the learner persona, the technologies we discuss, and the order of topics, while the repository has working code. There’s a lot left to do, but we’d be grateful for feedback: issues in the repo are the best way to reach us.

Learner Persona

Technologies

Package Purpose
Alpine.js dynamic HTML
Beautiful Soup HTML manipulation
deno JavaScript
FastHTML web framework
Flask web server
Frappe Charts charts
html5validator validation
htmx interaction
httpx HTTP
Jinja2 HTML templating
JWT authentication
Polars tabular data
PrettyTable formatting
PyPika query builder
pytest testing
Selenium testing
snailz synthetic data
SQLite database
SVG.js graphics

Topics

  1. Introduction: what we will learn, how to set up, and the data we will use
  2. HTTP: how browsers and server talk to each other
  3. A Server: building a server with Flask
  4. Using a Database: getting data from SQLite using PyPika
  5. Testing the Server: testing the server with pytest
  6. Serving HTML: generating HTML with Jinja templates
  7. Using Forms: sending data to a server
  8. An Hour of JavaScript: variables, loops, functions, and callbacks
  9. JavaScript in the Browser: using the language in its native habitat
  10. Using HTMX: letting the htmx library do the hard work
  11. Database Migration: managing database schema changes
  12. Permissions: representing and checking who can do what
  13. Authentication: checking the user’s identity
  14. Encryption: keeping secrets safe
  15. Testing in the Browser: using Selenium to test the user interface
  16. Dynamic Graphics: drawing pictures with SVG.js
  17. A Graphical User Interface: handling interactivity in the browser
  18. Accessibility: because everyone should be comfortable
  19. Internationalization: because everyone should be welcome
  20. Logging and Auditing: keeping of track of what’s happened
  21. Session: persistent sessions and JWT
  22. FastHTML: bringing it all together
  23. Designing a Workflow: thinking before coding