Skip to content

Chapter 38: Complete Feature List

Tina4 Python ships 97 built-in features with zero third-party runtime dependencies. This page is the "is it already in the box?" reference. Before you reach for a library, check here first: if Tina4 ships it, use the built-in.

Every feature below is present in all four Tina4 frameworks - Python, PHP, Ruby, and Node.js - with identical behaviour, JSON shapes, environment variables, and error messages. Only the method names change to fit each language; in Python they are snake_case. The "instead of" note in each row names the common dependency the built-in replaces, so you never add it.

Core HTTP

FeatureWhat it does / instead of
HTTP server (zero-dep, dev and production)Serves HTTP with no runtime dependencies; serve --production auto-tunes. Instead of gunicorn/uvicorn config, Apache with mod_php, Puma tuning, or Express
Routing (path and typed params, wildcards)get/post with {id:int} and {...slug} patterns. Instead of a router library
Route groupsGroup a prefix with shared auth and middleware
Request objectParsed body, query, headers, cookies, and files. Instead of body-parser
Response objectJSON, HTML, redirect, file, and stream, plus auto-serialised models
Middleware pipelineBefore and after hooks, short-circuit, per-route
CORS middlewareBuilt-in preflight and headers. Instead of a cors package
Rate limiting middlewareBuilt-in throttle. Instead of express-rate-limit or rack-attack
Static file serving (cache-control revalidation)Serves the public directory with ETag and 304. Instead of serve-static
Health check endpoint/health and /__health, returns 503 on broken files
Graceful shutdownClean SIGTERM and SIGINT drain
SSE and streaming responsesStreams from a generator, hardened. Instead of an SSE library
Convention auto-discovery (routes, models, seeds)File location is configuration. Instead of manual registration

Database

FeatureWhat it does / instead of
Multi-driver database abstractionSQLite, PostgreSQL, MySQL, MSSQL, Firebird, and ODBC through one URL. Instead of per-driver glue
Connection poolingRound-robin connections with a pool size
Query builder (with to_mongo)Fluent JOIN, aggregate, and GROUP BY, plus a NoSQL bridge. Instead of a query-builder library
ORM (active record)Models with save, find, and where. Instead of SQLAlchemy, Eloquent, ActiveRecord, or Prisma
ORM relationships and eager loadinghas_many, has_one, and belongs_to, with include
Soft deletesAn is_deleted flag with restore
Migrations (with auto-migrate on startup)SQL-file migrations, per-engine DDL. Instead of Alembic or Phinx
Race-safe sequencesAtomic id generation across engines
SQL translatorCross-engine dialect rewrite (LIMIT, ROWS, TOP, ILIKE, CONCAT)
Query cache (request and persistent)Dedupe reads; opt-in persistent cache with backends
DocStore (Mongo-style, SQLite fallback)A pymongo-style API with a zero-config local store. Instead of a Mongo dependency in dev
Seeder and FakeDataDeterministic fake data and bulk seeding. Instead of faker and factory libraries
Auto-CRUD REST generatorREST endpoints from a model
ValidatorRequest and body validation. Instead of a validation library

Authentication and Sessions

FeatureWhat it does / instead of
JWT authenticationToken issue and verify, RS256 and HS256. Instead of pyjwt, firebase-jwt, or jsonwebtoken
Password hashing (PBKDF2)Hash and check, timing-safe. Instead of bcrypt or argon libraries
API-key authenticationKey validation with header fallbacks
Sessions (file, redis, valkey, mongo, database)Pluggable backends that degrade loudly. Instead of a session library

Templates and Frontend

FeatureWhat it does / instead of
Frond template engineTwig-compatible, with live blocks, a sandbox, and fragment caching. Instead of Jinja, Twig, ERB, or Handlebars
SCSS compilerBuilt-in SCSS to CSS. Instead of a sass dependency
HtmlElement builderProgrammatic HTML, XSS-safe
tina4-js and frond.js frontendA reactive frontend with AJAX and WebSocket helpers, shipped. Instead of React or Vue for admin UIs

Caching

FeatureWhat it does / instead of
Response cacheGET cache middleware with TTL and an X-Cache header
Unified cache backendsmemory, file, redis, valkey, memcached, mongodb, and database, with a file fallback

Background and Messaging

FeatureWhat it does / instead of
Queue (lite, RabbitMQ, Kafka, Mongo)Jobs with retry to dead-letter and a visibility timeout. Instead of Celery, Bull, or Sidekiq
Background tasksPeriodic in-loop callbacks, no threads
Service runnerCron, daemon, and interval services
Events (observer)on, emit, once, and off, with priorities. Instead of an event-emitter library
Messenger (SMTP and IMAP)Send and read mail, fail-loud IMAP. Instead of nodemailer or mail gems

APIs and Protocols

FeatureWhat it does / instead of
API HTTP clientget, post, upload, download, retry, cookie jar, redirect-safe. Instead of requests, guzzle, faraday, or axios
Swagger and OpenAPIA 3.0.3 spec from routes with $ref schemas and a UI. Instead of a swagger-gen dependency
GraphQLA zero-dep engine with ORM auto-schema and a depth guard. Instead of graphql-core or graphql-js
WSDL and SOAPSOAP 1.1 with auto-WSDL, DTD-rejecting
WebSocket (backplane, rooms, per-route auth)An RFC 6455 server with Redis and NATS scale-out. Instead of ws, socket.io, or actioncable
Realtime collab (WebRTC calls, chat, files)Signaling, chat, and file-transfer domain
MCP server (Streamable HTTP and legacy SSE)A built-in AI tool server

