{"name":"iwey-api","kind":"modular-monolith","runtime":"NestJS 12 + TypeORM + PostgreSQL","surfaces":{"home":"/","api":"/api","swagger":"/docs","architectureHtml":"/architecture","architectureJson":"/architecture.json","academicConceptsHtml":"/academic-concepts","academicStructureApiHtml":"/academic-structure-api","databaseSchemaHtml":"/database-schema","messagingRealtimeHtml":"/messaging-realtime","securityBackendHtml":"/security-backend","messagingNamespace":"/messaging"},"realtime":{"transport":"socket.io","namespace":"/messaging","auth":["handshake.auth.token","query.token","Authorization Bearer"],"events":{"clientToServer":["conversation:join","conversation:leave","message:send","typing:start","typing:stop"],"serverToClient":["conversation:joined","message:new","typing:update","presence:update"]},"docs":"/messaging-realtime"},"i18n":{"languages":["fr","en"],"resolvers":["query:lang","header:x-lang","Accept-Language"],"fallback":"fr"},"security":{"auth":"JWT Bearer access-token","rbac":"permission catalog + role matrix (deny-by-default)","guards":["JwtAuthGuard","PermissionsGuard"]},"modules":["auth","permissions","profile","dashboard","pedagogy","evaluation","communication","kora","tenants"],"persistenceSchemas":["identity","academic_structure","pedagogy","evaluation","tuition","communication","academic_documents","platform","kora"],"entityFolders":["identity","academic-structure","pedagogy","evaluation","tuition","communication","academic-documents","platform","kora"]}