A banking application must be made that allows user registration, user login, bank information: balance, list of movements made and detail of the movement.
The problems to solve are the following: The first view is the one corresponding to the login of the application, and contains a text field for the username, a text field for the password, a login button and a register button.The challenge to meet on this screen will be the following:
- Validate user data and password
- When making a valid login, the home screen (bank account information and list of movements) should be displayed.
- When pressing the registration option, the registration screen should be displayed, which will be the beginning of the Onboarding.
The registration process must consist of the following views:
- User data: Email, password, name, last name
- Take ID photo: Take a picture of the ID.
- Success screen: Show a success message โTu cuenta ha sido creada exitosamenteโ.
- Home Screen: It will be the main screen, the one that the user accesses once he makes a correct login.
- The data collected in the Onboarding must be stored in a database that the candidate must create in Firebase.
- The candidate must also create test data in Firebase with movements to be able to perform a user login without having to create an account.
- Kotlin
- Corrutines
- Hilt
- Firebase (Storage, Auth, Cloud DataBase)
- Compose
- Data Storage Preferences
- Coil
- mockitoKotlin
- material3
- devtools-ksp
- google-services
- Clean Architecture
- Clean Code
- SOLID
- MVVM patten
- Repository pattern
- Dependency injection
To manage user login, Firebase Authentication was used with email and password.

All user picture identification are stored in Firebase Storage, and the picture url is saved in Firestorage like user data

Now to store the user data Firestore is used, having a collection users
to save the user data and another collection intended transactions
to save the movements
Users table

Transactions table


Sign In Success | Some Fiel is Wrong | User Invalid |
---|---|---|
![]() |
![]() |
![]() |

Sign Up Form Success | Sign Up Form is Wrong | User al readey Exist |
---|---|---|
![]() |
![]() |
![]() |

Home New User | Home New With Transactions |
---|---|
![]() |
![]() |


To test and see movements you can use the following credentials
email: [email protected]
password: Edgar15_
You can also create a user from scratch to test Sign Up
Also you can run the Unit Tests, recommended command:
/gradlew test
