jfastframework
Docs Español PyPI GitHub

JFastFramework — Roadmap

Phases are ordered by dependency, not by ambition. Each one ends with something usable; nothing is half-shipped into the next phase.

Legend: [x] done · [~] partial, gaps named · [ ] not started

Two proposals sit beside this file and are not commitments: PLAN-NEXT.md for the road to 1.0, and PLAN-CLI.md for growing the CLI from a generator into a lifecycle tool, and PLAN-A5.md for the twenty findings a second external report raised against 0.1.0a4. A step moves here only once it is accepted.


Phase 0 — Kernel (done)

The smallest thing that makes every later phase possible.

Exit criteria met: a service is create_app() and a jfast.toml.


Phase 1 — Built-in plugins (mostly done)

Remaining in this phase


Phase 2 — Multi-tenancy (partial)

The pitch of every SaaS factory and the part everyone gets wrong late. Decide the strategy before writing any of it, because changing it afterwards is a data migration, not a refactor.

What is still a convention: a service that does not turn rls on, or that connects as a superuser, has the repository filter and nothing else. Production refuses the second case; the first is a choice the service makes.


Phase 3 — The generator (partially done)


Phase 3b — Workspaces and the gateway (done)


Phase 4 — Deployment (partially done)


Phase 5 — Agent surface (partially done)

What makes "describe an app and get one" real rather than a demo.


Phase 6 — Hardening (started)


Explicit non-goals

Saying no keeps the kernel small.


Migrating from CometaXMicroservices

  1. Pick one generated service — FrameworkTest is the natural first victim.
  2. Replace its copied core/ and config/ with jfastframework imports.
  3. Move every os.getenv into a plugin settings model.
  4. Convert each modules/<name>/ to the JFast module layout.
  5. Delete the copied files and pin jfastframework~=0.1.
  6. Only then migrate the second service.

Do not migrate all of them at once. The first migration is where the framework's missing pieces surface, and you want to find them with one service at risk.


Phase 3c — Polyglot, queues and the edge (0.4.0)

Phase 3d — More languages and frontends (not started)

Every item here is gated on the same rule: a CI job that builds and runs what it generates. That rule is why Go shipped and Angular did not.

The contract is the extension point. Adding a language is: implement the six sections of docs/service-contract.md, register a LanguageSpec, add a template tree, add the CI job.


Phase 1b — Auth (0.6.0)

Phase 4b — Kubernetes (0.6.0)


Phase 6 — Storage, tenancy and cloud (0.7.0)