Four Languages, One API
Python, Node.js, PHP, and Ruby share the same project structure, CLI, template syntax, route patterns, and .env variables. Learn one, know all four.
One framework, four languages, fifty-five features, zero runtime dependencies.
v3.12.3 (2026-05-05) β full notes
Cross-framework parity sweep. ResponseCache public surface is now middleware-only across all four frameworks β lookup / store / get methods moved private. Ruby's Container predicate gained the ? suffix (has?) to match Python's has() semantically. Every framework's CLAUDE.md and book chapter 33 env-var table grounded in source β Ruby gained 98 lines of newly-documented variables, Node 113. Side fixes: Ruby ai.rb UTF-8 encoding crash and Node serverParity.test.ts runner pattern.
v3.12.2 β Firebird URL auto-detect. Five equivalent forms (//abs/path, /abs/path, /C:/Drive, URL-encoded colon, alias) all resolve transparently β pick whichever reads best. New TINA4_DATABASE_FIREBIRD_PATH env override for Windows backslash paths and split-config setups. PHP also picks up a mysqli localhost+port quirk fix where Docker container connections were silently falling through to the Unix socket lookup.
v3.12.0 β Breaking change. Every framework env var now requires the TINA4_ prefix. The boot guard refuses to start when it spots legacy un-prefixed names (DATABASE_URL, SECRET, SMTP_HOST, HOST_NAME, etc.) and prints the rename map. Run tina4 env --migrate to rewrite your .env in place. Bundled with bug fixes #38 (Postgres UUID-PK transaction abort) and #39 (template auto-routing tightening).
Pick a language. Each book stands on its own β you can read Python cover-to-cover, then pick up the PHP book later and recognise every pattern.
node:http, file-based routing, ESM-only.stream_select server, zero composer deps in core.Every book has a printable PDF with a clickable table of contents. Every chapter stays in sync with the code β release notes, version numbers, and example output are regenerated with every point release.