Dicoding Event is an Android application developed as part of the Dicoding Belajar Fundamental Android course submission. The app follows the MVVM architecture and utilizes the Dicoding Event API to display upcoming and finished events. Users can favorite events, toggle dark mode, and manage notification settings. This app is designed with performance, best practices, and user experience in mind
- Features
- Technologies Used
- Architecture
- Getting Started
- App Structure
- Usage
- Contributing
- License
- Contact
- Home Page: Displays upcoming and finished events.
- Event Detail Page: Shows detailed event information and links to the event’s webpage.
- Favorite Events: Save and manage favorite events using Room Database.
- Dark Mode: Toggle between light and dark themes in settings.
- Notification Settings: Manage event notifications in settings.
- Internet Connectivity Checker: Displays real-time internet status (online/offline).
- Language: Kotlin
- Architecture: MVVM (Model-View-ViewModel)
- Data Binding: LiveData, ViewModel
- Networking: Retrofit, Coroutine, Dicoding Event API
- Local Storage: Room Database
- UI: RecyclerView, Material Components, View Binding
- Others: AndroidX, Navigation Component, Dark Mode, SharedPreferences
This app follows the MVVM (Model-View-ViewModel) architecture pattern, which helps in maintaining a clean separation of concerns, easy testing, and better organization of code:
- Model: Responsible for managing the data (e.g., fetching event data from API and handling Room Database operations).
- View: Displays the data on the UI, observes changes from ViewModel, and reflects them.
- ViewModel: Acts as a bridge between the View and the Model, managing UI-related data and business logic.
To get a local copy of the project up and running on your machine, follow these steps:
Ensure you have the following software installed:
- Android Studio (latest stable version recommended)
- Git (for cloning the repository)
-
Clone the repository: Open a terminal and run the following command to clone the repository:
git clone https://github.com/zyrridian/dicoding-event-app.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 Project
from 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 RecyclerView.
- Detail Page: Displays detailed event information (name, date, description), and provides a link to the event’s webpage.
- Favorites: Users can save events to a favorites list, which is stored using Room Database for persistence.
- Settings:
- Dark Mode: Users can toggle between light and dark modes.
- Notification Settings: Manage event notifications (enabled/disabled).
- Network Connectivity Check: The app checks for internet status and displays a message if the device is offline.
Once the app is running, you can:
- Browse Events: Navigate between upcoming and finished events on the home screen.
- View Event Details: Click on any event to see more details, including a link to the event’s webpage.
- Favorite Events: Add events to your favorites list and view them later.
- Customize Settings: Enable dark mode and control notifications from the settings page.
- Offline Handling: The app detects if the device is offline and notifies the user.
Contributions are welcome! If you would like to contribute to the project, please follow these steps:
- Fork the repository.
- Create a new branch (
git checkout -b feature/your-feature
). - Make your changes.
- Commit your changes (
git commit -m 'Add some feature'
). - Push to the branch (
git push origin feature/your-feature
). - Create a pull request. Please ensure your code follows the existing code style and includes appropriate documentation.
This project is licensed under the MIT License. See the LICENSE file for details.
- Author: Rezky Aditia Fauzan
- Email: [email protected]
- GitHub: https://github.com/zyrridian