The Dicoding Event App is a mobile application designed to help users discover and manage events. The app includes features such as adding events to favorites, managing themes, and displaying detailed information about events. This project demonstrates the integration of various Android components and architecture, including data persistence and network operations.
- Implementation of a Favorite Feature with a database to allow users to add and remove events from their favorites.
- Creation of a dedicated screen to display a list of favorite events.
- Development of a detailed view for each favorite event.
- Implementation of theme settings, allowing users to switch between light and dark themes using key-value storage.
- Ensuring the selected theme persists across app restarts by observing data changes.
- Ensuring all UI components remain visible and functional regardless of the selected theme.
- Maintenance of existing features and components from the initial submission, including multiple event lists and a bottom navigation system.
- Use of Loading Indicators during data fetch operations.
- Integration of Daily Reminder settings using WorkManager for notifications about upcoming events.
- Proper implementation of Repository Pattern and Dependency Injection for data management.
- Use of Coroutines for asynchronous tasks with Retrofit and Room.
- Error handling to display messages when data cannot be retrieved.
- Code quality improvement, with minimal warnings during inspection.
- Displaying two types of event lists using bottom navigation, categorizing active/upcoming and completed events.
- Favorite Feature: Users can add or remove events from their favorites and view a dedicated list of favorite events.
- Event Detail View: Displays detailed information about each event, including:
- Image (logo or media cover)
- Event name
- Organizer name
- Event time
- Remaining quota
- Event description
- Link to the event
- Theme Management: Users can switch between light and dark themes. The selected theme persists even after closing and reopening the app, ensuring that all components remain visible and clear.
- Loading Indicators: Visual indicators inform users when data is being loaded from the API.
- Daily Reminder Notifications: Users receive notifications for upcoming events, configurable through the app's settings.
- Repository and Dependency Injection: Data fetched from the API is managed through a well-structured repository pattern.
- Coroutines for Asynchronous Tasks: Used to manage network requests and database operations efficiently.
- Error Handling: Provides user feedback when data retrieval fails, such as during network outages.
- Bottom Navigation: Features two lists of events (active/upcoming and completed) accessible via bottom navigation.
- Home Page: A new fragment in the bottom navigation displays a horizontal RecyclerView or carousel showcasing up to 5 active and completed events.
- Search Functionality: Users can search for events using a SearchBar or SearchView, utilizing the search endpoint for results.
- Android Architecture Component Implementation: Properly implemented ViewModel to maintain data across configuration changes.
- Improved Error Handling: Enhanced messaging for users when data retrieval fails.
- Code Quality Assurance: Reduced warnings during code inspections to maintain high-quality code standards.
-
Theme Switch Screen
This screenshot shows the theme switch functionality, allowing users to toggle between light and dark themes. -
Settings Screen
The settings screen provides options for theme management and daily reminders. -
Home Screen
The home screen displays active and upcoming events in an organized manner. -
Push Notification
This screenshot illustrates the push notification feature, alerting users about upcoming events. -
Event Detail Screen
The event detail screen provides comprehensive information about the selected event, including links to more details.
- Implement the Favorite Feature using a database for persistent storage of favorite events.
- Create a separate screen for displaying a list of favorite events.
- Develop a detailed view for favorite events to show essential event information.
- Integrate theme management functionality, allowing users to switch between light and dark themes.
- Ensure the selected theme persists across app restarts by implementing data observation.
- Maintain existing features from the initial submission, including event listings and navigation.
- Display loading indicators during API data fetches.
- Add settings for daily reminders using WorkManager for notifications of upcoming events.
- Implement the repository pattern and dependency injection for better data management.
- Utilize coroutines for effective network requests and database operations.
- Enhance error handling to inform users of issues during data retrieval.
- Improve code quality to ensure minimal warnings during inspections.
If you want to try the DicodingEvent app, simply download the latest release from the Releases Page.
After downloading the APK, install it on your Android device, and you're ready to explore the latest Events at Dicoding!