Internationalisation

FeatureWhat it does / instead of
i18n and localizationJSON locales, interpolation, and fallback. Instead of an i18n library

Developer Experience

FeatureWhat it does / instead of
CLI (serve, migrate, generate, test, doctor, setup, deploy)One toolchain. Instead of make plus scripts
Dev toolbar and dashboardA route, request, query, queue, mailbox, and WebSocket inspector
Dev mailboxCaptures outbound mail in dev. Instead of mailhog
Error overlayA rich stack-trace page in dev
Dev reload (WebSocket-primary hot reload)Instant browser reload on change
Structured loggingLevels, JSON and human output, dev and prod file gating
MetricsBuilt-in request and runtime metrics
Inline testing frameworkAssertions attached to functions or described in suites
TestClient (xUnit plus HTTP surface)In-process requests through the real front controller
Live API index and docs searchReflects real signatures; a doc-drift detector
AI context scaffoldingInstalls context for 7 AI tools
DI containerTransient and singleton registrations
.env loader and env helpersPrecedence-correct env loading
Gallery (interactive examples)7 live examples under /__dev/
Plan, ProjectIndex, and FeedbackAn in-dashboard AI developer surface

Security and Request Handling

FeatureWhat it does / instead of
CSRF protectionA form token plus validating middleware
Security-headers middlewareCSP, X-Frame-Options, and Referrer-Policy. Instead of helmet
Request-logging middlewareStructured access logs, on by default in dev
Multipart file uploadsRaw file bytes on the request. Instead of multer or multipart libraries
Named and multiple database connectionsBind a database under a name and point a model at it
Project code and doc search indexSQLite FTS5 over the project
Broken-file trackerdata/.broken sentinels, health returns 503
Dual-port dev serverA stable AI port at base+1000
Interactive REPL consoleAn app-context REPL
Pluggable file-storage backendsLocal and S3 storage. Instead of an S3 SDK for the common path
MongoDB as a database driverMongo through the same SQL-style API
Cookie APIResponse cookies with HttpOnly, SameSite, and Secure
Response compression and ETaggzip plus validators, automatically

Additional Capabilities

FeatureWhat it does / instead of
Doc-truth checkerA drift detector for docs versus code
File and attachment responsesDownload or inline file responses
Queue job handleAn explicit ack, nack, and retry object
Swagger security-scheme and schema registryPer-route security plus reusable $ref schemas
Credential-safe database URL parserParses driver://user:pass@host/db safely
Docker image build commandGenerates a Dockerfile
Route table inspectorLists the route table from the CLI
Self-describing CLI manifestEmits the command set as JSON
Realtime chat domain modelsChat, message, and presence models
Firebird driverFirebird engine support (PHP also has a PDO fallback)
Legacy env-var migration checkerWarns on pre-3.12 un-prefixed variables
Instant HTML CRUD UIA searchable, paginated admin table from SQL
Secure-by-default write routesPOST, PUT, PATCH, and DELETE require auth unless marked public
Template auto-routing and SPA indexTemplates map to routes; an SPA index fallback
HTTP/1.1 method conformanceAuto-HEAD, OPTIONS 204, and 405 with Allow
Code generatorsGenerate models, routes, migrations, and middleware
Built-in Tina4 CSS bundleBootstrap-compatible CSS, shipped. Instead of a CSS-framework dependency
In-dashboard AI agent and supervised sessionsAI chat plus supervised runs in the dashboard

IoT and Device Messaging

FeatureWhat it does / instead of
MQTT 3.1.1 client (QoS 0/1, TLS, retained, Last Will)Pub/sub to any broker (Mosquitto, EMQX, HiveMQ, AWS IoT): publish, subscribe, and consume, with retained messages, a Last Will, and a per-client TLS trust store. QoS 2 is refused loudly, never silently downgraded. Instead of paho-mqtt, php-mqtt, ruby-mqtt, or mqtt.js

Cross-Language Parity

The same 97 features ship in every Tina4 framework. Only the package and the method-name style differ:

FrameworkLanguageInstall
tina4-pythonPython 3.12+pip install tina4-python
tina4-phpPHP 8.2+composer require tina4stack/tina4php
tina4-rubyRuby 3.1+gem install tina4ruby
tina4-nodejsNode.js 22+npm install tina4-nodejs

Ruby ships one extra, language-native feature: ERB as a second template engine alongside Frond, for 98 in total. Frond is the cross-framework engine, so nothing is missing anywhere else.

What Parity Means

  • A route written in one framework maps directly to the others; only the syntax changes.
  • A Frond template renders the same under any of the four.
  • A test written against one framework's test client ports line-for-line to the others.
  • The same TINA4_* environment variables are honoured everywhere, with the same meaning.

Verification

Every feature is backed by real tests in all four frameworks, run against real dependencies - no mocks. A feature is not shipped until its tests pass in Python, PHP, Ruby, and Node.js, and a bug fix lands in all four before it closes.

What Is Not in Tina4

Tina4 stays deliberately small. It carries zero third-party runtime dependencies, so there is no large tree to audit or update. The backends for queues, cache, sessions, and mail are configuration choices, not vendor lock-in: point an environment variable at Redis, RabbitMQ, or MongoDB and the same code keeps working. The goal is a framework you can read in a weekend and rely on for years.

Sponsored with 🩵 by Code InfinityCode Infinity