Git Product home page Git Product logo

onepieceandroid's Introduction

One Piece Anime App


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.


Project Screens

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

Project Tech Stack

  • 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.

Architecture

This app uses MVVM (Model View View-Model) architecture structure.

Api 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

Project Graph

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.

License

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.

End Note

I may have mistakes, you can contact me for your feedback. 👉 📫 [email protected]

onepieceandroid's People

Contributors

erenmlg avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.