meldestelle/docs/migration-plan.md
stefan a256622f37 refactor: Migrate from monolithic to modular architecture
- Restructure project into domain-specific modules (core, masterdata, members, horses, events, infrastructure)
- Create shared client components in common-ui module
- Implement CI/CD workflows with GitHub Actions
- Consolidate documentation in docs directory
- Remove deprecated modules and documentation files
- Add cleanup and migration scripts for transition
- Update README with new project structure and setup instructions
2025-07-22 18:44:18 +02:00

158 lines
12 KiB
Markdown

# Migration Plan for Meldestelle Project Restructuring
This document outlines the plan for migrating code from the old module structure to the new module structure as described in the project restructuring requirements.
## 1. Shared-Kernel to Core Modules
### Core-Domain
- `shared-kernel/src/commonMain/kotlin/at/mocode/dto/base/BaseDto.kt``core/core-domain/src/main/kotlin/at/mocode/core/domain/model/`
- `shared-kernel/src/commonMain/kotlin/at/mocode/enums/Enums.kt``core/core-domain/src/main/kotlin/at/mocode/core/domain/model/`
### Core-Utils
- `shared-kernel/src/commonMain/kotlin/at/mocode/serializers/Serialization.kt``core/core-utils/src/main/kotlin/at/mocode/core/utils/serialization/`
- `shared-kernel/src/commonMain/kotlin/at/mocode/validation/ApiValidationUtils.kt``core/core-utils/src/main/kotlin/at/mocode/core/utils/validation/`
- `shared-kernel/src/commonMain/kotlin/at/mocode/validation/ValidationResult.kt``core/core-utils/src/main/kotlin/at/mocode/core/utils/validation/`
- `shared-kernel/src/commonMain/kotlin/at/mocode/validation/ValidationUtils.kt``core/core-utils/src/main/kotlin/at/mocode/core/utils/validation/`
- `shared-kernel/src/jvmMain/kotlin/at/mocode/shared/config/AppConfig.kt``core/core-utils/src/main/kotlin/at/mocode/core/utils/config/`
- `shared-kernel/src/jvmMain/kotlin/at/mocode/shared/config/AppEnvironment.kt``core/core-utils/src/main/kotlin/at/mocode/core/utils/config/`
- `shared-kernel/src/jvmMain/kotlin/at/mocode/shared/database/DatabaseConfig.kt``core/core-utils/src/main/kotlin/at/mocode/core/utils/database/`
- `shared-kernel/src/jvmMain/kotlin/at/mocode/shared/database/DatabaseFactory.kt``core/core-utils/src/main/kotlin/at/mocode/core/utils/database/`
- `shared-kernel/src/jvmMain/kotlin/at/mocode/shared/database/DatabaseMigrator.kt``core/core-utils/src/main/kotlin/at/mocode/core/utils/database/`
- `shared-kernel/src/jvmMain/kotlin/at/mocode/shared/discovery/ServiceRegistration.kt``core/core-utils/src/main/kotlin/at/mocode/core/utils/discovery/`
### Tests
- `shared-kernel/src/jvmTest/kotlin/at/mocode/shared/database/test/SimpleDatabaseTest.kt``core/core-utils/src/test/kotlin/at/mocode/core/utils/database/`
- `shared-kernel/src/jvmTest/kotlin/at/mocode/validation/test/ValidationTest.kt``core/core-utils/src/test/kotlin/at/mocode/core/utils/validation/`
## 2. Master-Data to Masterdata Modules
### Masterdata-Domain
- `master-data/src/commonMain/kotlin/at/mocode/masterdata/domain/model/AltersklasseDefinition.kt``masterdata/masterdata-domain/src/main/kotlin/at/mocode/masterdata/domain/model/`
- `master-data/src/commonMain/kotlin/at/mocode/masterdata/domain/model/BundeslandDefinition.kt``masterdata/masterdata-domain/src/main/kotlin/at/mocode/masterdata/domain/model/`
- `master-data/src/commonMain/kotlin/at/mocode/masterdata/domain/model/LandDefinition.kt``masterdata/masterdata-domain/src/main/kotlin/at/mocode/masterdata/domain/model/`
- `master-data/src/commonMain/kotlin/at/mocode/masterdata/domain/model/Platz.kt``masterdata/masterdata-domain/src/main/kotlin/at/mocode/masterdata/domain/model/`
- `master-data/src/commonMain/kotlin/at/mocode/masterdata/domain/repository/LandRepository.kt``masterdata/masterdata-domain/src/main/kotlin/at/mocode/masterdata/domain/repository/`
### Masterdata-Application
- `master-data/src/commonMain/kotlin/at/mocode/masterdata/application/usecase/CreateCountryUseCase.kt``masterdata/masterdata-application/src/main/kotlin/at/mocode/masterdata/application/usecase/`
- `master-data/src/commonMain/kotlin/at/mocode/masterdata/application/usecase/GetCountryUseCase.kt``masterdata/masterdata-application/src/main/kotlin/at/mocode/masterdata/application/usecase/`
### Masterdata-Infrastructure
- `master-data/src/jvmMain/kotlin/at/mocode/masterdata/infrastructure/repository/LandRepositoryImpl.kt``masterdata/masterdata-infrastructure/src/main/kotlin/at/mocode/masterdata/infrastructure/persistence/`
- `master-data/src/jvmMain/kotlin/at/mocode/masterdata/infrastructure/repository/LandTable.kt``masterdata/masterdata-infrastructure/src/main/kotlin/at/mocode/masterdata/infrastructure/persistence/`
- `master-data/src/jvmMain/kotlin/at/mocode/masterdata/infrastructure/table/LandTable.kt``masterdata/masterdata-infrastructure/src/main/kotlin/at/mocode/masterdata/infrastructure/persistence/`
### Masterdata-API
- `master-data/src/jvmMain/kotlin/at/mocode/masterdata/infrastructure/api/CountryController.kt``masterdata/masterdata-api/src/main/kotlin/at/mocode/masterdata/api/rest/`
### Client UI
- `master-data/src/jsMain/kotlin/at/mocode/masterdata/ui/components/StammdatenListe.kt``client/common-ui/src/main/kotlin/at/mocode/client/common/components/masterdata/`
## 3. Member-Management to Members Modules
### Members-Domain
- `member-management/src/commonMain/kotlin/at/mocode/members/domain/model/*.kt``members/members-domain/src/main/kotlin/at/mocode/members/domain/model/`
- `member-management/src/commonMain/kotlin/at/mocode/members/domain/repository/*.kt``members/members-domain/src/main/kotlin/at/mocode/members/domain/repository/`
- `member-management/src/commonMain/kotlin/at/mocode/members/domain/service/*.kt``members/members-domain/src/main/kotlin/at/mocode/members/domain/service/`
- `member-management/src/jvmMain/kotlin/at/mocode/members/domain/service/*.kt``members/members-domain/src/main/kotlin/at/mocode/members/domain/service/`
### Members-Application
- `member-management/src/commonMain/kotlin/at/mocode/members/application/usecase/*.kt``members/members-application/src/main/kotlin/at/mocode/members/application/usecase/`
### Members-Infrastructure
- `member-management/src/jvmMain/kotlin/at/mocode/members/infrastructure/repository/*.kt``members/members-infrastructure/src/main/kotlin/at/mocode/members/infrastructure/persistence/`
- `member-management/src/jvmMain/kotlin/at/mocode/members/infrastructure/table/*.kt``members/members-infrastructure/src/main/kotlin/at/mocode/members/infrastructure/persistence/`
### Client UI
- `member-management/src/jsMain/kotlin/at/mocode/members/ui/components/*.kt``client/common-ui/src/main/kotlin/at/mocode/client/common/components/members/`
## 4. Horse-Registry to Horses Modules
### Horses-Domain
- `horse-registry/src/commonMain/kotlin/at/mocode/horses/domain/model/DomPferd.kt``horses/horses-domain/src/main/kotlin/at/mocode/horses/domain/model/`
- `horse-registry/src/commonMain/kotlin/at/mocode/horses/domain/repository/HorseRepository.kt``horses/horses-domain/src/main/kotlin/at/mocode/horses/domain/repository/`
### Horses-Application
- `horse-registry/src/commonMain/kotlin/at/mocode/horses/application/usecase/*.kt``horses/horses-application/src/main/kotlin/at/mocode/horses/application/usecase/`
### Horses-Infrastructure
- `horse-registry/src/jvmMain/kotlin/at/mocode/horses/infrastructure/repository/HorseRepositoryImpl.kt``horses/horses-infrastructure/src/main/kotlin/at/mocode/horses/infrastructure/persistence/`
- `horse-registry/src/jvmMain/kotlin/at/mocode/horses/infrastructure/repository/HorseTable.kt``horses/horses-infrastructure/src/main/kotlin/at/mocode/horses/infrastructure/persistence/`
### Horses-API
- `horse-registry/src/jvmMain/kotlin/at/mocode/horses/infrastructure/api/HorseController.kt``horses/horses-api/src/main/kotlin/at/mocode/horses/api/rest/`
### Client UI
- `horse-registry/src/jsMain/kotlin/at/mocode/horses/ui/components/PferdeListe.kt``client/common-ui/src/main/kotlin/at/mocode/client/common/components/horses/`
## 5. Event-Management to Events Modules
### Events-Domain
- `event-management/src/commonMain/kotlin/at/mocode/events/domain/model/Veranstaltung.kt``events/events-domain/src/main/kotlin/at/mocode/events/domain/model/`
- `event-management/src/commonMain/kotlin/at/mocode/events/domain/repository/VeranstaltungRepository.kt``events/events-domain/src/main/kotlin/at/mocode/events/domain/repository/`
- `event-management/src/commonMain/kotlin/at/mocode/events/EventManagement.kt``events/events-domain/src/main/kotlin/at/mocode/events/`
### Events-Application
- `event-management/src/commonMain/kotlin/at/mocode/events/application/usecase/*.kt``events/events-application/src/main/kotlin/at/mocode/events/application/usecase/`
### Events-Infrastructure
- `event-management/src/jvmMain/kotlin/at/mocode/events/infrastructure/repository/VeranstaltungRepositoryImpl.kt``events/events-infrastructure/src/main/kotlin/at/mocode/events/infrastructure/persistence/`
- `event-management/src/jvmMain/kotlin/at/mocode/events/infrastructure/repository/VeranstaltungTable.kt``events/events-infrastructure/src/main/kotlin/at/mocode/events/infrastructure/persistence/`
### Events-API
- `event-management/src/jvmMain/kotlin/at/mocode/events/infrastructure/api/VeranstaltungController.kt``events/events-api/src/main/kotlin/at/mocode/events/api/rest/`
### Client UI
- `event-management/src/jsMain/kotlin/at/mocode/events/ui/components/VeranstaltungsListe.kt``client/common-ui/src/main/kotlin/at/mocode/client/common/components/events/`
- `event-management/src/jsMain/kotlin/at/mocode/events/ui/utils/EventComponent.kt``client/common-ui/src/main/kotlin/at/mocode/client/common/components/events/`
## 6. API-Gateway to Infrastructure/Gateway
### Infrastructure/Gateway
- `api-gateway/src/jvmMain/kotlin/at/mocode/gateway/Application.kt``infrastructure/gateway/src/main/kotlin/at/mocode/infrastructure/gateway/`
- `api-gateway/src/jvmMain/kotlin/at/mocode/gateway/auth/*.kt``infrastructure/gateway/src/main/kotlin/at/mocode/infrastructure/gateway/auth/`
- `api-gateway/src/jvmMain/kotlin/at/mocode/gateway/config/*.kt``infrastructure/gateway/src/main/kotlin/at/mocode/infrastructure/gateway/config/`
- `api-gateway/src/jvmMain/kotlin/at/mocode/gateway/discovery/*.kt``infrastructure/gateway/src/main/kotlin/at/mocode/infrastructure/gateway/discovery/`
- `api-gateway/src/jvmMain/kotlin/at/mocode/gateway/migrations/*.kt``infrastructure/gateway/src/main/kotlin/at/mocode/infrastructure/gateway/migrations/`
- `api-gateway/src/jvmMain/kotlin/at/mocode/gateway/plugins/*.kt``infrastructure/gateway/src/main/kotlin/at/mocode/infrastructure/gateway/plugins/`
- `api-gateway/src/jvmMain/kotlin/at/mocode/gateway/routing/*.kt``infrastructure/gateway/src/main/kotlin/at/mocode/infrastructure/gateway/routing/`
- `api-gateway/src/jvmMain/kotlin/at/mocode/gateway/validation/*.kt``infrastructure/gateway/src/main/kotlin/at/mocode/infrastructure/gateway/validation/`
- `api-gateway/src/jvmMain/kotlin/at/mocode/gateway/module.kt``infrastructure/gateway/src/main/kotlin/at/mocode/infrastructure/gateway/`
- `api-gateway/src/jvmMain/resources/openapi/documentation.yaml``infrastructure/gateway/src/main/resources/openapi/`
- `api-gateway/src/jvmMain/resources/static/docs/*``infrastructure/gateway/src/main/resources/static/docs/`
- `api-gateway/src/test/kotlin/at/mocode/gateway/ApiIntegrationTest.kt``infrastructure/gateway/src/test/kotlin/at/mocode/infrastructure/gateway/`
## 7. ComposeApp to Client Modules
### Client/Common-UI
- `composeApp/src/commonMain/kotlin/at/mocode/ui/theme/Theme.kt``client/common-ui/src/main/kotlin/at/mocode/client/common/theme/`
- `composeApp/src/commonMain/kotlin/at/mocode/di/AppDependencies.kt``client/common-ui/src/main/kotlin/at/mocode/client/common/di/`
- `composeApp/src/commonMain/kotlin/App.kt``client/common-ui/src/main/kotlin/at/mocode/client/common/`
### Client/Web-App
- `composeApp/src/commonMain/kotlin/at/mocode/ui/screens/*.kt``client/web-app/src/main/kotlin/at/mocode/client/web/screens/`
- `composeApp/src/commonMain/kotlin/at/mocode/ui/viewmodel/*.kt``client/web-app/src/main/kotlin/at/mocode/client/web/viewmodel/`
- `composeApp/src/jsMain/kotlin/main.kt``client/web-app/src/main/kotlin/at/mocode/client/web/`
- `composeApp/src/commonTest/kotlin/at/mocode/ui/viewmodel/*.kt``client/web-app/src/test/kotlin/at/mocode/client/web/viewmodel/`
### Client/Desktop-App
- `composeApp/src/desktopMain/kotlin/main.kt``client/desktop-app/src/main/kotlin/at/mocode/client/desktop/`
## Migration Process
For each file to be migrated:
1. Create the target directory if it doesn't exist
2. Copy the file to the target location
3. Update the package declaration in the file to match the new package structure
4. Update imports to reflect the new package structure
5. Update any references to old module names in the code
## Verification
After migration:
1. Run a build to ensure all modules compile correctly
2. Run tests to verify functionality
3. Document any remaining migration tasks