Coder Social home page Coder Social logo

ahmetocak / movieapp Goto Github PK

View Code? Open in Web Editor NEW
17.0 1.0 2.0 3.55 MB

This application is a movie application developed with Jetpack Compose. The application was built in accordance with mvvm architecture using firebase integrations and popular libraries such as room, hilt, kotlin-coroutines, datastore, paging3, retrofit.

Kotlin 100.00%
android-application jetpack-compose kotlin clean-architecture coroutines-android datastore dependency-injection firebase-auth firebase-firestore-database firebase-storage

movieapp's Introduction

Jetpack Compose - Movie App ๐ŸŽฌ

Movie App is developed with Jetpack Compose. To log in to the application, you must first create an account or sign in with Google. Authentication is done with Firebase. The app can display movies that are trending, top rated and upcoming. On the See all movies page, all selected movies are shown with pagination. You can search for any movie, add it to the watchlist or look at the details of the movie. The movie details show the movie poster, a short description about the movie, director, rating, cast, trailers, user reviews and recomended movies. You can also get details about the movie you have selected on this page from the Gemini api. On the profile screen you can change the app's language, theme and, if the device is Android 12 and above, you can also choose dynamic color. The profile picture is kept with Firebase storage. When the account is deleted, the watchlist and profile picture are also deleted from Firebase. The application can work in both landscape and portrait mode. The Application also works compatible with tablets.

Tech Stack ๐Ÿ“š

Outputs ๐Ÿ–ผ

Preview

_.mp4
Light Dark
Login Screen
SignUp Screen
Movies Screen
Search Screen
WatchList Screen
Profile Screen
See All Screen
Movie Details Screen
_.mp4
_.mp4
Actor Details Screen
_.mp4
_.mp4

Tablet Preview

ย  ย  ย  ย  ย  ย  ย  ย 

Landscape Preview

Modularization ๐Ÿ“ฆ

movie_app_modular_graph

Name Responsibilities Key classes
app Brings everything together required for the app to function correctly. This module responsible for navigation. MovieApp, MainActivity
feature:1,
feature:2
...
Functionality associated with a specific feature or user journey. Typically contains UI components and ViewModels which read data from other modules.
Examples include:
  • feature:movie_details Movie details provide comprehensive information about a film, including its title, release date, cast, and plot summary.
MovieDetailsScreen
MovieDetailsViewModel
core:data Fetching app data from multiple sources and sends it to the UI through the core:domain module. MovieRepository
core:designsystem Design system which includes Core UI components (many of which are customized Material 3 components), app theme and icons. MovieButton MovieTextButton MovieAppTheme
core:ui Composite UI components and resources used by feature modules. Unlike the designsystem module, it is dependent on the data layer since it renders models. MovieItem
core:common Common classes shared between modules. UiText
Response
core:network Making network requests and handling responses from a remote data source. MovieApi MovieRemoteDataSource
core:datastore Storing persistent data using DataStore. MovieAppPreferenceDataSource
core:database Local database storage using Room. WatchListDatabase
Dao classes
core:model Model classes used throughout the app. Movie
MovieDetail
WatchList
core:domain It houses use cases. It serves as a bridge between the data layer's repositories and the UI. GetMovieTrailersUseCase GetMovieDetailsUseCase
core:navigation Contains navigation routes. MainDestinations HomeSections
core:authentication Manages user identity verification and access control. GoogleAuthClient FirebaseAuthClient

Architecture ๐Ÿ—

The app uses MVVM [Model-View-ViewModel] architecture to have a unidirectional flow of data, separation of concern, testability, and a lot more.

mvvm

API ๐Ÿ“ฆ

TMDB Movie API

Installation ๐Ÿ—

  • Generate a new TMDB Api key from here and generate a new Gemini Api key from here.
  • Open the local.properties. Define API key.
  • TMDB API KEY -> API_KEY="YOUR_API_KEY", Gemini API KEY -> GEMINI_API_KEY="YOUR_API_KEY"
  • Create a firebase project.
  • Enable firebase auth, storage and firestore.
  • Add google.services.json file to project.

movieapp's People

Contributors

ahmetocak avatar

Stargazers

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