The problem
Server-rendered SaaS still wins for admin panels, billing portals, and anything SEO matters for. Teams reach for Rails or Django, then add a Python AI script beside it for the one smart feature - two runtimes, two deploy pipelines, two places secrets leak.
Why Ecko
- webkit batteries
- Auto-escaping templates, signed cookies, session helpers, and CORS/security middleware. The package docs describe it as SaaS web-app batteries - which is the shape most products need.
- std.web router
- Routes with
:params, middleware chains, and traversal-safe static mounts.GETroutes answerHEADautomatically for health checks. - ai in the handler
- Call
aiinside the same request handler that renders the page. No internal HTTP hop to a separate inference service for simple flows.
In practice
import std.web import std.http import webkit fn dashboard(req) { team = webkit.query(req, "team", "you") summary = ai "Summarise this week's usage for {team}" webkit.html( webkit.render(r"""<h1>{team}</h1><p>{summary}</p>""", { team: team, summary: summary }), ) } app = webkit.app({ routes: [web.get("/dashboard", dashboard)], security: true }) http.serve(8080, app)
Try it on your workload.