{
  "schemaVersion": 1,
  "updatedAt": "2026-08-04",
  "program": "ARCH.FullProjectSeniorCleanArchitecture",
  "constraints": {
    "frozenModels": [
      "src/models/auctionModel.js"
    ],
    "centralRouteAggregators": [
      "src/routes/dashboard/adminRoute/adminRoute.js",
      "src/routes/api/indexRoute/indexRoute.js",
      "listeners/socketManger/socket.js"
    ],
    "compatibilityRoots": [
      "src/controllers",
      "src/helpers/api",
      "src/models",
      "src/routes",
      "src/services",
      "src/utils/validations"
    ]
  },
  "modules": [
    {
      "name": "dashboard/reasons",
      "publicEntry": "src/modules/dashboard/reasons/index.js",
      "views": ["views/admin/reasons"],
      "assets": [
        "public/admin/assets/css/pages/reasons.css",
        "public/admin/assets/js/pages/reasons.js"
      ],
      "risk": "low",
      "state": "vertical-dashboard-adapter"
    },
    {
      "name": "dashboard/subscriptions",
      "publicEntry": "src/modules/dashboard/subscriptions/index.js",
      "views": ["views/admin/subscriptions"],
      "assets": [],
      "risk": "medium",
      "state": "vertical-dashboard-adapter"
    },
    {
      "name": "dashboard/package-features",
      "publicEntry": "src/modules/dashboard/package-features/index.js",
      "views": ["views/admin/packageFeatures"],
      "assets": [
        "public/admin/assets/css/pages/package-features-form.css",
        "public/admin/assets/js/pages/package-features-form.js"
      ],
      "risk": "medium",
      "state": "vertical-dashboard-adapter"
    },
    {
      "name": "dashboard/packages",
      "publicEntry": "src/modules/dashboard/packages/index.js",
      "views": ["views/admin/packages"],
      "assets": ["public/admin/assets/js/pages/package-form.js"],
      "risk": "medium",
      "state": "vertical-dashboard-adapter"
    },
    {
      "name": "dashboard/premium-packages",
      "publicEntry": "src/modules/dashboard/premium-packages/index.js",
      "views": ["views/admin/premiumPackages"],
      "assets": [],
      "risk": "medium",
      "state": "vertical-dashboard-adapter"
    },
    {
      "name": "dashboard/socials",
      "publicEntry": "src/modules/dashboard/socials/index.js",
      "views": ["views/admin/socials"],
      "assets": [
        "public/admin/assets/css/pages/socials.css",
        "public/admin/assets/js/pages/socials.js"
      ],
      "risk": "low",
      "state": "vertical-dashboard-adapter"
    },
    {
      "name": "dashboard/countries",
      "publicEntry": "src/modules/dashboard/countries/index.js",
      "views": ["views/admin/countries"],
      "assets": [],
      "risk": "medium",
      "state": "vertical-dashboard-adapter"
    },
    {
      "name": "dashboard/cities",
      "publicEntry": "src/modules/dashboard/cities/index.js",
      "views": ["views/admin/cities"],
      "assets": [
        "public/admin/assets/css/pages/city-form.css",
        "public/admin/assets/js/pages/city-form.js"
      ],
      "risk": "medium",
      "state": "vertical-dashboard-adapter"
    },
    {
      "name": "dashboard/coupons",
      "publicEntry": "src/modules/dashboard/coupons/index.js",
      "views": ["views/admin/coupons"],
      "assets": [],
      "risk": "medium",
      "state": "vertical-dashboard-adapter"
    },
    {
      "name": "dashboard/departments",
      "publicEntry": "src/modules/dashboard/departments/index.js",
      "views": ["views/admin/departments"],
      "assets": [],
      "risk": "medium",
      "state": "vertical-dashboard-adapter"
    },
    {
      "name": "dashboard/sub-departments",
      "publicEntry": "src/modules/dashboard/sub-departments/index.js",
      "views": ["views/admin/subDepartments"],
      "assets": [],
      "risk": "medium",
      "state": "vertical-dashboard-adapter"
    },
    {
      "name": "dashboard/attributes",
      "publicEntry": "src/modules/dashboard/attributes/index.js",
      "views": ["views/admin/attributes"],
      "assets": [],
      "risk": "medium",
      "state": "vertical-dashboard-adapter"
    },
    {
      "name": "dashboard/attribute-values",
      "publicEntry": "src/modules/dashboard/attribute-values/index.js",
      "views": ["views/admin/attributeValues"],
      "assets": [],
      "risk": "medium",
      "state": "vertical-dashboard-adapter"
    },
    {
      "name": "dashboard/products",
      "publicEntry": "src/modules/dashboard/products/index.js",
      "views": ["views/admin/products"],
      "assets": [
        "public/admin/assets/css/pages/product-catalog-console.css",
        "public/admin/assets/css/pages/product-moderation.css",
        "public/admin/assets/js/pages/product-catalog-console.js",
        "public/admin/assets/js/pages/product-form-console.js",
        "public/admin/assets/js/pages/product-moderation.js"
      ],
      "risk": "critical",
      "state": "vertical-dashboard-adapter"
    }
  ],
  "sharedDashboard": {
    "root": "src/modules/dashboard/shared",
    "purpose": "Dashboard-only query and presentation constants shared by migrated dashboard adapters."
  },
  "domainModules": [
    {
      "name": "reasons",
      "publicEntry": "src/modules/reasons/index.js",
      "compatibilityEntry": "src/modules/dashboard/reasons/index.js",
      "interfaces": ["dashboard", "api"],
      "risk": "low"
    },
    {
      "name": "socials",
      "publicEntry": "src/modules/socials/index.js",
      "compatibilityEntry": "src/modules/dashboard/socials/index.js",
      "interfaces": ["dashboard"],
      "risk": "low"
    },
    {
      "name": "coupons",
      "publicEntry": "src/modules/coupons/index.js",
      "compatibilityEntry": "src/modules/dashboard/coupons/index.js",
      "interfaces": ["dashboard", "api"],
      "apiCompatibilityEntry": "src/helpers/api/Coupon.js",
      "apiFiles": ["interfaces/api/coupons.api.controller.js"],
      "risk": "medium"
    },
    {
      "name": "departments",
      "publicEntry": "src/modules/departments/index.js",
      "compatibilityEntry": "src/modules/dashboard/departments/index.js",
      "interfaces": ["dashboard", "api"],
      "risk": "medium"
    },
    {
      "name": "sub-departments",
      "publicEntry": "src/modules/sub-departments/index.js",
      "compatibilityEntry": "src/modules/dashboard/sub-departments/index.js",
      "interfaces": ["dashboard", "api"],
      "risk": "medium"
    },
    {
      "name": "attributes",
      "publicEntry": "src/modules/attributes/index.js",
      "compatibilityEntry": "src/modules/dashboard/attributes/index.js",
      "interfaces": ["dashboard", "api"],
      "risk": "medium"
    },
    {
      "name": "attribute-values",
      "publicEntry": "src/modules/attribute-values/index.js",
      "compatibilityEntry": "src/modules/dashboard/attribute-values/index.js",
      "interfaces": ["dashboard", "api"],
      "risk": "medium"
    },
    {
      "name": "packages",
      "publicEntry": "src/modules/packages/index.js",
      "compatibilityEntry": "src/modules/dashboard/packages/index.js",
      "interfaces": ["dashboard"],
      "risk": "medium"
    },
    {
      "name": "premium-packages",
      "publicEntry": "src/modules/premium-packages/index.js",
      "compatibilityEntry": "src/modules/dashboard/premium-packages/index.js",
      "interfaces": ["dashboard"],
      "risk": "medium"
    },
    {
      "name": "package-features",
      "publicEntry": "src/modules/package-features/index.js",
      "compatibilityEntry": "src/modules/dashboard/package-features/index.js",
      "interfaces": ["dashboard"],
      "risk": "medium"
    },
    {
      "name": "subscriptions",
      "publicEntry": "src/modules/subscriptions/index.js",
      "compatibilityEntry": "src/modules/dashboard/subscriptions/index.js",
      "interfaces": ["dashboard"],
      "hasValidation": false,
      "risk": "high"
    },
    {
      "name": "countries",
      "publicEntry": "src/modules/countries/index.js",
      "compatibilityEntry": "src/modules/dashboard/countries/index.js",
      "interfaces": ["dashboard", "api"],
      "risk": "medium"
    },
    {
      "name": "cities",
      "publicEntry": "src/modules/cities/index.js",
      "compatibilityEntry": "src/modules/dashboard/cities/index.js",
      "interfaces": ["dashboard", "api"],
      "risk": "medium"
    },
    {
      "name": "products",
      "publicEntry": "src/modules/products/index.js",
      "compatibilityEntry": "src/modules/dashboard/products/index.js",
      "interfaces": ["dashboard"],
      "risk": "critical"
    },
    {
      "name": "accounts",
      "publicEntry": "src/modules/accounts/index.js",
      "compatibilityEntries": [
        "src/services/accountAuthResolver.js",
        "src/services/accountModeService.js",
        "src/services/accountIdentitySignupService.js",
        "src/services/accountRoleService.js",
        "src/services/accountPasswordService.js",
        "src/services/providerApprovalService.js",
        "src/helpers/providers/providerMetaContract.js",
        "src/helpers/validation/accountMode.rules.js"
      ],
      "interfaces": ["api"],
      "requiredFiles": [
        "domain/account.constants.js",
        "domain/account-signup.constants.js",
        "domain/account-role.constants.js",
        "domain/account-password.constants.js",
        "domain/provider-approval.constants.js",
        "domain/account-mode.policy.js",
        "domain/account-access.policy.js",
        "domain/account-role.policy.js",
        "domain/account-password.policy.js",
        "domain/provider-approval.policy.js",
        "application/account-signup.service.js",
        "application/account-role.service.js",
        "application/account-password.service.js",
        "application/provider-approval.service.js",
        "application/account-resolution.service.js",
        "application/account-mode.service.js",
        "infrastructure/account-identity.repository.js",
        "infrastructure/account-signup.repository.js",
        "infrastructure/account-role.repository.js",
        "infrastructure/account-password.repository.js",
        "infrastructure/account-token-session.repository.js",
        "infrastructure/provider-approval.repository.js",
        "infrastructure/provider-approval-file-store.js",
        "interfaces/api/account-mode.dto.js"
      ],
      "apiFiles": ["interfaces/api/account-mode.dto.js"],
      "hasValidation": false,
      "risk": "critical"
    },
    {
      "name": "clients",
      "publicEntry": "src/modules/clients/index.js",
      "interfaces": ["api"],
      "requiredFiles": [
        "domain/client.constants.js",
        "domain/client-access.policy.js",
        "application/client-read.service.js",
        "infrastructure/client.repository.js",
        "interfaces/api/client.dto.js"
      ],
      "apiFiles": ["interfaces/api/client.dto.js"],
      "hasValidation": false,
      "risk": "high"
    },
    {
      "name": "providers",
      "publicEntry": "src/modules/providers/index.js",
      "interfaces": ["api"],
      "requiredFiles": [
        "domain/provider.constants.js",
        "domain/provider-status.policy.js",
        "domain/provider-access.policy.js",
        "application/provider-read.service.js",
        "infrastructure/provider.repository.js",
        "interfaces/api/provider.dto.js"
      ],
      "apiFiles": ["interfaces/api/provider.dto.js"],
      "hasValidation": false,
      "risk": "critical"
    }
  ],
  "socketModules": [
    {
      "name": "communications",
      "publicEntry": "src/modules/communications/index.js",
      "interfaces": ["socket", "api"],
      "compatibilityEntries": {
        "chatRuntime": "listeners/socketManger/chatHelper/index.js",
        "chatValidation": "listeners/socketManger/chatValidation/index.js",
        "callRuntime": "listeners/socketManger/callHelper/index.js",
        "callValidation": "listeners/socketManger/callValidation/index.js"
      },
      "apiCompatibilityEntries": {
        "service": "src/helpers/api/Chat.js",
        "controller": "src/controllers/api/chatController.js",
        "validation": "src/utils/validations/api/chat.js",
        "routes": "src/routes/api/ChatRoute/ChatRoute.js"
      },
      "events": [
        "chat:enter",
        "chat:message",
        "chat:exit",
        "call:start",
        "call:answer",
        "call:finish"
      ],
      "risk": "high"
    }
  ],
  "apiModules": [
    {
      "name": "content",
      "publicEntry": "src/modules/content/index.js",
      "interfaces": ["api"],
      "compatibilityConsumer": "src/helpers/api/More.js",
      "routes": ["/about", "/fqs", "/privacy", "/terms", "/intros"],
      "risk": "medium"
    },
    {
      "name": "support",
      "publicEntry": "src/modules/support/index.js",
      "interfaces": ["api"],
      "compatibilityConsumer": "src/helpers/api/More.js",
      "routes": ["/contact", "/complaint", "/complaint/details"],
      "risk": "high"
    },
    {
      "name": "notifications",
      "publicEntry": "src/modules/notifications/index.js",
      "interfaces": ["api"],
      "compatibilityConsumer": "src/helpers/api/More.js",
      "routes": [
        "/notifications/toggle",
        "/notifications",
        "/notification",
        "/notifications/count",
        "/notifications/broadcast",
        "/notification-keys"
      ],
      "risk": "high"
    }
  ],
  "schedulingModules": [
    {
      "name": "scheduling",
      "publicEntry": "src/modules/scheduling/index.js",
      "compatibilityEntries": {
        "runtime": "src/services/CronManger/cronJob.js",
        "memory": "src/services/CronManger/CronManagerInMemory.js",
        "handlers": "src/helpers/cronJopFn/cronJobFn.js"
      },
      "frozenBusinessHandlers": true,
      "risk": "critical"
    }
  ],
  "socketContracts": [
    "auction:enter",
    "auction:leave",
    "auction:sync-ended",
    "auction:ended",
    "start-live",
    "enter-live",
    "add-comment",
    "exit-live",
    "auction:bid",
    "chat:enter",
    "chat:message",
    "chat:exit",
    "call:start",
    "call:answer",
    "call:finish",
    "disconnect"
  ],
  "persistedCronHandlers": [
    "paymentDeadline",
    "paymentReminder",
    "receiveConfirmDeadline",
    "endAuction",
    "auctionEndingReminder",
    "startAuction",
    "cancelUnacceptedOrder",
    "cancelUnpaidOrder"
  ]
}
