Roadmap

Everything is subject to change. Even this. Especially this.

Current

This is what's in the framework now

Dependency Injection

  • Using a stupidly simple container.
  • Register Services automatically.
  • Set up concrete implementations of interfaces and abstract classes.

Registries

  • Surfacing a class to the system is as simple as implements Interface.
  • Register different adapters, add services to the dependency injection container, or other uses.

Commands and Events

  • Using a custom-built Command Bus and Tukio for event dispatching.
  • Define a domain model with Commands as input and Events as output.
  • Auto-register Command handlers and Event listeners.
  • Sets up event sourcing for data persistence.

Version 1

This is what I would consider the needed feature set before calling the framework ready for general use.

API

  • Set up a registry and configuration for an Endpoint class so that endpoints can be auto-registered.
  • Use reflection tools to generate an OpenAPI (or similar) spec.
  • Integrate with (or provide adapter to) something like Slim to handle routing.

Markdown

  • Registry system for Markdown customizations.

Data Persistence

Authentication

  • Integrate with some library (what's the PHP equivalent to Omniauth?)
  • Create extendable User entity
  • Some kind of OAuth or JWT scheme to secure APIs
  • Make this effortless. Like, really effortless. Like works-out-of-the-box effortless.

Further Enhancements

The lofty ideas of things beyond version 1.

UI Framework

  • Build encapsulated UI components in PHP
  • Use other design systems as a base and layer customizations on top
  • Use reflection to make a form builder.
  • Or just make a form builder.
  • Seriously, can I have a form builder?

Static Site Generation

  • Have a way to generate HTML pages and save them to disk.
  • Useful for making landing pages or outputting a single-page app

Build System

  • Generate hard-coded configurations and setups for Registries and other high-use classes.
  • Optimize the system when it's in a stable place (staging/production) without compromising development speed.
  • Allow other systems to hook in for generating documentation, web pages, etc.

Smolblog

  • That is why this whole thing started.