Hermes 284313f908
Some checks are pending
Bidi Control Character Guard / bidi-control-guard (push) Waiting to run
Circular Dependency Check / Check for new circular dependencies (push) Waiting to run
Citus Migration Smoke / Combined migrations on single-node Citus (push) Waiting to run
E2E Fresh Install Tests / fresh-install-e2e (push) Waiting to run
ext-v2 guardrails / Run ext-v2 guard and ESLint (push) Waiting to run
Integration Tests / Check for relevant changes (push) Waiting to run
Integration Tests / ${{ (github.event_name == 'schedule' || github.event.inputs.suite == 'full') && 'Full integration suite' || 'Tier-1 integration subset' }} (push) Blocked by required conditions
Mobile checks / Mobile lint + typecheck (push) Waiting to run
Mobile checks / Mobile unit tests (push) Waiting to run
Mobile checks / Mobile dependency audit (report) (push) Waiting to run
Mobile checks / Mobile reproducibility checks (push) Waiting to run
Secrets guard (env backups) / Ensure no tracked env backup files (push) Waiting to run
Temporal Readiness / fast-readiness (push) Waiting to run
Temporal Readiness / docker-parity (push) Waiting to run
TypeScript Type Check / Nx affected typecheck (push) Waiting to run
Unit Tests / Skipped-test budget (push) Waiting to run
Unit Tests / Nx affected unit tests (push) Waiting to run
Unit Tests / Server unit coverage (informational) (push) Waiting to run
Validate Tenant Management Schema / Check for relevant changes (push) Waiting to run
Validate Tenant Management Schema / Validate Tenant Management Schema (push) Blocked by required conditions
EE Workflows Build Guard / ee-workflows-build-guard (push) Waiting to run
Initial import of AlgaPSA codebase from PSA server
Excluded: .git, node_modules, secrets/, compose.env, assemblyscript tgz

Source: /opt/alga-psa on psa.joliet.tech
2026-06-22 16:12:17 -05:00

9.5 KiB

Ralph Loop State - NX Monorepo Modularization

Current Progress: 38 features implemented

Completed Horizontal Slice Modules

@alga-psa/core (F004-F008)

  • Location: packages/core/
  • Contents:
    • Logger (winston-based logging)
    • Secret providers (8 files: ISecretProvider, EnvSecretProvider, FileSystemSecretProvider, CompositeSecretProvider, VaultSecretProvider, secretProvider, vaultLoader, getSecret)
    • Event publisher (with workflow dependencies from @alga-psa/shared)
    • Encryption utilities (hashPassword, verifyPassword, generateSecurePassword)

@alga-psa/db (F009-F014)

  • Location: packages/db/
  • Contents:
    • Knex configuration (knexfile.ts)
    • Knex turbopack shim (dialect patching)
    • Tenant context management (getConnection, withTransaction)
    • Admin connection (getAdminConnection, destroyAdminConnection)
    • Connection management (cleanupConnections)
    • Transaction helpers (withKnexTransaction, withAdminTransaction)

@alga-psa/types (F015-F017)

  • Location: packages/types/
  • Contents:
    • Core types: attributes, general, tax, temporal
    • Email types: outbound (EmailMessage, EmailProviderConfig) and inbound (InboundEmailMessage, InboundEmailProviderConfig)
    • Interface definitions: client, contact, user, tag, subscription, validation, microsoft365-diagnostics
    • Ticket interfaces: ITicket, ITicketListItem, ITicketListFilters, IPriority, ITicketStatus, ITicketCategory, ITicketWithDetails
    • Project interfaces: IProject, IProjectPhase, IProjectTask, IProjectStatusMapping, ITaskChecklistItem
    • Status interfaces: IStatus, IStandardStatus, StatusItemType
    • Invoice interfaces: IInvoice, IInvoiceCharge, IInvoiceTemplate, InvoiceStatus, InvoiceViewModel, etc.
    • Contract interfaces: IContract, IContractWithClient, IClientContract, IContractLine, ContractStatus, etc.
    • Schedule interfaces: IScheduleEntry, IRecurrencePattern, IResource, IWorkItem, WorkItemType, etc.

