Skip to content

Proposal: Refactor as a modular library to allow external auth and custom API clients #5

@ashu82492

Description

@ashu82492

Problem

Conductor's monolithic architecture prevents integration with existing ecosystems:

  • Auth/User Lock-in: Forces use of built-in stack; cannot integrate with existing identity providers.
  • No Custom Client Support: Lacks ability to expose custom APIs for mobile/third-party UIs.
  • Workflow Validation: Soft validations allow state transitions but fail to propagate error messages to clients.

Proposed Solution

Refactor the service into a library with segregated modules (user, auth, console, tickets). This must support bypassing built-in modules for custom implementations and exposing validation failure messages to clients.

Plan

Break down the monolithic conductor-server into the following distinct modules:

  1. conductor-core: Ticket management logic (formerly ticket/core).
  2. conductor-user: User and authentication management.
  3. conductor-console: UI/console code (views, APIs, web assets).
  4. conductor-server: Application entry point; orchestrates and aggregates the modules.
Image

The core and model packages can be used as a library.

Steps

Since this is a significant refactor, proposing the following workflow:

  • Create a feature branch (e.g., release-refactor) to target all PRs against.
  • Note: Intermediate PRs may not be fully compilable/runnable until the refactor is complete.

PR Roadmap

  1. File Relocation: Move files to their respective module directories (file moves only, no code logic changes).
  2. Build Configuration: Rename packages and update pom.xml to reflect the new structure.
  3. Interface Definition: Create missing interfaces to decouple module dependencies.
  4. Auth Integration: Implement user-auth interface changes and integration.
  5. Utilities: Move shared utility methods to appropriate modules.
  6. Module Configuration: Abstract the setup/config for each project module(AbstractModule, Guice, etc.).
  7. Aspects: Refactor AOP/Aspects to align with new package structures.
  8. Final Polish: Addressing remaining issues discovered during development.
  9. Documentation: Library integration docs.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions