CompEduX is a multiplatform educational application built with Kotlin Multiplatform. It provides a unified codebase for Android, iOS, and web applications, sharing business logic while maintaining native UI experiences.
The project follows Clean Architecture principles and is organized into several modules:
- core:domain - Contains business logic, entities, and interfaces
- core:utils - Utility classes, logging, and common functionality
- core:network - API client, network communication, and data transfer objects
- core:data - Repositories implementation and data sources
- app - Platform-specific applications (Android, iOS, Web)
- Multiplatform Support: Single codebase runs on multiple platforms
- Clean Architecture: Separation of concerns with dependency inversion
- Dependency Injection: Uses Kodein for DI across all modules
- Reactive Programming: Flow-based reactive architecture
- Cross-Platform Networking: HTTP client with Ktor
- Logging System: Unified logging across all platforms
- Kotlin Multiplatform - For cross-platform development
- Kodein - Dependency injection framework
- Ktor - HTTP client for API communication
- Kotlinx Serialization - JSON serialization/deserialization
- Kotlinx Coroutines - Asynchronous programming
- Kotlinx DateTime - Date/time handling
- Napier - Logging framework
- JDK 11 or higher
- Kotlin 1.8 or higher
- Android Studio/IntelliJ IDEA
- Clone the repository:
git clone https://github.com/yourusername/CompEduX.git
-
Open the project in Android Studio or IntelliJ IDEA
-
Build the project:
./gradlew build
- Android: Run the Android app configuration
- iOS: Build the iOS framework and run in Xcode
- Web: Build and serve the JS application
app (UI layer)
│
├─ core:data (Repository implementations)
│ │
│ ├─ core:network (API client)
│ │ │
│ │ └─ core:utils (Utilities)
│ │
│ └─ core:domain (Business logic)
│ │
│ └─ core:utils (Utilities)
│
└─ core:utils (Utilities)
- Fork the project
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
./gradlew runHot