You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Deliver the People capability in the SAP-style ERP application repository as an independently owned, testable module. The domain specification remains authoritative for business behavior; API, Filament 5, and Livewire 4 are one-to-one presentation packages and must not move business rules into presentation code.
The People module owns Workforce records, recruitment, onboarding, skills, absence, performance, learning, compensation, and payroll interfaces. It is the authoritative boundary for this capability and must remain independently installable, testable, versioned, enabled, and reusable across compatible Liberu applications.
2. Full feature scope
Workforce records: implement the complete lifecycle, validation, permissions, failure handling, audit evidence, and operator/user feedback required by this capability.
Recruitment: implement the complete lifecycle, validation, permissions, failure handling, audit evidence, and operator/user feedback required by this capability.
Onboarding: implement the complete lifecycle, validation, permissions, failure handling, audit evidence, and operator/user feedback required by this capability.
Skills: implement the complete lifecycle, validation, permissions, failure handling, audit evidence, and operator/user feedback required by this capability.
Absence: implement the complete lifecycle, validation, permissions, failure handling, audit evidence, and operator/user feedback required by this capability.
Performance: implement the complete lifecycle, validation, permissions, failure handling, audit evidence, and operator/user feedback required by this capability.
Learning: implement the complete lifecycle, validation, permissions, failure handling, audit evidence, and operator/user feedback required by this capability.
Compensation: implement the complete lifecycle, validation, permissions, failure handling, audit evidence, and operator/user feedback required by this capability.
Payroll interfaces: implement the complete lifecycle, validation, permissions, failure handling, audit evidence, and operator/user feedback required by this capability.
3. Ownership and boundaries
Own the capability's domain rules, policies, actions, queries, events, persistence, migrations, configuration, audit semantics, and failure recovery.
Expose stable contracts, immutable DTOs/read models, commands, queries, and past-tense domain events where other modules have a legitimate integration need.
Consume identity, organizations/teams, authorization, settings, files, notifications, queues, localization, currency, and observability from the shared foundation rather than duplicating them.
Never depend on an application's App\ classes, another module's private tables/models, a provider SDK in provider-neutral code, or an optional presentation framework.
Keep Filament, Livewire, and HTTP API logic in matching one-to-one presentation packages when those surfaces are required.
4. Implementation strategy
Domain model
Define aggregates, entities, value objects, enums, invariants, lifecycle states, and transition rules using the terminology in this specification.
Make invalid states unrepresentable where practical and enforce remaining invariants at every mutation boundary.
Use opaque stable identifiers and explicit actor, tenant, locale, timezone, and currency context where relevant.
API contract
SAP: People API
Canonical one-to-one API module specification
API package:module-sap-people-api Matching domain module:sap-people Application: SAP Source feature:People Architecture:API.md · MODULES.md · TESTING.md
1. Purpose and ownership
This optional API presentation package exposes approved HTTP operations for the People domain module. It presents exactly one independent module, delegates all authoritative behavior to that module's public actions/queries/policies, and contains no other module's API logic.
The domain capability includes:
Workforce records
recruitment
onboarding
skills
absence
performance
learning
compensation
payroll interfaces
Installation does not expose every capability automatically. The host application selects this package, API version, audiences, route groups, and operations in its API manifest.
This optional Filament 5 presentation package presents exactly one independent domain module. It contributes reusable resources, pages, widgets, schemas, tables, infolists, and actions to application-owned panels while delegating authorization, validation, tenancy, persistence, and business rules to the sap-people public boundary. It must not contain another module's UI or depend on application App\ classes.
2. Module-specific surfaces
Workforce records: resource/table/form/action or page behavior for this module's authorized workflow.
Recruitment: resource/table/form/action or page behavior for this module's authorized workflow.
Onboarding: resource/table/form/action or page behavior for this module's authorized workflow.
Skills: resource/table/form/action or page behavior for this module's authorized workflow.
Absence: resource/table/form/action or page behavior for this module's authorized workflow.
Performance: resource/table/form/action or page behavior for this module's authorized workflow.
Learning: resource/table/form/action or page behavior for this module's authorized workflow.
Compensation: resource/table/form/action or page behavior for this module's authorized workflow.
Payroll interfaces: resource/table/form/action or page behavior for this module's authorized workflow.
3. Filament 5 implementation
Register a stable module-sap-people-filament plugin and discover only classes in this package's namespace; applications attach it explicitly to each eligible panel.
Keep resources under src/Resources, resource pages and relation managers beneath their resource, and shared module-local widgets/pages under src/Widgets and src/Pages.
This optional Livewire 4 presentation package provides interactive server-driven components for exactly one independent domain module. Components coordinate public queries/actions and presentation state; they do not own persistence, authorization decisions, tenancy, business rules, or theme identity. The package has no dependency on application App\ classes or another module's internals.
2. Module-specific interactions
Workforce records: interactive component state, validation feedback, loading, and failure recovery for this domain capability.
Recruitment: interactive component state, validation feedback, loading, and failure recovery for this domain capability.
Onboarding: interactive component state, validation feedback, loading, and failure recovery for this domain capability.
Skills: interactive component state, validation feedback, loading, and failure recovery for this domain capability.
Absence: interactive component state, validation feedback, loading, and failure recovery for this domain capability.
Performance: interactive component state, validation feedback, loading, and failure recovery for this domain capability.
Learning: interactive component state, validation feedback, loading, and failure recovery for this domain capability.
Compensation: interactive component state, validation feedback, loading, and failure recovery for this domain capability.
Payroll interfaces: interactive component state, validation feedback, loading, and failure recovery for this domain capability.
3. Livewire 4 implementation
Register a stable module-sap-people-livewire component namespace and service provider; use explicit aliases such as <livewire:module-sap-people::component-name /> according to LIVEWIRE.md.
Keep reusable components under src/Components, full-page components under src/Pages, and package views under resources/views.
Acceptance criteria
Domain ownership, boundaries, data lifecycle, permissions, tenancy, events, failure recovery, telemetry, and migrations match the domain specification.
API routes/operations/events, versioning, authentication, authorization scopes, validation, idempotency, errors, pagination, rate limits, and observability match the API specification.
Filament package identity, panel/resource/page/widget inventory, authorization, tenancy, navigation, theme integration, accessibility, and cache/discovery behavior match the Filament specification.
Livewire package identity, aliases, component inventory, state/actions/events, loading/failure states, authorization, tenancy, accessibility, and lifecycle behavior match the Livewire specification.
Unit, feature, contract, architecture, security, compatibility, migration/upgrade, and presentation tests cover allowed, denied, invalid, duplicate, concurrent, wrong-tenant, partial-failure, and recovery paths as applicable.
README, changelog, runbook, API/presentation documentation, release notes, and adoption/upgrade guidance are complete.
Explicit exclusions
Do not implement unrelated independent modules, application App namespace coupling inside reusable packages, private cross-module table/model access, provider SDK leakage into provider-neutral code, or business authorization solely in UI/API presentation layers.
Implementation epic
Deliver the People capability in the SAP-style ERP application repository as an independently owned, testable module. The domain specification remains authoritative for business behavior; API, Filament 5, and Livewire 4 are one-to-one presentation packages and must not move business rules into presentation code.
Source specifications
Specification details
Domain
SAP: People
Canonical independent module specification
Domain module:
sap-peopleApplication: SAP
Capability group: Module plan
Source scope: SAP.md
Architecture: MODULES.md · TESTING.md · API.md · FILAMENT.md · LIVEWIRE.md
1. Purpose
The People module owns Workforce records, recruitment, onboarding, skills, absence, performance, learning, compensation, and payroll interfaces. It is the authoritative boundary for this capability and must remain independently installable, testable, versioned, enabled, and reusable across compatible Liberu applications.
2. Full feature scope
3. Ownership and boundaries
App\classes, another module's private tables/models, a provider SDK in provider-neutral code, or an optional presentation framework.4. Implementation strategy
Domain model
API contract
SAP: People API
Canonical one-to-one API module specification
API package:
module-sap-people-apiMatching domain module:
sap-peopleApplication: SAP
Source feature: People
Architecture: API.md · MODULES.md · TESTING.md
1. Purpose and ownership
This optional API presentation package exposes approved HTTP operations for the People domain module. It presents exactly one independent module, delegates all authoritative behavior to that module's public actions/queries/policies, and contains no other module's API logic.
The domain capability includes:
Installation does not expose every capability automatically. The host application selects this package, API version, audiences, route groups, and operations in its API manifest.
2. Contract design
Filament surface
SAP: People Filament
Canonical one-to-one Filament 5 implementation
Filament package:
module-sap-people-filamentMatching domain module:
sap-peopleApplication: SAP
Source feature: People
Architecture: FILAMENT.md · MODULES.md · TESTING.md
1. Purpose and ownership
This optional Filament 5 presentation package presents exactly one independent domain module. It contributes reusable resources, pages, widgets, schemas, tables, infolists, and actions to application-owned panels while delegating authorization, validation, tenancy, persistence, and business rules to the
sap-peoplepublic boundary. It must not contain another module's UI or depend on applicationApp\classes.2. Module-specific surfaces
3. Filament 5 implementation
module-sap-people-filamentplugin and discover only classes in this package's namespace; applications attach it explicitly to each eligible panel.src/Resources, resource pages and relation managers beneath their resource, and shared module-local widgets/pages undersrc/Widgetsandsrc/Pages.Livewire surface
SAP: People Livewire
Canonical one-to-one Livewire 4 implementation
Livewire package:
module-sap-people-livewireMatching domain module:
sap-peopleApplication: SAP
Source feature: People
Architecture: LIVEWIRE.md · MODULES.md · TESTING.md
1. Purpose and ownership
This optional Livewire 4 presentation package provides interactive server-driven components for exactly one independent domain module. Components coordinate public queries/actions and presentation state; they do not own persistence, authorization decisions, tenancy, business rules, or theme identity. The package has no dependency on application
App\classes or another module's internals.2. Module-specific interactions
3. Livewire 4 implementation
module-sap-people-livewirecomponent namespace and service provider; use explicit aliases such as<livewire:module-sap-people::component-name />according to LIVEWIRE.md.src/Components, full-page components undersrc/Pages, and package views underresources/views.Acceptance criteria
Explicit exclusions
Do not implement unrelated independent modules, application App namespace coupling inside reusable packages, private cross-module table/model access, provider SDK leakage into provider-neutral code, or business authorization solely in UI/API presentation layers.