This is a one piece anime app with custom local api(API Repository), maded for the improve myself. This app have Picasso, Room, Lottie Animations, Retrofit, OkHttp3, Media3 Exoplayer, Hilt, Ksp, Navigation Libraries and some custom view components.
Splash&Logo
|
Characters Screen
|
Character Detail Screen
|
Crew Screen
|
Crew Detail Screen
|
|
|
|
|
|
Devil Fruit Screen
|
Occupation Screen
|
Locations Screen
|
Sub Locations Screen
|
Favorites Screen
|
|
|
|
|
|
Video Screen
|
Animated Video Screen
|
|
|
- This project developed with %100 with Kotlin
- Made with Android Architecture Components for the Collection of libraries that help you design robust, testable, and maintainable apps.
- ViewModel: The ViewModel class is a business logic or screen level state holder. It exposes state to the UI and encapsulates related business logic. Its principal advantage is that it caches state and persists it through configuration changes. This means that your UI doesn’t have to fetch data again when navigating between activities, or following configuration changes, such as when rotating the screen.
- Kotlin CoroutineOn Android, coroutines help to manage long-running tasks that might otherwise block the main thread and cause your app to become unresponsive. Over 50% of professional developers who use coroutines have reported seeing increased productivity. This topic describes how you can use Kotlin coroutines to address these problems, enabling you to write cleaner and more concise app code.
- Dependency Injection with Hilt: Hilt is a dependency injection library for Android that reduces the boilerplate of doing manual dependency injection in your project. Doing manual dependency injection requires you to construct every class and its dependencies by hand, and to use containers to reuse and manage dependencies.
- Navigation: Navigation refers to the interactions that allow users to navigate across, into, and back out from the different pieces of content within your app. Android Jetpack's Navigation component helps you implement navigation, from simple button clicks to more complex patterns, such as app bars and the navigation drawer.
- Retrofit: Retrofit is the class through which your API interfaces are turned into callable objects. By default, Retrofit will give you sane defaults for your platform but it allows for customization.
- Media3 Exoplayer: A media player is an app-level component that allows playback of video and audio files.
- Lottie: A library for animations.
- Kotlin KSP: Kotlin Symbol Processing (KSP) is an API that you can use to develop lightweight compiler plugins
- OkHttp: OkHttp is an open-source HTTP client developed by Square and is widely used for handling network operations in Android apps.
- Repository: This located in data layer that contains application data and business logic.
- Use Case: Located domain layer that sits between the UI layer and the data layer.
This app uses MVVM (Model View View-Model) architecture structure.
Character |
Field Name |
Type |
_id |
ObjectID |
characterName |
ObjectID |
characterStatus |
String |
characterCrew |
ObjectID |
characterOrigin |
ObjectID |
characterOccupation |
ObjectID |
characterBounty |
Number |
characterDevilFruit |
ObjectID |
characterAbilities |
String |
characterPictureURL |
String |
|
Crew |
Field Name |
Type |
_id |
ObjectID |
crewName |
String |
crewTotalBounty |
Number |
crewMainShip |
String |
crewFlagURL |
String |
|
Devil Fruit |
Field Name |
Type |
_id |
ObjectID |
devilFruitName |
String |
devilFruitType |
String |
devilFruitPictureURL |
String |
|
Locations |
Field Name |
Type |
_id |
ObjectID |
locationName |
String |
locationPictureURL |
String |
|
Occupations |
Field Name |
Type |
_id |
ObjectID |
occupationName |
String |
occupationDescription |
String |
occupationPictureURL |
String |
|
SubLocation |
Field Name |
Type |
_id |
ObjectID |
subLocationName |
String |
subLocationPictureURL |
String |
firstAppearance |
String |
location |
ObjectID |
|
This app uses MVVM (Model View View-Model) architecture
Core layer have 5 sub layer as common, data, domain, local, network;
|
- Delegate: Hold ViewBindingDelegate for the bind layer to fragment with viewBinding.
- Extension: Hold Map extensions for the response to entity, other extension for the view, picasso etc.
|
|
- Di: Hold Repository Modules for the dependecy injection
- Modal: Hold entity classes for the used on app
- Repository: Hold repository for the application data and business logic.
- ResponseState: For the handle response status.
|
|
- Use Case: This is bridge to between UI Layer and Data Layer, they are optional
|
|
- Di: Hold Local Database Modules for the dependecy injection.
- Entity: Hold Local Database Entity classes.
- DAO: For the Queries to room
|
|
- Di: Hold Network Modules for the dependecy injection.
- Dto: Hold api response entity classes
- Source: For the Queries to API and repo
|
|
Presentation layer have 7 sub layer as character, components, crews, devilfruits, favorite, location, occupation.
They hold own fragments, viewmodels, adapters and detail pages.
|
Designed and developed by 2024 ErenMlg (Eren Mollaoğlu)
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
I may have mistakes, you can contact me for your feedback. 👉 📫 [email protected]