Memento Calendar is a modern namedays app for Android. This repository contains the source code of Memento Calendar.
You can get started by having a look at the project's wiki. It contains some information about how to get Memento up and running on your machine and other useful info.
This repo is open for PRs and they are more than welcome! Have a look at the wiki page to see how to contribute.
Memento Calendar is my pet project/playground in which I experiment with various platform features development patterns and share my foundings with the community my foundings via blog posts and talks. Memento started off as a side project app back in 2014 and has been on development on and off. Current goal of the project is to split out the business logic of the app from the app logic so that it could potentially be ported into other platforms with the help of Kotlin.
The app is split into multiple modules. The business logic of the app can be found in the memento module. There are three other Android Modules:
This is the shared resources across all Android specific modules. It depends on memento.
This is the Android Wear module. It depends on android_common.
This is the Android mobile app module. It depends on android_common.
The Model-View-Presenter is used in order to architecture the app.
Presenters are platform agnostic and live in the memento module, in order to be able to be used across all platforms. They contain the core logic of forwarding Models to the Views. It is up for the specific platform component to create a View
Views are responsible displaying information back to the user. For each view there is one interface that lives in the memento module. A view is not to be confused with Android's View classes, Activities or Fragments.
Models contain the minimum amount of information needed to render the information on the screen.
I did a talk in the GDG Android Athens about the structure of Memento Calendar. The talk is in Greek, but the slides contain more information about the structure (see the slides).
MIT License Copyright (c) 2016 Alex Styl Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.