fof/user-directory
A Flarum extension that adds a customizable user directory and member list, with searchable profiles, filters, sorting, and user cards to help communities discover and browse members.
Architecture fit
fof/user-directory is not a general-purpose Laravel package — it is a Flarum extension. Flarum is a PHP forum application built on Laravel/Illuminate components, so the package shares the ecosystem but not the integration surface: it registers via Flarum's extension bootstrap (extend.php), ships migrations, listeners, and a Mithril/ES6 frontend bundle, and is installed into a Flarum instance rather than composer require'd into an arbitrary Laravel app. Architecture fit is therefore binary: it is a strong fit if Flarum is the community platform, and a non-fit for any other Laravel application without building a separate Flarum deployment or SSO bridge. Its function — a permission-gated, publicly browsable user directory — is a well-scoped, additive capability (a new route plus a permission), which is architecturally low-risk against core.
Integration feasibility
Mechanically trivial: composer require fof/user-directory, enable in the admin panel, configure group permissions. There is no application code to write, no schema changes to your own models, and no external service dependency. The real feasibility question is version alignment — Flarum major-version compatibility (1.x line, and whatever the 2026-10-23 release targets) must match the host forum exactly. With 0 dependents on the record there is no observable downstream usage to learn from, so treat the first deployment as an unvalidated integration and budget a staging pass.
Technical risk
Key questions
LIKE scan over the users table?Stack fit Proceed only where a Flarum forum already exists or is a committed platform decision. For Laravel applications with an adjacent community need, the correct pattern is Flarum as a bounded context (with shared auth via SSO/OAuth), not an attempt to port this extension into a bespoke Laravel app — the frontend is Mithril-coupled and would be thrown away.
Migration path
Compatibility Pin the extension version against the exact Flarum core and PHP versions in use; record the combination in your dependency manifest. Audit for overlap with extensions that already modify user profiles, search, or permissions — those are the realistic conflict class.
Sequencing Staging install → permission matrix and privacy review (blocking gate) → load test with representative user counts → user comms → production enable → post-launch monitoring window. Do not parallelize the privacy review with the production rollout; it is the only true gate in this workstream.
Maintenance Near-zero routine maintenance (config-only, no custom code), but a recurring upgrade obligation tied to Flarum core releases. Budget a recurring check each core upgrade cycle rather than continuous effort. If you fork, you inherit PHP/JS maintenance you likely do not want.
Support Community support only — GitHub issues and the Flarum discourse forum, no vendor, no SLA. Internally, one named owner should hold the permission matrix and the privacy decision record.
Scaling Watch three things: directory search latency as member count grows, database load from guest/crawler traffic hitting an enumerable route, and pagination behavior. Mitigations are standard — cache the landing view, throttle the route at the edge, exclude from sitemaps if SEO exposure is unwanted, and confirm indexes exist before large-member launches.
Failure modes
Ramp-up Very low for administrators (checkbox configuration, ~1–2 hours including the privacy review), low for engineers (no code, but requires Flarum extension-model familiarity for troubleshooting and upgrades). The non-obvious cost is the governance ramp-up: someone must own the visibility policy, because the extension will faithfully expose whatever it is permitted to expose.
How can I help you explore Laravel packages today?