vikasmain / MemesSharing

An Online Meme Sharing app with swipeable vidoes, user can like, share different videos, each viewpager item has one video to show.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

MemesSharing

Get it on Google Play

An Online Meme Sharing app with swipeable vidoes, user can like, share different videos, each viewpager item has one video to show.

1. Flow of App

Untitled.1.mp4

APK

  1. User can see videos in viewpager by swiping up.
  2. User can like, share the video after clicking on like, share icon.
  3. User can play/pause the video after clicking on videoview.
  4. User can see filtered listview of videos in gridview.

2. Share Video to any other app

20210818_115735.mp4

Video will be available to share after downloading. During downloading video videoview will be paused and user will see a chooser for sharing video.

Screenshots of app:-

1. User can play the video after clicking on it(if its paused). icon will show with bounce animation.

  1. User can pause the video after clicking on it. icon will show with bounce animation.

  1. User can like or share the video after clicking on like and share imageview.

  1. User will see listview of different videos types in gridview.

Api end points:-

Used Heroku for deploying api's

  1. https://memestik.herokuapp.com/items - api to add videos to list, those videos will available in viewpager You can add data to this api using post request using postman like below.

Screenshot 2021-08-18 at 6 26 21 PM

  1. https://memestik.herokuapp.com/types - api to add items in list video, after clicking on these list view items you will see filtered list view. You can add data to this api using post request using postman like below.

Screenshot 2021-08-18 at 5 12 28 PM

CodeFlow of App

There are two branches of app:-

a) Master branch contain this code

  1. Used MVP architecture here:- https://github.com/vikasmain/MemesSharing/blob/master/app/src/main/java/com/example/memessharing/MemesContract.kt

  2. Used coroutines for api calls here:- https://github.com/vikasmain/MemesSharing/blob/master/app/src/main/java/com/example/memessharing/presenter/MemesPresenter.kt#L68

  3. Used Dagger hilt for dependency injection here:- https://github.com/vikasmain/MemesSharing/tree/master/app/src/main/java/com/example/memessharing/deps

  4. Used StateFlows for different managing states:- https://github.com/vikasmain/MemesSharing/blob/master/app/src/main/java/com/example/memessharing/StateFlows.kt

  5. Added tests for coroutines:- https://github.com/vikasmain/MemesSharing/tree/master/app/src/test/java/com/example/memessharing

b) feature/view-impl branch contain this code

  1. Removed activity reference from dagger hilt module:- https://github.com/vikasmain/MemesSharing/blob/feature/view-impl/app/src/main/java/com/example/memessharing/deps/MainModule.kt

  2. Created a separate view implementation for view interface:- https://github.com/vikasmain/MemesSharing/blob/feature/view-impl/app/src/main/java/com/example/memessharing/view/MemeViewImpl.kt

  3. Used MVP architecture here:- https://github.com/vikasmain/MemesSharing/blob/master/app/src/main/java/com/example/memessharing/MemesContract.kt

  4. Used coroutines for api calls here:- https://github.com/vikasmain/MemesSharing/blob/master/app/src/main/java/com/example/memessharing/presenter/MemesPresenter.kt#L68

  5. Used Dagger hilt for dependency injection here:- https://github.com/vikasmain/MemesSharing/tree/master/app/src/main/java/com/example/memessharing/deps

  6. Used StateFlows for different managing states:- https://github.com/vikasmain/MemesSharing/blob/master/app/src/main/java/com/example/memessharing/StateFlows.kt

  7. Added tests for coroutines:- https://github.com/vikasmain/MemesSharing/tree/master/app/src/test/java/com/example/memessharing

About

An Online Meme Sharing app with swipeable vidoes, user can like, share different videos, each viewpager item has one video to show.


Languages

Language:Kotlin 100.0%