This is a simple note-taking app for creating, editing and saving notes. You are expected to complete the application using MainActivity
and ChangeNoteActivity
with RecyclerView
.
Implement or rewrite the following functionalities:
- Each item shows a
note title
inRecyclerView
. - Recently saved notes are added to the end of
RecyclerView
. welcome_fragment
withwelcome_message
andCreateNoteButton()
are displayed if there aren’t any other notes visible.- Clicking on the
list item
triggersChangeNoteActivity
with data from the selected item. CreateNoteButton
adds a new note to the list and startsChangeNoteActivity
with the recently added item.- The app returns
field_not_be_empty_error
if a fieldTitle
is empty. - Clicking on the
SaveButton
saves the note, adds it to the list and returns to theMainActivity
.
- String constants should be taken in
string.xml
Please be careful when editing build.gradle
in your project. This task as it is doesn’t require any changes to it. It is generally ok to add new dependencies but changing or removing existing dependencies or configuration can cause the project and verification tests to not function in the expected way and give a unreliable score.
- domain: Business rules and interfaces on how to interact with services and repositories.
- presentation: Logic that connects the business rules with the UI. Manipulation of data for view.
- data: Implementations of services and repositories.
As alternative to MVP, MVVM takes advantage of the reactive programming to decrease the coupling between the presentation and the business layer. In that case the same viewModel could be used in many screens. Check this presentation I´ve made about it some time ago: MVVM - Presentation
Yes, thats why that architecture was chosen in the first place. But given the time I had to make the whole project, I´ve made one test for view model. The other classes like, repository, usecase, are pretty easy to test because they have only the logic they need to handle(separation of concerns)
- Add dependency injection
- Test other classes, like repository, usecase.
- Add ci, cd
- Add code checkstyle with detekt
- Add kotlin kts to build system, and configure all dependencies o a Dependency.kt file for