Merge SfCompletionWorkflow and NewCustomerSignupWorkflow into a single AccountCreationWorkflowService, remove legacy /auth/migrate endpoint and WhmcsLinkWorkflow, extract shared OTP email pattern into OtpEmailService, and improve PORTAL_EXISTS redirect UX with email pre-fill. - Consolidate signup/ directory services into steps/ (PortalUserCreationService, WhmcsCleanupService) and new AccountCreationWorkflowService - Rename WhmcsMigrationWorkflowService to AccountMigrationWorkflowService - Remove dead code: WhmcsLinkWorkflowService, auth.controller /migrate endpoint - Extract OtpEmailService from duplicated login/verification OTP email logic - Pass email query param on PORTAL_EXISTS redirect for login pre-fill - Delete 1977 lines of legacy code, add ~350 lines of consolidated logic
Portal Structure Overview
This app follows a feature-first architecture with a consolidated lib for shared utilities.
Structure:
src/
app/ # Next.js App Router
components/ # Design system (ui, layout, common)
features/ # Feature modules (auth, billing, subscriptions, ...)
lib/ # Core utils and services (api, query, env, utils, types)
providers/ # App-wide providers (e.g., QueryProvider)
styles/ # Global styles
Key changes:
- Merged former
core/andshared/intolib/. - Moved
components/providers/query-provider.tsxtoproviders/query-provider.tsx. - Introduced path aliases:
@/lib/*,@/providers/*.
Migration tips:
- Prefer importing from
@/lib/...going forward. - All
@/shared/*or@/core/*imports have been removed; use@/lib/*.