This project is a food ordering application developed using Kotlin Multiplatform and Compose Multiplatform, targeting both Android and iOS platforms.
The project is based on the principles of Clean Architecture and the MVVM (Model-View-ViewModel) pattern to ensure testability, sustainability, and a clear separation of responsibilities between layers.
- Domain Layer: Contains platform-independent business rules, models, and use cases.
- Data Layer: Houses data sources (API, database), repository implementations, and data transfer objects (DTOs).
- Presentation Layer: Includes ViewModels and UI components created with Jetpack Compose.
- UI: Compose Multiplatform
- ViewModel: Jetpack ViewModel
- Navigation: Compose Navigation
- Networking: Ktor
- JSON Serialization: kotlinx.serialization
- Dependency Injection: Koin
- Asynchronous Operations: Kotlin Coroutines
- Image Loading: Coil
- Authentication & Realtime DB: Supabase
- UI Animations: Compottie (Lottie for Compose) & Compose Shimmer
- List foods
- Add and remove products from the cart
- Update the quantity of products in the cart
- User login and registration (planned)
- Open the project in Android Studio.
- Select the
composeAppconfiguration. - Run the application on an emulator or a physical device.
- You need a macOS device and Xcode to run the project.
- In the terminal, in the project root directory, prepare the Xcode project with the following command:
./gradlew podInstall
- Open the
iosApp/iosApp.xcworkspacefile with Xcode. - Select a simulator or a connected iOS device and run the application.
composeApp: Contains the code shared between platforms (commonMain,androidMain,iosMain).commonMain: Common Kotlin code for all targets.androidMain: Android-specific code and resources.iosMain: iOS-specific code.
iosApp: Contains the Xcode project and Swift code for the iOS application.
The API endpoints used by the application are specified below.
Base URL: http://kasimadalan.pe.hu/
- Endpoint:
GET /yemekler/tumYemekleriGetir.php - Description: Returns a list of all available foods.
- Endpoint:
POST /yemekler/sepeteYemekEkle.php - Description: Adds the specified food to the cart.
- Endpoint:
POST /yemekler/sepettekiYemekleriGetir.php - Description: Lists the products in the user's cart.
- Endpoint:
POST /yemekler/sepettenYemekSil.php - Description: Deletes the specified food from the cart.