- Salesforce: add validation/duplicate/access/storage error classes and restore classification in error handler (400/409/403/503 vs generic 502) - Freebit: add auth/rate-limit/validation/network error classes and restore result-code-based classification (215, 381, 382) - Portal: replace unsafe string→enum casts with typed state variables - BaseRepository: narrow orderBy from unknown to Record<string, "asc"|"desc"> - WHMCS: narrow WhmcsNotFoundError.providerCode from string to union type - Remove unused UnitOfWork service from PrismaModule
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/*.