Skip to content

Open Architectural Questions

These items are not yet decided. Each must be resolved before work begins on the relevant system component. When a decision is made, it moves to Core Decisions and this page is updated.


1. Plugin Architecture Contract

Status: Open — must resolve before v1 alpha
Impact: High — shapes extensibility boundaries for every community plugin

The contract governing what a community plugin can and cannot do needs deliberate design to prevent plugins from accidentally (or maliciously) breaking tenant isolation.

Questions to answer:

  • Which Filament hooks are available to plugins? (Resources, Pages, Navigation items, Actions)
  • Can plugins add new API endpoints, or only extend existing ones?
  • Can plugins define new database tables? If so, must those tables include tenant_id?
  • How are plugin settings stored — per tenant or global?
  • What is the plugin distribution mechanism — Composer packages, a marketplace, or both?

2. Content Versioning

Status: Open Resolved — see Core DecisionsImpact: High — affects database schema for all content tables

Decision: Option 2 — Soft versioning with previous_version JSONB column, implemented via a reusable HasSoftVersioning Eloquent trait. Full details in the decisions page.


3. AI Context Pipeline Design

Status: Open Resolved — see Core DecisionsImpact: Medium — determines AI response quality for church users

Decision: Tenant-scoped TenantContextBuilder with cached aggregate stats, PII filtering, multi-provider driver pattern (AiManager), and streaming via Laravel Reverb. Rate limited to 10 messages/minute per tenant. Full details in the decisions page.


4. Mobile Money Provider Strategy

Status: Open — resolve before premium tier launch
Impact: Medium — first premium feature, shapes payment architecture

Francophone Africa has several dominant mobile money providers with different APIs:

ProviderCoverageAPI Quality
MTN Mobile MoneyWest + Central AfricaREST API available
Orange MoneyWest AfricaREST API, more complex
WaveSenegal, Côte d'IvoireModern REST API
Moov MoneyTogo, BeninOlder API

Questions to answer:

  • Which provider do we integrate first?
  • Do we build direct integrations or use an aggregator (like CinetPay or FedaPay)?
  • How do we handle the fact that API quality and availability vary significantly by country?

5. Local Language Support

Status: Open — post v1 stable, community-driven
Impact: Low for v1 — but worth designing for from the start

Francophone African churches often conduct services mixing French with local languages — Ewe (Togo/Ghana), Lingala (DRC/Congo), Fon (Benin), Baoulé (Côte d'Ivoire), Wolof (Senegal).

Questions to answer:

  • Does the Filament admin UI need to support these languages, or just the public-facing API?
  • How are community language contributions managed and quality-controlled?
  • Can spatie/laravel-translatable be extended to support right-to-left languages if needed?

Contributing

If you speak one of these languages and want to contribute translations, open an issue on GitHub. Community language contributions are among the most valuable the project can receive.

Released under the MIT License.