How alexcalbri/idc works
IDC is a Kotlin Multiplatform, multi-tenant business application with Android, iOS, web, and desktop clients backed by a Ktor server. The principal flow is login, session restoration, dashboard navigation, and access to company or server-driven modules. Server-side branches also support company provisioning and self-service profile/backup operations, plus module metadata and module-specific routes. The README establishes the platform targets; sampled source supports the server routing, authentication, session persistence, and provisioning links shown here. Client internals and unsampled module wiring are represented only where paths and responsibilities are evident.
Main entry points: CompanyProvisioningService.kt Company provisioning · App.kt App navigation · ModuleRoutes.kt Module routes · DatabaseFactory.kt Central database
Components 28
Multiplatform client
- App navigation
app/shared/src/commonMain/kotlin/com/ideasdeveloper/idc/App.kt - Login screen
app/shared/src/commonMain/kotlin/com/ideasdeveloper/idc/app/features/auth/ui/LoginScreen.kt - Login view model
app/shared/src/commonMain/kotlin/com/ideasdeveloper/idc/app/features/auth/presentation/LoginViewModel.kt - Login API
app/shared/src/commonMain/kotlin/com/ideasdeveloper/idc/app/features/auth/data/LoginApi.kt - Session store
app/shared/src/commonMain/kotlin/com/ideasdeveloper/idc/app/core/session/SessionStore.kt - Dashboard
app/shared/src/commonMain/kotlin/com/ideasdeveloper/idc/app/features/dashboard/ui/DashboardScreen.kt - Company screens
app/shared/src/commonMain/kotlin/com/ideasdeveloper/idc/app/features/company/ui/CompanyManagementScreen.kt - Server-driven screen
app/shared/src/commonMain/kotlin/com/ideasdeveloper/idc/app/features/modules/ui/ServerDrivenModuleScreen.kt - Module API
app/shared/src/commonMain/kotlin/com/ideasdeveloper/idc/app/features/modules/data/ModuleApi.kt
Authentication
- Auth routes
server/src/main/kotlin/com/ideasdeveloper/idc/server/auth/api/AuthRoutes.kt - Scoped login
server/src/main/kotlin/com/ideasdeveloper/idc/server/auth/application/ScopedLoginService.kt - Credential authentication
server/src/main/kotlin/com/ideasdeveloper/idc/server/auth/application/AuthenticationService.kt - Session service
server/src/main/kotlin/com/ideasdeveloper/idc/server/auth/application/SessionService.kt - Login databases
server/src/main/kotlin/com/ideasdeveloper/idc/server/auth/infrastructure/database/LoginDatabases.kt - User repository
server/src/main/kotlin/com/ideasdeveloper/idc/server/auth/infrastructure/database/ApplicationUserRepository.kt - Session repository
server/src/main/kotlin/com/ideasdeveloper/idc/server/auth/infrastructure/database/ApplicationSessionRepository.kt
Company administration
- Company routes
server/src/main/kotlin/com/ideasdeveloper/idc/server/company/api/CompanyRoutes.kt - Company provisioning
server/src/main/kotlin/com/ideasdeveloper/idc/server/company/application/CompanyProvisioningService.kt - Company self-service
server/src/main/kotlin/com/ideasdeveloper/idc/server/company/application/CompanySelfService.kt - Backup files
- Company databases
Module runtime
- Module routes
server/src/main/kotlin/com/ideasdeveloper/idc/server/modules/ModuleRoutes.kt - Module registry
server/src/main/kotlin/com/ideasdeveloper/idc/server/modules/ServerModule.kt - Module definitions
modules/clientes/shared/src/commonMain/kotlin/com/ideasdeveloper/idc/modules/clientes/ClientesModule.kt
Server platform
- Central database
server/src/main/kotlin/com/ideasdeveloper/idc/server/infrastructure/database/DatabaseFactory.kt - Ktor application
server/src/main/kotlin/com/ideasdeveloper/idc/server/app/Application.kt
Other components
- User
- App platforms
app/androidApp/src/main/kotlin/com/ideasdeveloper/idc/MainActivity.kt
Connections 34
- User → Login screen: enters credentials
- App navigation → Session store: restores session
- App navigation → Login screen: routes to
- App navigation → Dashboard: routes to
- Login screen → Login view model: handles actions
- Login view model → Login API: requests login
- Login view model → Session store: stores session
- Dashboard → Company screens: opens company
- Dashboard → Server-driven screen: opens module
- Server-driven screen → Module API: requests metadata
- App platforms → App navigation: hosts shared app
- Login API → Auth routes: posts login
- Ktor application → Auth routes: installs routes
- Auth routes → Scoped login: dispatches login
- Scoped login → Login databases: selects tenant scope
- Login databases → Credential authentication: delegates credentials
- Credential authentication → User repository: looks up user
- Session service → Session repository: creates or validates
- Session service → User repository: loads user
- User repository → Central database: queries users
- Session repository → Central database: reads and writes sessions
- Ktor application → Company routes: installs routes
- Company routes → Company provisioning: handles administration
- Company routes → Company self-service: handles self-service
- Company provisioning → Central database: records companies
- Company provisioning → Company databases: creates tenant database
- Company provisioning → Login databases: registers tenant
- Company self-service → Central database: reads and updates profile
- Company self-service → Backup files: writes and reads ZIPs
- Ktor application → Module routes: installs routes
- Module routes → Module registry: serves definitions
- Module routes → Module registry: installs module routes
- Module API → Module routes: requests module metadata
- Module registry → Module definitions: registers module