-
Notifications
You must be signed in to change notification settings - Fork 1
Proposal: Refactor as a modular library to allow external auth and custom API clients #5
Copy link
Copy link
Open
Description
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:
conductor-core: Ticket management logic (formerlyticket/core).conductor-user: User and authentication management.conductor-console: UI/console code (views, APIs, web assets).conductor-server: Application entry point; orchestrates and aggregates the modules.
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
- File Relocation: Move files to their respective module directories (file moves only, no code logic changes).
- Build Configuration: Rename packages and update
pom.xmlto reflect the new structure. - Interface Definition: Create missing interfaces to decouple module dependencies.
- Auth Integration: Implement
user-authinterface changes and integration. - Utilities: Move shared utility methods to appropriate modules.
- Module Configuration: Abstract the setup/config for each project module(AbstractModule, Guice, etc.).
- Aspects: Refactor AOP/Aspects to align with new package structures.
- Final Polish: Addressing remaining issues discovered during development.
- Documentation: Library integration docs.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels