An Android application built with Kotlin for managing and viewing event details. This project showcases the implementation of modern Android development practices using the MVVM architecture. The app allows users to mark events as favorites, switch between light and dark modes, and customize notification preferences. It is carefully crafted with a focus on performance, adherence to best practices, an intuitive user experience, and support for multiple languages.
- ✅ Browse a list of finished events
- 🔍 Search events by title
- 📄 View detailed event information
- ❤️ Like/unlike events with persistent storage using Room
- 🌐 Supports multiple languages (English, Indonesian, and Korean)
- 🧼 Clean and responsive UI following Material Design guidelines
- Language: Kotlin
- Architecture: MVVM (Model-View-ViewModel)
- Data Binding: LiveData, ViewModel
- Networking: Retrofit, Coroutines, Dicoding Event API
- Local Storage: Room Database
- UI Components: RecyclerView, Material Components, View Binding
- Other: AndroidX, Navigation Component, Dark Mode, SharedPreferences
Before you begin, make sure you have the following software installed:
- Android Studio (latest stable version recommended)
- Git (for cloning the repository)
To run this project locally:
-
Open a terminal and run the following command to clone the repository:
git clone https://github.com/khw315/EventsforDicoding.git
-
Open the project in Android Studio:
- Open Android Studio.
- Select Open an
existing Android Studio project. - Navigate to the cloned repository and select it.
-
Build the project:
- Android Studio will automatically build the project.
- If the build does not start automatically, select
Build > Make Projectfrom the menu.
-
Run the app:
- Connect your Android device or use an emulator.
- Click the green play button to run the app on the device.
- Home: Displays two categories of events (Upcoming & Finished) using a RecyclerView.
- Detail Page: Shows detailed event information (name, date, description) and includes a link to the event’s official webpage.
- Favorites: Users can save events to their favorites list, which is stored in the Room Database for persistence.
- Settings:
- Dark Mode: Users can toggle between light and dark themes.
- Notification Settings: Manage event notifications (enable/disable).
- Network Connectivity Check: The app monitors internet status and notifies the user if the device is offline.
Once the app is up and running, you can:
- Browse Events: Easily navigate between upcoming and finished events on the home screen.
- View Event Details: Tap on any event to access detailed information, including a link to the event’s official webpage.
- Favorite Events: Add events to your favorites list for quick access later.
- Customize Settings: Enable dark mode and manage notification preferences from the settings page.
- Offline Handling: The app detects when the device is offline and notifies the user accordingly.
This project is distributed under the MIT License. See the LICENSE file for more details.
For any inquiries or feedback, feel free to reach out to me at email or connect with me on LinkedIn.
This project was developed as part of Dicoding's Belajar Fundamental Aplikasi Android course and Android Developer learning path, which gave me a deeper understanding of Android development.
This project was made possible with the help of various resources and tools. Special thanks to:
- Android Developers for documentation and best practices.
- Android Studio for development environment.
- AndroidX for modern Android development.
- Coroutines for asynchronous programming.
- Git for version control.
- GitHub for hosting the project.
- Glide for image loading.
- Kotlin for programming language.
- Lottie for animations.
- Material Design for design guidelines.
- Navigation Component for navigation.
- Retrofit for networking.
- Room for local database management.
- SharedPreferences for simple data storage.
- Shimmer for loading animations.
- And many more!
한국어 버전은 README.ko.md 파일에서 확인하세요.