Module overview
Customer Portal uses layer for a Nuxt package boundary and module for a cohesive product area shown in a shell. A layer can contribute one or more modules.
Start with the agency workflow
Use the platform preset with the business packages that match your workflow. Timesheets and Invoices support service agencies; Products, Planning, and Invoice Products add a storefront, appointment booking, payments, delivery, and sales invoices. Clients can access shared time, purchases, appointments, and issued invoices according to their permissions.
Each business package is optional. You can use Invoices without Timesheets, use Timesheets without invoicing, or extend the portal with your own modules.
Foundation packages
| Package | Responsibility |
|---|---|
core | Headless session, tenancy, authorization, database, registry, and server contracts |
ui | Neutral components, surfaces, dashboards, menus, and fallback layouts |
authentication | Login, registration, verification, and password recovery |
organizations | PROVIDER profile, members, and organization settings |
clients | CLIENT profiles, contacts, archival, and module activation |
preset | Common platform composition |
kit | Configuration and provider migration tooling |
Understand the platform boundaries
Optional business and integration packages
The optional packages extend the shared Clients contract without coupling their feature implementations. Integration packages connect independently installable business packages while keeping their schemas and workflows separate.
| Package | Responsibility |
|---|---|
timesheets | Time entry, projects, rates, approvals, and reporting |
invoices | Standalone sales and received invoice workflows |
invoice-timesheets | Integration between approved billable time and invoice creation |
products | Store configuration, catalog, checkout, purchases, and digital files |
planning | Availability, appointment booking, calendars, meetings, and policies |
invoice-products | Integration between completed product orders and invoices or refunds |
Timesheets
Timesheets contributes time entry, timers, projects, rates, internal and client approvals, and reporting. It contains no invoice routes, APIs, permissions, navigation, or tables.
Invoices
Invoices contributes standalone sales and received invoices, PDF generation, attachments, email delivery, reminders, payments, client access, and invoice history. It can be installed without Timesheets.
Invoice–Timesheets integration
Invoice Timesheets is the optional bridge between the independent packages. It adds Create from timesheets for approved, billable entries and owns the cross-package validation and reopen protection.
Products and Store
Products contributes product and category administration, a configurable storefront, sandbox or Stripe checkout, purchase history, and protected digital delivery. It supports digital products and services independently of appointment scheduling.
Planning and Appointments
Planning adds provider availability, customer booking, reservation holds, appointment management, Google Calendar synchronization, Zoom meetings, retries, and refund-aware rescheduling policies to service products.
Invoice–Products integration
Invoice Products turns paid store orders into immutable sales invoices and records refunds as linked credit notes. Install it only when both Products and Invoices are present.
Example extension: Service Requests
service-requests is an optional example extension for module developers. It is separate from the recommended agency setup. It demonstrates tenant-scoped APIs, typed policies, navigation, dashboard widgets, translations, tests, and a provider-owned PostgreSQL schema.
When building a module, start with Service Requests for a compact example. Study Timesheets for multiple module and surface contributions, complex approvals, and cross-organization access. Study Invoices and Invoice Timesheets for standalone feature composition and an integration that remains outside both source packages.
