barsa f447ba1800 Refactor codebase: eliminate duplication, standardize patterns, resolve circular deps
Phase 1: Portal Duplication Cleanup
- Delete apps/portal/src/lib/ directory (12 duplicate files)
- Update imports to use canonical locations (core/, shared/)

Phase 2: Domain Package Standardization
- Add contract.ts to notifications and checkout modules
- Update billing schema to derive enums from contract

Phase 3: BFF Error Handling
- Remove hardcoded test SIM number from SimValidationService
- Use ConfigService for TEST_SIM_ACCOUNT env variable

Phase 4: Circular Dependency Resolution
- Create VoiceOptionsModule to break FreebitModule <-> SimManagementModule cycle
- Remove forwardRef usage between these modules
- Move SimVoiceOptionsService to new voice-options module

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-13 14:25:14 +09:00
..
2025-08-22 17:02:49 +09:00

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/ and shared/ into lib/.
  • Moved components/providers/query-provider.tsx to providers/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/*.