Modules¶
LaraFly publishes one fireflyframework/larafly library containing the 36 component directories under
packages/*, each with its own tests or metadata. The 39 guides below explain their public surfaces.
Several components carry more than one guide: firefly/data answers for Data & Repositories,
Relational Data and Transactions. Laravel discovers the root library's providers, and configuration
selects optional features. A bean you declare wins over the framework default.
Two idioms deliver that outcome, and
which one you are looking at matters the moment you go reading the source. 24 of the 36 packages carry a
#[Configuration] class whose #[Bean] methods sit behind #[ConditionalOnMissingBean], so a bean of yours
makes the framework's back off silently — packages/data/src/DataAutoConfiguration.php is the model. The
other 12 have no such class to go looking for; firefly/web, the one nearly every reader installs, guards
each binding in WebServiceProvider::register() with a bound() check instead, first-one-wins by hand.
Foundation
Error Handling · Dependency Injection ·
Configuration · Application Context ·
Auto-Configuration · Validation
Stereotypes and the compiled component scan, profiles and #[ConfigProperties] binding, the phased boot, #[Configuration]/#[Bean] starters with conditions, constraint attributes behind #[Valid], and the RFC-7807 error model everything else throws into.
Web & API
Web Layer · Web Filters · OpenAPI
#[RestController] routing off a compiled RouteManifest, the ordered WebFilter chain on Laravel's middleware stack, and an OpenAPI 3.1 document generated from those same manifests.
Resilience & Scheduling
Resilience · Scheduling · Scheduling Database Locks
Retry, circuit breaker, bulkhead, time limiter, rate limiter and fallback, each a call(callable) object built from firefly.resilience.*; #[Scheduled] methods held by a cache, database-lease, MySQL named or Postgres-advisory distributed lock.
Data & Domain
Domain (DDD) · Data & Repositories ·
Relational Data · Transactions
Spring-Data-shaped repositories — derived queries, query by example, #[Modifying]/#[Projection]/#[Lock]/#[EntityGraph], Page/Slice, the DataAccessException family — over Eloquent, with #[Transactional] demarcating the boundary.
Eventing & Messaging
EDA · EDA Brokers · EDA Database Outbox · Messaging · Webhooks · Callbacks · Orchestration · Event Sourcing
One EventPublisher port with in-memory, queue, RabbitMQ, database (any SQL server), Postgres and Kafka adapters, a genuine same-transaction outbox safe with concurrent consumers on every database, and the lower-level raw-bytes broker layer beneath it. Signed inbound webhooks and outbound callbacks ride on the same bus.
CQRS
Command/Query
A CommandBus/QueryBus mediator with correlation, validation, authorization, caching and metrics in the pipeline, and a bridge that republishes committed domain events onto the event bus.
Security
Security · OAuth2 Client ·
OAuth2 Authorization Server
A Spring-Security-6-shaped principal model: session-persisted context, form login, HTTP Basic, JWT, deny-by-default HttpSecurity URL rules, method security on any stereotyped bean, and both halves of OAuth2 — signing in with a provider, and being one.
Operations Actuator · Observability · Tracing · Logging · Admin Dashboard · Bean Graph · Data Browser · Feature Flags Health, info and metrics over an actuator surface, OpenTelemetry-shaped tracing with W3C propagation, structured JSON/ECS/Logstash logging, a server-rendered dashboard with a bean graph and database browser, and feature flags changed at runtime.
Testing
Testing · Integration Testing
A boot harness, recording doubles for every port, and web and data test slices; the real-Chromium suite that drives the skeleton's own pages is the framework's own, not something firefly/testing ships — see Contributing.
Tooling
Installer
The global firefly new installer and the firefly/skeleton create-project template.
Every configuration key the framework reads is written out once, with its default and the reason it has
that default, in the skeleton's config/firefly.php. That file is the reference, and it is held to being
one: a key the framework reads that the reference does not document is a failing test.