A text - editor which allows you to save formatted text with different styles and images. Build with kotlin and follows MVVM, Clean architecture for data flow and single activity architecture for UI.
- Formatting supported:
- Bold
- Italics
- Underline
- Font Size
- Font-Family
- Insert Images
- Create, Update and Delete formatted notes with images.
- Dark and Light Mode support
Write, select and format that text using any formatting feature at the bottom.
- data: Contains database entity and database related classes.
- di: Contains Hilt Module.
- Domain: Contains common use cases like converting database note to a format that can be understandable to UI layer and vice-versa.
- ui: Contains UI related classes like fragment.
EditorFragment is the UI where user edits and formats their notes. It maintains a list of Range of Style in the EditorViewModel which updates whenever user enters or removes any text in the editor accordingly to remain updated with the editor spans. When user selects a text and click on the formatting options, it creates a range for that formatting according to the selection.
When user finishes editing, it creates and sends the NoteWithStyle to the domain layer which converts it to a suitable Note format which can be stored in the database. The domain layer depends on Asset Providers which helps it to convert images and fonts to a suitable Style when fetching the notes from the database.
Kotlin: As the programming language.
Jetpack Navigation : For navigation between screens.
Room : To store and manage running statistics.
Hilt : For injecting dependencies.
Data Binding and View Binding: For easy integration of data with UI.
Timber: For logging.
Gson: To parse object to json and vice-versa.