@alga-psa/validation (F018-F021)

  • Location: packages/validation/
  • Contents:
    • Validation utilities (isValidEmail, validateData, validateArray, isValidUUID, validateTenantAccess)
    • Common Zod schemas (iso8601, plainDate, tenant, uuid, email, phone, currency, pagination)

@alga-psa/ui-kit (F022, F024, F025) - Pre-existing

  • Location: packages/ui-kit/
  • Contents:
    • 11 existing components
    • Theme tokens CSS
    • Component hooks

@alga-psa/auth (F026, F028)

  • Location: packages/auth/
  • Contents:
    • Session utilities (getSessionMaxAge, getSessionCookieName, getSessionCookieConfig)
    • JWT encoding (encodePortalSessionToken, buildSessionCookie)
    • Secret management (getNextAuthSecret, getNextAuthSecretSync)

Completed Vertical Slice Modules

@alga-psa/clients (F031, F035)

  • Location: packages/clients/
  • Contents:
    • Module structure (package.json, tsconfig.json)
    • Client model (tenant-explicit API for multi-tenant safety)
    • Client validation schemas (ClientSchema, CreateClientSchema, UpdateClientSchema)
  • Pending:
    • F032: 26 action files migration (tightly coupled to Next.js Server Actions)
    • F033: 32 client components migration
    • F034: 12 contact components migration

@alga-psa/billing (F038, F045)

  • Location: packages/billing/
  • Contents:
    • Module structure (package.json, tsconfig.json)
    • Invoice model (tenant-explicit API for multi-tenant safety)
    • Contract model (tenant-explicit API with expiration management)
    • Invoice interfaces (IInvoice, IInvoiceCharge, InvoiceStatus, etc.) in @alga-psa/types
    • Contract interfaces (IContract, IContractWithClient, IClientContract, etc.) in @alga-psa/types
  • Pending:
    • F039: 120 billing-dashboard components migration
    • F040-F044: Invoice actions, contract actions, payment, credit, tax service migration

@alga-psa/projects (F047, F050)

  • Location: packages/projects/
  • Contents:
    • Module structure (package.json, tsconfig.json)
    • Project model (tenant-explicit API for multi-tenant safety)
    • Phase management (add, update, delete phases)
  • Pending:
    • F048: 50 project components migration
    • F049: Project actions migration

@alga-psa/tickets (F052, F055)

  • Location: packages/tickets/
  • Contents:
    • Module structure (package.json, tsconfig.json)
    • Ticket model (tenant-explicit API for multi-tenant safety)
    • Priority model (tenant-explicit API, shared with projects)
    • Status model (tenant-explicit API, shared across modules)
  • Pending:
    • F053: 19 ticket components migration
    • F054: Ticket actions migration

@alga-psa/scheduling (F057, F062)

  • Location: packages/scheduling/
  • Contents:
    • Module structure (package.json, tsconfig.json)
    • ScheduleEntry model (tenant-explicit API for multi-tenant safety)
    • Schedule interfaces (IScheduleEntry, IRecurrencePattern, IResource, IWorkItem, etc.) in @alga-psa/types
  • Pending:
    • F058: 32 time-management components migration
    • F059-F060: Schedule and technician-dispatch components
    • F061: Time entry actions migration

@alga-psa/workflows (F064)

  • Location: packages/workflows/
  • Contents:
    • Module structure (package.json, tsconfig.json)
    • Placeholder directories for actions, components, models
  • Pending:
    • F065: 24 workflow components migration
    • F066: product-workflows package consolidation
    • F067: Workflow actions migration

@alga-psa/documents (F069)

  • Location: packages/documents/
  • Contents:
    • Module structure (package.json, tsconfig.json)
    • Placeholder directories for actions, components, models, handlers
  • Pending:
    • F070: 18 document components migration
    • F071: 13 document handlers migration
    • F072: Document actions migration

