Skip to content

Status and roadmap

This page shows what works in Dox today, what is missing and what is planned.

Packages

What the states mean:

  • Stable: works, has tests and has had real use.
  • New: works and has tests, but it is newer and has had less real use.

All packages follow semantic versioning: a breaking change only comes in a new major version.

Each package has its own version number. Some packages live in their own repos. See Contribute.

Package What it does State Tests
dox_core Routes, middleware, controllers, request and response, isolates, config, the IoC container, exception handler, sessions, CSRF, rate limit, security headers, health check, test client Stable 528 tests in 61 files. CI runs them on the native server.
dox_orm Query builder, models, relations, whereHas, scopes, casts, withCount, transactions, row locks, many to many writes, polymorphic relations, factories, seeders Stable 549 tests in 51 files. CI runs them on Postgres, MariaDB, MySQL 8.4 and SQLite.
dox_validation @Dto rules, fluent schemas, JSON Schema, Standard Schema Stable 149 tests in 8 files
dox_builder Code generator for models, DTOs, env classes, the container and OpenAPI Stable 86 tests in 5 files
dox_annotation Annotations used by the generator Stable 6 tests in 1 file. Mostly tested through dox_builder.
dox (CLI) dox create, dox serve, dox build, make:*, migration:*, db:seed, queue:*, schedule:*, package commands Stable 132 tests in 12 files
dox_migration Migrations for Postgres, MySQL, MariaDB and SQLite Stable 36 tests in 5 files. CI runs them on each database.
dox_auth JWT and session auth guards and middleware, access tokens you can revoke, gates and policies Stable 201 tests in 8 files
dox_cache Memory, file and Redis cache, tags, locks, encryption Stable 126 tests in 7 files, with Redis in CI
dox_cache_database The database cache store, for dox_cache New 78 tests in 4 files, with SQLite, Postgres, MariaDB and MySQL in CI
dox_storage Local disk and S3 (and S3-compatible) storage Stable 153 tests in 10 files, with MinIO in CI
dox_openapi OpenAPI 3.1 document and a docs page Stable 63 tests in 4 files
dox_socketio Socket.IO v4 server with a Redis adapter Stable 119 tests in 11 files, with Redis and the real socket.io-client in CI
dox_queue Queues and jobs, the Redis and sync drivers, chains, batches, workers New 46 tests in 7 files. Most queue tests run in dox_queue_database, on every store.
dox_queue_database The database queue driver, the batch store and afterCommit for dox_queue New 234 tests in 16 files, with SQLite, Postgres, MariaDB and Redis in CI
dox_scheduler Run tasks on a schedule New 106 tests in 6 files, with Redis in CI
dox_mcp MCP server: tools for AI clients over Streamable HTTP, signed sessions New 15 tests in 1 file
dox_view Views: .dox.html templates with layouts and components New 40 tests in 2 files
dox_inertia Inertia.js server side: single page apps with React, Vue or Svelte and Dox controllers New 34 tests in 2 files
dox_mailer Email with SMTP, Amazon SES, Azure, Resend, Mailgun, Postmark and sendmail, mailables, Markdown mail, notifications New 168 tests in 16 files, with a fake SMTP server
dox_http_native Native HTTP/1.1 and WebSocket server in Rust, on the isolate's own thread. Dox has no other server. New 65 Dart tests in 4 files, and 32 Rust tests
dox_postgres_native Native Postgres client (Rust tokio-postgres), the Postgres driver. Has TLS (sslmode, sslRootCert). New 41 tests in 7 files, plus the dox_orm tests
dox_mysql_native Native MySQL and MariaDB client (Rust mysql_async), the MySQL driver. Has TLS. New 30 tests in 2 files, plus the dox_orm tests

Hash (bcrypt password hashing) is in dox_core.

About test coverage

The repos do not measure line coverage. Counts are test( calls in each package's test/ folder. A test inside a loop counts once, so dart test can report more tests. The CI setup of the main repo is in .github/workflows/test.yaml. The packages in their own repos have their own CI.

What Dox does not have yet

Feature Status What to do today
Events and listeners Not there Model events are there. See Model events.
Password reset Not there Make a signed, short-lived token, send it with Mail and check it in a controller.
Localization Partly Validation messages can follow the request locale (req.locale). There is no general translation helper. Keep your own message maps.

Planned

Later

  • Localization

The package CHANGELOGs have an Unreleased section when changes wait for the next version.

How to help

  • Try Dox and open an issue when something breaks or is missing.
  • Pick an item above and open an issue first, so the design can be discussed.
  • See Contribute to set up the repo and run the tests.