- 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
158 lines
12 KiB
Markdown
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
|