@alga-psa/assets (F074)

  • Location: packages/assets/
  • Contents:
    • Module structure (package.json, tsconfig.json)
    • Placeholder directories for actions, components, models
  • Pending:
    • F075: 37 asset components migration
    • F076: Asset actions migration

@alga-psa/surveys (F078)

  • Location: packages/surveys/
  • Contents:
    • Module structure (package.json, tsconfig.json)
    • Placeholder directories for actions, components, models
  • Pending:
    • F079: 25 survey components migration
    • F080: Survey actions migration

@alga-psa/integrations (F082)

  • Location: packages/integrations/
  • Contents:
    • Module structure (package.json, tsconfig.json)
    • Placeholder directories for actions, components, models, email
  • Pending:
    • F083: 11 integration components migration
    • F084: 5 email packages consolidation
    • F085: QuickBooks integration migration
    • F086: Webhook handlers migration

@alga-psa/client-portal (F088)

  • Location: packages/client-portal/
  • Contents:
    • Module structure (package.json, tsconfig.json)
    • Placeholder directories for actions, components, models
  • Pending:
    • F089: 42 client-portal components migration
    • F090: product-client-portal-domain consolidation

Remaining Work

Horizontal Slices (Deferred)

  • F023: Migrate 81 UI components to @alga-psa/ui-kit (large task)
  • F027: Migrate auth strategies (tightly coupled to NextAuth)
  • F029: Migrate permission utilities (tightly coupled to User model and database)
  • F030: Migrate getCurrentUser function (placeholder - depends on NextAuth)

Vertical Slices (Remaining Component Migrations)

  • F058-F063: @alga-psa/scheduling component/action/model migrations (structure done in F057)
  • F065-F068: @alga-psa/workflows component/action migrations (structure done in F064)
  • F070-F073: @alga-psa/documents component/handler/action migrations (structure done in F069)
  • F075-F077: @alga-psa/assets component/action migrations (structure done in F074)
  • F079-F081: @alga-psa/surveys component/action migrations (structure done in F078)
  • F083-F087: @alga-psa/integrations component/email/webhook migrations (structure done in F082)
  • F089-F091: @alga-psa/client-portal component migrations (structure done in F088)

Technical Features (F092-F104)

  • TypeScript path aliases
  • CE/EE separation pattern
  • NX computation caching
  • NX remote caching for CI
  • nx affected commands
  • Module boundary enforcement

Backwards Compatibility (F105-F110)

  • Re-exports from shared package
  • Consumer updates

Tests Added

@alga-psa/billing tests

  • Location: packages/billing/tests/
  • Contents:
    • invoice.test.ts - Tests for Invoice model validation logic (tenant required, integer validation for amounts)
    • contract.test.ts - Tests for Contract model validation logic (tenant required for all operations)

@alga-psa/scheduling tests

  • Location: packages/scheduling/tests/
  • Contents:
    • scheduleEntry.test.ts - Tests for ScheduleEntry model validation logic (tenant required, recurrence pattern parsing)

Known Issues

  1. TypeScript errors about @alga-psa/core, @alga-psa/types not found - expected until npm install links workspaces
  2. Event publisher has temporary workflow dependencies from @alga-psa/shared
  3. 81 UI components remain in server/src/components/ui (needs incremental migration)
  4. getCurrentTenantId is tightly coupled to Next.js (headers, session) - vertical slice models use explicit tenant parameter
  5. Server actions ('use server') cannot be migrated to packages - they stay in server/src but can call into package business logic

Summary Statistics

  • Total Features: 110
  • Implemented: 38 (34.5%)
  • Phase 1 Complete: Yes (foundation modules established)
  • Phase 2 Complete: All 11 vertical slice module structures created
  • Phase 3-4: Model migrations in progress (clients, tickets, projects, billing, scheduling models done)