Journal3

There’s barely anything special about the features that Journal3 is offering, it’s literally yet another journaling application.

What is special about it though (or at least what I think is special about it) is that at the same time it’s also a thought experiment; an avenue to explore the what-ifs.

What if there’s a way to code an Android application without any architecture? Relying instead on the good ol’ software engineering patterns and object-oriented principles?

What if there’s a way to bring the power and flexibility of declarative programming to the domain?

What if we treat objects with respect instead of merely thinking of them as dumb containers of data?

Structure

I do not intend to apply any kind of architecture to Journal3 nor am I trying to enforce any patterns within it. However, there is a common structure that you would come to realize when diving deeper into the codebase.

  • UseCase as representation of business requirements/features
  • Event as the dominant way of inter-objects communication
  • Overseer as a facilitator for observability
  • Router as the primary enabler for navigation
  • Presenter as the renderer of objects (not to be confused with MVP)

One thing that I hope you’d also notice is that they are not necessarily architecture components, rather merely a byproduct of encapsulation.

Contributing

Interested in joining this journey with me? Feel free to open up issues to start a discussion on anything related to Journal3. I also accept any kind of pull-requests that would help push this journey forward.

License

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <https://www.gnu.org/licenses/>.

GitHub

View Github