Skip to content

Tinder clone made with Clean Architecture, MVVM, Jetpack Compose and Firebase.

License

Notifications You must be signed in to change notification settings

alejandro-piguave/TinderCloneCompose

Repository files navigation

TinderCloneCompose

Tinder clone application written with Jetpack Compose and Firebase, using Clean Architecture and MVVM with Kotlin coroutines, flows and dependency injection with Koin.

Notes:

  • The file "google-services.json" inside the "app" directory that is required for the project to work is missing. You will need to connect it to your own Firebase project.
  • However, you can test the application with mocked data selecting the "mock" build variant.

Disclaimer: All the images used for testing purposes are taken from thispersondoesnotexist.com

Login and Create Profile

Only Google Sign in is allowed. Either of these two actions should be performed:

  • If the user has an account: Click on the "Sign in with Google" button and enter valid credentials. If the login is sucessful and the account exists, the user will be redirected to the home page, otherwise, an error dialog will apear.
  • If the user doesn't has an account: Click on the "Create a new account button" to navigate to the "Create Profile" screen.

In the Create Profile screen the user will be required to complete the following actions:

  • Add at least two profile pictures. These can be obtained through the phone's photo library or the device camera. The necessary permissions are requested accordingly.
  • Provide a user name.
  • Provide a birth date. This will be used to calculate their age.
  • Provide a gender (in order to simplify profile fetching only two options are available).
  • Provide a preference: their own gender, the opposite gender or both.

A bio up to 500 characters is optional. The remaining amount of characters are shown as the user is typing.

Once the information has been filled in and the user clicks on the "Sign Up with Google button", if the user didn't exist before and the creation of the account was successful, the user will be redirected to the home page, otherwise an error dialog will appear.

Home screen

Here the user will be able to browse through profiles and swipe left or right on them in a Tinder-like fashion. Both swipe and button click to perform these actions are supported. If a user likes a user that has liked them before, a match will be created. Once a profile has been liked or disliked it will not be shown again to that user. From here the user can access to:

  • The Edit Profile screen
  • The Messages Screen

Edit Profile screen

In this screen the user can modify the same fields as in the "create profile" screen except for the name and birth date. Their design is almost identical.

Messages screen

Here the user will be able to see his matches and access the corresponding Chat screen to send them messages.

Chat Screen

Here the user will be able to send messages to his matches and they will be updated in real time using Firebase snaphot listeners.