Skip to content

[Clients]: Epic — Module Clients #14

Open
12 of 16 issues completed
Open

Description

@naui95

Epic — Clients Module

Manages the company's book of clients ("Relations" in the data model) — businesses, freelancers, and prospects — along with their contacts, addresses, and communication history.

Models

Relation (table: relations), Contact, Address, Communication, ClientCustom (PK: client_custom_id)

What exists

  • RelationResource, ContactResource ✅
  • Full CRUD tests in Modules/Clients/Tests/Feature/ ✅

Planned sub-issues

Notes

The model is Relation, not Client. Table: relations. The primary contact is resolved via Relation → Contact → Communications.

Activity

  1. added this to the v2.0.0-alpha milestone on Jun 16, 2024
  2. transferred this issue fromon Jan 6, 2025
  3. added theissue type on Jul 14, 2025
  4. changed the title [-]Clients[/-] [+][Clients] Epic: Module Clients[/+] on Jul 14, 2025
  5. 20 remaining items

  6. nielsdrost7 commented on Jul 16, 2026

    @nielsdrost7
    Collaborator

    SMART Plan — Clients module epic status

    Context/Epic: Clients

    This is an epic/tracking issue, not a single feature — it aggregates the sub-issues below. The Measurable section tracks sub-issue completion rather than fabricating tests for the epic itself; each sub-issue gets its own SMART Plan when it's processed individually.

    Specific

    Track delivery of the Clients module: Relation/Contact CRUD (done) plus planned expansions — client-detail workflows, form simplification, bulk import, per-client currency/CC-email, notes management, duplicate merging, and the client portal.

    Measurable

    Definition of done for this epic: all sub-issues above are closed and Modules/Clients/Tests/Feature/ covers each new capability.

    Achievable

    1. [Clients]: Client detail — tabs for invoices, quotes, expenses and files #221 (client detail view with tabs) is the structural prerequisite for [Clients]: Create a quote when viewing a specific client #217, [Clients]: Create an invoice when viewing a specific client #218, [Clients]: Edit a client from the client detail view #219, and [Clients]: Hide delete button when client has invoices #220 — none of those can be built against a page that doesn't exist. Sequence it first.
    2. [Clients]: Assign users to clients for access control #482 (relation_user pivot) is a schema change that [Clients]: User Accounts for Customers (Client Portal) #392 (client portal) is explicitly blocked on — and today's relation_id-on-users schema can only represent one client per user, not several, so [Clients]: Assign users to clients for access control #482 needs a real migration decision (add a pivot table, or accept the one-client-per-user limitation) before [Clients]: User Accounts for Customers (Client Portal) #392 can proceed.
    3. [Clients]: Per-client currency preference #381 (currency), [Core]: Add CC email addresses per client for invoice emails #394 (CC email), [Clients]: Delete and Edit client notes #402 (notes) are independent, small, and unblocked — good candidates to pick up in parallel with the [Clients]: Client detail — tabs for invoices, quotes, expenses and files #221 work.
    4. [Clients]: Import clients in bulk for data migration #141 (CSV import) and [Clients]: Merge duplicate clients #481 (merge duplicates) are independent, larger pieces of work with no cross-dependencies on the others.
    5. [Clients]: Client list — implement row action options #29 (quick actions) and [Clients]: :Slim down the Client Form #83 (form simplification) are small, independent UI polish items.

    Relevant

    The model is Relation, not Client (table: relations); it's the anchor entity for Invoices, Quotes, Projects, and Expenses across the app, so client-detail visibility (#221) has outsized leverage relative to its own scope.

    Time-bound

    No fixed date — epic closes when its sub-issues close. Re-review at each sprint boundary.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    refinedRefined with SMART plan / test suggestions

    Type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions