AnnouncementsIntroducing Arkoren

    Menu

    Distinguish reusable domain features from service mechanisms, backend drivers, and application policy.

    What's on this page
    1. Understand arks as optional domain features, with no built-in arks currently available.
    2. Separate reusable domain rules from service operations and backend communication.
    3. Keep deployment choices and explicit feature integration under application ownership.
    On this page

    Sending an email is a service operation. Deciding that a completed report needs an email, who receives it, and what the message means is domain behavior. An ark is an optional, reusable domain feature that combines Arkoren services with those concepts and rules.

    Current Availability

    Arkoren has no built-in arks yet. The feature below illustrates the boundary; it is not an installable integration or a promised API.

    An ark is an ordinary Go module that an application explicitly chooses and connects. It is not an automatically discovered plugin. You can use Arkoren’s services directly in application-owned features without introducing an ark.

    Domain Boundaries

    A facade exposes a service operation, such as storing a file or submitting mail. Its driver performs the backend work. Neither needs to decide whether a report is ready for delivery or which recipients are entitled to receive it.

    An ark adds that domain meaning. A reusable report-delivery feature might define a delivery request, track its status, and prepare notification content. It could use storage, queues, and mail without making those services aware of reports.

    Responsibility Owner Report Example
    Portable service behavior Facade and contract Submit a message through the mail service.
    Backend communication Driver Submit that message to a particular mail provider.
    Reusable domain rules Ark Notify recipients when a report becomes ready.
    Deployment and application policy Application Choose the provider and authorize delivery requests.

    The distinction is the meaning of the behavior, not its size. A component does not become an ark merely because it uses several services. Conversely, a small feature can be domain-specific if it defines what a report, membership, or subscription means.

    Feature Composition

    In the hypothetical report feature, your application supplies configured services and connects the feature to its entry points:

    Application: authorizes delivery and supplies configured services
      -> Report feature: tracks readiness and prepares notification content
           -> Storage facade -> Selected storage driver
           -> Mail facade    -> Selected mail driver

    The feature owns its domain rules. The application still chooses backends, credentials, exposure, and resource ownership. When a feature needs tables, routes, or background work, those are explicit integration responsibilities, not a reason to hide construction or startup inside ordinary service calls.

    Using portable contracts lets a domain feature work through selected service implementations. It does not remove provider constraints: an in-memory backend still loses state on restart, and unsupported operations still need an explicit decision.

    For your own features, use typed dependencies and explicit registration as described in Application Composition. That composition pattern applies whether the feature lives in your application or is eventually shared as a separate module.

    Open a bulk documentation archive?

    This file contains every guide in its scope, not API declarations. Loading it all into an agent can exhaust its context window and increase processing time and cost. For coding tasks, start with the index and read only the relevant pages.

    Use the full archive for offline indexing, bulk processing, or deliberate large-context use.

    Browse the index instead
    Open archive