This project was created as part of Dicoding's Android Intermediate course. The objective of this project is to develop a story app that integrates several components:
- Advanced UI
- Animation
- Localization & Accessibility
- Service
- Media
- Geo Location
- Advanced Testing
- Advanced Database
Splashscreen | Onboarding | Onboarding (Localization) | Sign up |
---|---|---|---|
Sign up (Localization) | Sign in | Customview | Home |
---|---|---|---|
Add Story (Access Device Camera) | Add Story (Camera) | Add Story (Gallery) | Disabled Story Location |
---|---|---|---|
Enabled Story Location (Access Device Location) | Enabled Story Location | Add Story Description | Story Detail |
---|---|---|---|
Post Story | Change Language | Show Story Map (Access Device Location) | Show Story Map |
---|---|---|---|
Kotlin using Android Studio HedgeHog and Postman for testing APIs
Dependencies:
- AndroidX Core KTX
- AndroidX AppCompat
- Material Components for Android
- AndroidX Activity
- AndroidX ConstraintLayout
- ViewBinding Property Delegate
- AndroidX Activity KTX
- AndroidX Lifecycle ViewModel KTX
- AndroidX Lifecycle LiveData KTX
- Kotlin Coroutines Android
- AndroidX Core SplashScreen
- AndroidX SwipeRefreshLayout
- Glide
- AndroidX Room
- Paging Integration for Room
- AndroidX DataStore Preferences
- AndroidX DataStore Core
- Gson
- Retrofit
- Converter for Gson
- Logging Interceptor
- AndroidX Camera View
- AndroidX Camera Camera2
- AndroidX Camera Lifecycle
- Google Play Services Maps
- Google Play Services Location
Testing Dependencies:
- AndroidX Core Testing
- Kotlin Coroutines Test
- JUnit
- AndroidX JUnit
- Espresso Core
- Espresso Intents
- Espresso Contrib
- Mockito Core
- Mockito Inline
Sign-In/Sign-Up Feature:
- Create user authentication with sign-in and sign-up functionalities.
- Manage user sessions by saving tokens in DataStore after successful login.
- Handle logouts by deleting the session or token.
Story Handling:
- Display a list of stories and show story details when a story is tapped.
- Allow users to upload a story with a photo (from the camera or gallery) and a description.
- Provide an option to add location data to the story based on user preference.
Map Integration:
- Use Google Maps API to display stories based on their location.
- Create markers on the map for each story; tapping a marker navigates to the story details.
- Customize the map's appearance using Custom Map Style.
Paging and Offline Support:
- Implement paging in a RecyclerView using Paging 3 and RemoteMediator for database integration, allowing offline access to stories.
- Handle data retrieval failures by displaying error messages and a retry button.
UI/UX Enhancements:
- Implement property animation for smooth transitions and interactions.
- Create custom views for validating email and password input during sign-up/sign-in.
- Support multiple languages using localization.
Architecture:
- Use Android architecture components such as ViewModel and LiveData for managing UI-related data.
Testing:
- Add UI tests with idling resources to test the sign-in and logout process, ensuring the app's behavior under various conditions.
Syenira Sheila
- LinkedIn: @SyeniraSheila
- Github: @syenirasheila
Hopefully, this project can be valuable and beneficial for the advancement of Technology and Information, and if it's been useful to you, please give it a βοΈ on this repository! Thank you π
Copyright Β© 2024 Syenira Sheila. This project is MIT licensed.