{"id":20742989,"url":"https://github.com/pandh4cker/tmdb-app","last_synced_at":"2026-04-20T17:33:01.092Z","repository":{"id":107313679,"uuid":"245736031","full_name":"PandH4cker/TMDB-App","owner":"PandH4cker","description":"TMDB App, fetches data from The Movie DataBase API to get movies details","archived":false,"fork":false,"pushed_at":"2020-05-24T15:27:47.000Z","size":2444,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-11T12:37:21.675Z","etag":null,"topics":["android-application","android-ui","android-youtube-player","circleimageview","java-8","lifecycle","okhttp3-logginginterceptor","picasso-library","recyclerview-adapter","retrofit2","retrofit2-rxjava2","room-database","room-persistence-library","rxjava-android","rxjava2","rxjava2-retrofit2","tmdb","tmdb-api","tmdb-movie","tmdb-rest-api"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/PandH4cker.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-03-08T01:59:15.000Z","updated_at":"2020-05-26T16:51:13.000Z","dependencies_parsed_at":null,"dependency_job_id":"8300b096-6f44-4e53-a02b-a877aee12aae","html_url":"https://github.com/PandH4cker/TMDB-App","commit_stats":null,"previous_names":["pandh4cker/tmdb-app"],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/PandH4cker/TMDB-App","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PandH4cker%2FTMDB-App","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PandH4cker%2FTMDB-App/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PandH4cker%2FTMDB-App/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PandH4cker%2FTMDB-App/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PandH4cker","download_url":"https://codeload.github.com/PandH4cker/TMDB-App/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PandH4cker%2FTMDB-App/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32057648,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-20T11:35:06.609Z","status":"ssl_error","status_checked_at":"2026-04-20T11:34:48.899Z","response_time":94,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android-application","android-ui","android-youtube-player","circleimageview","java-8","lifecycle","okhttp3-logginginterceptor","picasso-library","recyclerview-adapter","retrofit2","retrofit2-rxjava2","room-database","room-persistence-library","rxjava-android","rxjava2","rxjava2-retrofit2","tmdb","tmdb-api","tmdb-movie","tmdb-rest-api"],"created_at":"2024-11-17T07:08:40.634Z","updated_at":"2026-04-20T17:33:01.077Z","avatar_url":"https://github.com/PandH4cker.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# TMDB App\n---\n## Authors: [Raphael Dray](https://www.linkedin.com/in/raphaeldray/)\n---\n\u003e This program is an Android Mobile Application. \u003cbr /\u003e\n\u003e It can be launched with an Android Simulator (included with Android Studio). \u003cbr /\u003e\n\u003e It fetches data from TMDB ([The Movie Database](https://www.themoviedb.org/)) API.\n\n\n\u003e It's written in __Java programming language including some libraries like so:__\n+ [Picasso](https://square.github.io/picasso/)\n+ [RecyclerView](https://developer.android.com/jetpack/androidx/releases/recyclerview)\n+ [Retrofit 2](https://square.github.io/retrofit/)\n+ [RxJava 2/RxAndroid](https://github.com/ReactiveX/RxJava)\n+ [Room](https://developer.android.com/jetpack/androidx/releases/room)\n+ [Lifecycle](https://developer.android.com/topic/libraries/architecture/lifecycle)\n+ [OkHttp 3 Logging Interceptor](https://github.com/square/okhttp/tree/master/okhttp-logging-interceptor)\n+ [CircleImageView](https://github.com/hdodenhof/CircleImageView)\n+ [Swipe Refresh Layout](https://developer.android.com/jetpack/androidx/releases/swiperefreshlayout)\n+ [Android Youtube Player](https://github.com/PierfrancescoSoffritti/android-youtube-player)\n\n\n---\n## Implementations\n\n\u003e Here is described some implemented features:\n\u003e + First view with a list of items (RecyclerView)\n\u003e + Second view describing the selected item including texts, videos and horizontal recyclerview.\n\u003e + Webservice call to a RESTful API.\n\u003e + Cached data into a Room SQLite Database.\n\u003e + MVVM Architecture\n\u003e + Singleton design pattern for Room implementation\n\u003e + Gitflow (permanent: master|develop) (temporary: features|releases)\n\u003e + Design quite responsive\n\u003e + SOLID Principles\n\n---\n## How the mobile app works ?\n### First Activity: List of the last popular films\n\n\u003e When launching the application, the list of the popular films are fetched from the API and displayed into the view.\n\u003e You can then slide down to discover the new popular films.\n\n\u003cimg align=\"center\" width=\"400\" height=\"900\" src=\"first_activity.png\"/\u003e\n\n### Second Activity\n\u003e On clicking over a film, we can find its name, authors, trailer, actors and its synopsis\n\n\u003cimg align=\"center\" width=\"400\" height=\"900\" src=\"second_activity.png\"/\u003e\n\n---\n## Improvements\n\u003e In order to improve this application we could implement:\n\u003e + The other calls to the API in the Retrofit contract\n\u003e + Improve the first view so it will be like this one: \n\n  \u003cimg align=\"center\" width=\"400\" height=\"600\" src=\"improve_first_activity.png\"/\u003e\n\n\n\u003e + Push notifications (Firebase implementation)\n\u003e + Other HTTP call method (POST, PUT, DELETE, OPTIONS) to create authentication in the application\n---\n## Last Release Version: 0.1.1\n### Changelog:\n\u003e #### Version 0.1.1\n\u003e Improved README.md.\n---\n\u003e #### Version 0.1.0\n\u003e Added Triplet implementation to encapsulate three classes inside one. \u003cbr /\u003e\n\u003e Added new converter for handling String[] integration in the Room Database. \u003cbr /\u003e\n\u003e Added CrewModel, CastModel and Credits POJO class to handle Arraylist of crews and casts. \u003cbr /\u003e\n\u003e Added the deserializer CreditsJsonDeserializer to deserialize the credits response. \u003cbr /\u003e\n\u003e Added new register type adapter to the APIClient to handle credits response of the API. \u003cbr /\u003e\n\u003e Improved MovieModel and refactored the MovieDetailsActivity. \u003cbr /\u003e\n\u003e Refactored MovieViewModel.getPopularMoviesOnline() method to handle more concisely RxJava2 calls from Retrofit2 and make it more suitable using FlatMaps. \n---\n\u003e #### Version 0.0.9\n\u003e Added new register type adapter for handling VideoModel responses to the API Client. \u003cbr /\u003e\n\u003e Refactored getVideoOf(...) method in MovieAPI interface, path needed to be before query. \u003cbr /\u003e\n\u003e Added new column for storing the youtube video key in the table movie. \u003cbr /\u003e\n\u003e Added RxJava Call in MovieViewModel to get the video trailer of each movies.\n---\n\u003e #### Version 0.0.8\n\u003e Refactored file architectures', added GenreConverter as TypeAdapter for Room integration of the genre_ids. \u003cbr /\u003e\n\u003e Improved MovieAdapter to put to the MovieDetailsActivity the information from where it has been started. \u003cbr /\u003e\n\u003e Improved APIClient to handle multiple register type adapter, migrated the type to TypeToken instance. \u003cbr /\u003e\n\u003e Improved the model, added the Genre enumeration to handle genre_ids list from API response.\n\u003e \n---\n\u003e #### Version 0.0.7\n\u003e Adding connection between the main view and the movie details view. \u003cbr /\u003e\n\u003e Added Red Bookmark vector asset to set up a film in the favorite list. \u003cbr /\u003e\n\u003e Added Android Youtube Player to handle playing youtube video for movie trailers. \u003cbr /\u003e\n\u003e Improved movie details activity and refactored its design and created cast item for the future recycler view adapter for it. \u003cbr /\u003e\n\u003e Added Video Model to handle the response of the API when fetching the video trailer of the movie.\n---\n\u003e #### Version 0.0.6\n\u003e Adding the first implementation of the main view and refactoring some code.\n---\n\u003e #### Version 0.0.5\n\u003e Added ViewModels implementation for handling popular movies get request. \u003cbr /\u003e\n\u003e Add RxJava call adapter into ViewModels to dispose and store subscriptions.\n---\n\u003e #### Version 0.0.4\n\u003e Added Room DAO classes and refactored MovieModel and APIClient classes for handling Paging and Favorite. \u003cbr /\u003e\n\u003e Upgraded Java support version to Java 8 for including lambdas expression.\n---\n\u003e #### Version 0.0.3\n\u003e Adding of API Management classes with the adaptation of RxJava2 in Retrofit2. \u003cbr /\u003e\n\u003e Adding of JsonDeserializer used by the GsonFactory to only retrieve the results array object of MovieModel in the response of the API. \u003cbr /\u003e\n\u003e Adding 5 requests to handle respectively:\n\u003e + Latest movies\n\u003e + Now Playing movies\n\u003e + Popular movies\n\u003e + Top Rated movies\n\u003e + Upcoming movies\n---\n\u003e #### Version 0.0.2\n\u003e Adding of utils for network availability test and dates formatting.\n---\n\u003e #### Version 0.0.1\n\u003e Adding of activity movie details xml file and synced with Gradle libraries written in the README. \u003cbr /\u003e\n\u003e Adding some classes to perform a multi-threaded blur on an image for the front of the application. \u003cbr /\u003e\n\u003e Filled the mainActivity class to build the activity movie details xml file in order to test this view. ","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpandh4cker%2Ftmdb-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpandh4cker%2Ftmdb-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpandh4cker%2Ftmdb-app/lists"}