A feature-rich, cross-platform food delivery application built using Kotlin Multiplatform and Jetpack Compose, showcasing modern mobile architecture, real-world integrations, and accessibility-focused design.
- Cross-platform UI using Jetpack Compose Multiplatform
- MVVM architecture with clean state management
- Multi-language support (English & German)
- Location-based delivery using OpenStreetMap
- Camera integration for profile & order customization
- Accessibility via Text-to-Speech (TTS)
- Support using Room Database
-
Text and Image Integration:
- Support for displaying text and images in the UI for menu items, order details, etc.
-
Button and OnClick Functionality:
- Interactive buttons to handle user actions like placing orders, navigating, and more.
-
User Authentication:
- Login and registration functionality for users, allowing access to personal data and orders.
-
Camera Integration:
- Users can capture and upload images via the camera for order customizations or profile pictures.
-
Text-to-Speech (TTS):
- Provides accessibility features by converting text into speech. It reads out important information for users, enhancing usability for visually impaired users.
-
Multi-language Support:
- Supports both English and German languages. Users can toggle between languages in the app's settings.
-
Location Integration:
- Utilizes Open StreetView Maps to show users their current location and select a delivery address.
-
RoomDB for Data Persistence:
- Local database to store user preferences, order history, and more for offline functionality.
-
Permissions Handling:
- Handles runtime permissions for accessing the camera, location, etc., ensuring compliance with Android’s security model.
- Language: Kotlin
- Framework: Kotlin Multiplatform
- UI: Jetpack Compose Multiplatform
- Database: Room Persistence Library
- Architecture: MVVM (Model-View-ViewModel)
- Navigation: Jetpack Navigation Compose
- Dependency Injection: Manual dependency injection
- Build System: Gradle with Kotlin DSL
- Android Studio Arctic Fox or later
- JDK 11 or higher
- Android SDK API level 21 or higher
-
Clone the repository
git clone https://github.com/DevJLALW/MobileApplications.git cd FoodDeliveryApp -
Open in Android Studio
- Launch Android Studio
- Select "Open an existing Android Studio project"
- Navigate to the cloned directory and select it
-
Build the project
- Wait for Gradle sync to complete
- Build → Make Project (Ctrl+F9)
-
Run on device/emulator
- Connect an Android device or start an emulator
- Run → Run 'app'
The application follows MVVM (Model-View-ViewModel) architecture:
- Model: Room database entities and repositories
- View: Jetpack Compose UI components
- ViewModel: Handles business logic and UI state
- Users Entity: Represents user data with Room annotations
- UsersDao: Data access object with CRUD operations
- UsersDatabase: Room database configuration
- UsersViewModel: Manages user-related operations and state
- Navigation: Single-activity architecture with Jetpack Navigation
- Screens: Individual composable screens for different app sections
- Components: Reusable UI components
- Location Services: GPS and map(Open Street Map) integration
- Camera Services: Photo capture and storage
- Language Services: Multi-language support with SharedPreferences
The app requires the following permissions:
CAMERA: For profile photo captureREAD_EXTERNAL_STORAGE&WRITE_EXTERNAL_STORAGE: For photo storageACCESS_FINE_LOCATION&ACCESS_COARSE_LOCATION: For location servicesINTERNET: For network operations
The app supports English and German languages:
- Language selection in the intro screen
- Persistent language preference storage
- Localized strings in
res/values/andres/values-de/
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
- Kotlin Multiplatform for cross-platform development
- Jetpack Compose for modern UI development
- Room for database persistence
- OpenStreetMap for location services
