SpellNote

Android Java app for spell-checking and note-taking

View the Project on GitHub MartinXPN/SpellNote

SpellNote

SpellNote is an android application designed for creating texts, taking notes, editing and correcting essays, etc. It supports spell-checking in offline mode. The app is designed for multiple languages. Currently English, Russian and Armenian are supported. The number of languages will grow in the near future.

SpellNote is the updated version of my first android project ProCorrector. After publishing several updates of ProCorrector I realised that the code was written so terribly that it was almost impossible to maintain and decided to write everything from scratch. As PlayStore doesn’t allow changes in packagename I had to release SpellNote as a separate app because the packagename of Procorrector didn’t match with this project.

Structure

First thing that was missing in ProCorrector was a concrete scructure of the project that would allow easy navigation and a more maintainable code. Some android projects use type-based structure having packages like activities, fragments, etc… However I think that this kind of structure gets messy quite easy when the number of fragmetns or activities become large.

SpellNote uses something very similar to Clean Architecture pattern.

app
|
|---> models   ->   EntityClasses
|---> services ---> one service-package for each entity
|---> ui       ---> MVVM
|---> util     -> UtilityClasses

Design Pattern - MVVM

As android is currently supporting data-binding, MVVM paradigm becomes very appealing while developing android apps. MVVM = (Model + View + ViewModel).

Concurrency - RxJava

For a good and easy support for threading we’ve used RxJava/RxAndroid. Any part of code that has something to do with concurrency is using RxJava. For making code cleaner and more understandable we’ve used Java 8 (with its support for lambda expressions, etc).

Libraries & Tools

This project makes use of several libraries and tools that make code much more readable and a lot of things easier to implement. Here are several of them.