Skip to content

Component Status

Aim is pre-1.0 — every package in the workspace is at 0.4.0, and the project's own CHANGELOG calls 0.4.0 a "beta". This page says, package by package, what that means in practice: what is tested where, what has known gaps, and what to check before relying on a given piece for production traffic.

What the statuses mean

  • Stable — Exercised by tests that run in CI on every push, including an integration test against the real backend where one exists (a live PostgreSQL server, a real wrangler dev, and so on). No known blocking issues. Breaking changes are announced in the Migration Guide.
  • Beta — Implemented, documented, and used in the examples in this repository, but with a narrower test net than "Stable" — unit tests only, an integration suite that exists but does not run in CI by default, or a documented scope gap (a feature that is planned but missing).
  • Experimental — The platform integration itself is marked experimental by something Aim depends on, or has not been run against a real deployment yet.
  • Not yet published — In the repository and documented, but publish_to: none, so it cannot be installed from pub.dev.

Matrix

ComponentStatusNotes
aim_core (routing, middleware, Context)StableThe largest unit-test suite in the repository; every runtime adapter depends on it
aim_server (Dart VM / dart:io)StableThe original adapter; unit-tested in CI
aim_server_* middleware (CORS, cookie, form, multipart, static, logger, SSE, JWT, basic auth)BetaUnit-tested through TestClient in CI; JWT implements HS256 only today (RS256/ES256 are planned); no dedicated security audit
aim_postgres (PostgreSQL driver)StableIntegration-tested against real PostgreSQL (password, MD5, and SCRAM-SHA-256 auth) in CI on every push
aim_sqlite (SQLite driver)Not yet publishedpublish_to: none. Its test suite runs in CI, but CI only runs on ubuntu-latest — there is no macOS or Windows CI job, despite the driver documenting a Windows library search path
aim_orm / aim_orm_postgres / aim_orm_codegen (ORM)BetaPublished; PostgreSQL only, no relations/eager-loading yet. aim_orm_codegen has an integration test that runs in CI, but its build_runner "golden" tests — the spec for the generated code — are tagged slow and are not run by CI's default job
aim_cliBetaBroad unit coverage, but the Docker-dependent db:* command tests are tagged integration and, unlike aim_postgres/aim_orm_codegen/aim_workers, CI has no step that runs them — so the CLI's migration commands are not verified against a real database on every push
aim_workers (Cloudflare Workers)BetaCompiles to WebAssembly; integration-tested against a real wrangler dev in CI
aim_deno (Supabase Edge Functions, other Deno runtimes)BetaVerified against a local Supabase stack; a production deploy is not yet verified
aim_functions (Cloud Functions for Firebase)Experimentalfirebase_functions's own Dart support is marked experimental; this adapter inherits that status

What CI actually runs

.github/workflows/test.yml runs on ubuntu-latest with the Dart stable channel, on every push and pull request to main. In one job it:

  1. Runs dart analyze --fatal-warnings over the whole workspace.
  2. Runs dart test in every packages/*/, examples/*/, and tools/*/ directory that has a test file (skipping directories with none).
  3. Runs aim_workers's integration suite against a real wrangler dev.
  4. Runs aim_postgres's integration suite against real PostgreSQL containers.
  5. Runs aim_orm_codegen's integration suite against real PostgreSQL.

Not covered by CI: Deno/Supabase Edge Functions, Cloud Functions for Firebase, aim_sqlite's and aim_cli's Docker-dependent test tags, the ORM codegen "golden" tests, and any platform other than Linux. Contributors run those locally — see the commands in each package's test/README.md or dart_test.yaml where one exists.

Compatibility and releases

  • All aim_* packages in the workspace share one version and are released together — a project that depends on more than one should keep them on matching versions.
  • Breaking changes are called out per release in the Migration Guide and in the root CHANGELOG. Before 1.0, a breaking change can land in any release.
  • Every package requires Dart SDK ^3.13.0. The team develops against 3.13.3 (pinned via mise.toml); CI runs against whatever Dart currently publishes as stable.

Security reporting

There is no SECURITY.md yet, so there is no dedicated private reporting channel. Until one exists, the only place to report a suspected vulnerability is the public GitHub issue tracker. Defining a private channel is an open item for the project.

Contributing

There is no CONTRIBUTING.md yet either. Open an issue or a pull request on GitHub to start a conversation before sending a large change.

Growing a project

See Best Practices for the recommended layout (routes, middleware, models, services) as an application grows past a single file.

Benchmarks

There is no benchmark suite in the repository. Statements about Aim's performance on this site are limited to what can be read directly from the implementation (for example, that routing is a linear scan of registered routes with the first match winning) rather than comparative numbers.

Released under the MIT License.