The MVP "Model View Presenter" pattern allows separate the presentation layer from the logic, so that everything about how the interface works is separated from how we represent it on screen. Ideally the MVP pattern would achieve that same logic might have completely different and interchangeable views.
In this project, we have done Firebase Authentication using Email & Password and I have been used MVP architecture to check the input validation, this is a demo project written in kotlin. Add your google-services.json in the /src directory brfore build.