🎯 Einsen is a prioritization app that uses Eisenhower matrix technique as workflow to prioritize a list of tasks & built to Demonstrate use of Jetpack Compose with Modern Android Architecture Components & MVVM Architecture.

Last update: May 15, 2022

GitHub Cards Preview

Build (Android) GitHub license ktlint

GitHub stars GitHub stars GitHub stars GitHub follow Twitter Follow

🎯 Einsen

Einsen is a prioritization app that uses Eisenhower matrix technique as workflow to prioritize a list of tasks & built to Demonstrate use of Jetpack Compose with Modern Android Architecture Components & MVVM Architecture.

Try latest Einsen app apk from below πŸ‘‡

Einsen


🎨 UI Design

Click to View Einsen app Design from below πŸ‘‡

Einsen Figma Design Einsen FigJam Design


🌞 Day Mode

Dashboard All Tasks Task Details
Add Task Emoji Empty State

🌚 We Support Dark Mode Too

Dashboard All Tasks Task Details
Add Task Emoji Empty State

πŸ›  Built With

  • Kotlin - First class and official programming language for Android development.
  • Jetpack Compose - Jetpack Compose is Android’s modern toolkit for building native UI.
  • Coroutines - A coroutine is a concurrency design pattern that you can use on Android to simplify code that executes asynchronously.
  • Flow - A flow is an asynchronous version of a Sequence, a type of collection whose values are lazily produced.
  • Jetpack DataStore - Jetpack DataStore is a data storage solution that allows you to store key-value pairs or typed objects with protocol buffers. DataStore uses Kotlin coroutines and Flow to store data asynchronously, consistently, and transactionally.
  • Android Architecture Components - Collection of libraries that help you design robust, testable, and maintainable apps.
    • Stateflow - StateFlow is a state-holder observable flow that emits the current and new state updates to its collectors.
    • Flow - A flow is an asynchronous version of a Sequence, a type of collection whose values are lazily produced.
    • ViewModel - Stores UI-related data that isn"t destroyed on UI changes.
    • Jetpack Compose Navigation - The Navigation component provides support for Jetpack Compose applications.
    • DataStore - Jetpack DataStore is a data storage solution that allows you to store key-value pairs or typed objects with protocol buffers. DataStore uses Kotlin coroutines and Flow to store data asynchronously, consistently, and transactionally.
  • Material Components for Android
    • Modular and customizable Material Design UI components for Android.
  • Accompanist
    • A collection of extension libraries for Jetpack Compose.
  • Figma - Figma is a vector graphics editor and prototyping tool which is primarily web-based.

πŸ“¦ Package Structure

dev.spikeysanju.einsen
β”œβ”€β”€ app                   # Application class
β”œβ”€β”€ components            # All resuable components for this app
β”œβ”€β”€ data                  # For data handling
β”‚   β”œβ”€β”€ local               # Local Persistence Database. Room (SQLite) database
β”‚   β”‚   β”œβ”€β”€ Dao               # Data Access Object for Room
β”‚   β”‚   └── Database          # Database Instance
β”‚   └── datastore
β”‚       └── ThemePref         # Datastore Theme Preference 
β”œβ”€β”€ di                        # Hilt DI Modules
β”œβ”€β”€ model                     # Model class for [Task] & [Emoji]
β”œβ”€β”€ navigation                # For navigation handling
β”‚   β”œβ”€β”€ Routes                # All unique navigation routes of this app
β”‚   └── NavGraph              # Single source for Navigation Routes of this app
β”œβ”€β”€ repository                # Used to handle all data operations
β”œβ”€β”€ ui.theme                  # Theme setup for this app
β”œβ”€β”€ utils                     # Extension functions
β”œβ”€β”€ view                      # All composables screens root folder
β”‚   β”œβ”€β”€ add                   # Add Task Screen
β”‚   β”œβ”€β”€ edit_task             # Edit Task Screen
β”‚   β”œβ”€β”€ dashboard             # Dashboard Screen
β”‚   β”œβ”€β”€ all_task              # All Task Screen
β”‚   β”œβ”€β”€ task_details          # Task Details Screen
β”‚   β”œβ”€β”€ emoji                 # Choose Emoji Screen
β”‚   β”œβ”€β”€ webview               # WebView Screen
β”‚   β”œβ”€β”€ animation             # Animation Placeholders for State handling(Loading, Error, Empty etc.)
β”‚   β”œβ”€β”€ about                 # About Screen
β”‚   └── viewmodel             # ViewModel 
└── MainActivity.kt           # MainActivity 


πŸ—Ό Architecture

This app uses MVVM (Model View View-Model) architecture.

🧰 Build-tool

You need to have Android Studio Beta 3 (BumbleBee) or above to build this project.

Beta-studio


πŸ’¬ Frequently Asked Questions

When was project Einsen started?

🎯 I started working on this idea 6 months before founding Einsen app (April 2021). The idea was exploring mental models + productivity tips to achieve your goals. I tried to test the idea with Productivity & Time Management Trackers . So I built initial MVP..

Where can I find the research process for Einsen app?

πŸ“ The biggest lesson I learned while designing this was that, I need to be focused & working relentlessly on the same project, to get the right flow of thought & complete it. Each iteration led to more insights on improving the design, solving problems for users. You can find the link for πŸ“ Design Process here & 🎨 Figma Designs here

What is the future goals of this project Einsen?

πŸ¦„ For each week I will be implementing some new cool features for this application. Here are some of the amazing features you will come to expect from this platform πŸ‘‡

  • Due Date for each task
  • Recurring task
  • Pomodoro timer for each task
  • Task Template as per user preference
  • Calendar based task management
  • Project management
  • Statistics for completed task
  • Introducing new mental model templates like Eisenhower

🀝 Contribute

If you want to contribute to this app, you're always welcome! See Contributing Guidelines.


πŸ“© Contact

I know that first and foremost you are looking for a tool to solve your problems, but if you enjoy it that much, why not tell us? We would love to hear from you πŸ˜‰

DM me at πŸ‘‡


❀️ Show your Support

I love it when people use my tool and we’d love to make it even better. If you like this tool and want to support me in developing more free tools for you, I’d really appreciate a donation. Feel free to buy me a cup of coffee πŸ˜„ . Thanks!

Buy Me A Coffee Patron Link PayPal Link

πŸ€— Credits


πŸ”– License

    Apache 2.0 License


    Copyright 2021 Spikey sanju

    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.

GitHub

https://github.com/Spikeysanju/Einsen
Comments
  • 1. Auto fill Urgency and Importance

    When we add task from specific section, urgency and importance should be pre filled based on that section.

    Like : If i click add task from Do it now section then urgency and importance should be 5/5, respectively.

    Reviewed by yogeshpaliyal at 2021-10-21 02:48
  • 2. Emoji chooser bottom sheet search option

    Its hard to select task related emoji Currently user has to scroll through all emojis and find the related one.

    Search input field in AllEmojiScreen In the search field user will enter the search term, which can queried against description or aliases from emoji list. This way user can select emojis related to task.

    Reviewed by SachinKasaraddi at 2021-10-19 00:08
  • 3. cannot import properties of EinsenColors.kt

    Einsen_issue Describe the bug unable to call properties of EinsenColors.kt (like EinsenColors.white) in other files. i can call the EinsenColor file but not its properties

    Screenshots Einsen_issue

    ** Smartphone Details (please complete the following information):** none

    Additional context none

    Reviewed by Sagar19RaoRane at 2021-10-24 12:46
  • 4. Autofill urgency and importance by priority

    Urgency and importance will be pre-filled based on add tasks are performed from which screen.

    This commit changes included.

    Upgraded AGP to 7.1.0-beta01 because required in latest android studio Bumblebee.

    Lint attribute change isCheckReleaseBuild to checkReleaseBuilds & isAbortOnError to abortOnError, because not found

    fix #81

    Reviewed by yogeshpaliyal at 2021-10-23 06:42
  • 5. Task added to inappropriate Section

    Describe the bug I've added a task with urgency 2 and importance 0, but it it showing in Do it Now

    Screenshots https://user-images.githubusercontent.com/9381846/138202306-de21a1f1-b3d4-4f93-8b81-836cae8cb377.mp4

    Smartphone Details:

    • Mobile Mi note 10 Pro Max (Pixel Experience)
    • Version : Android 11
    Reviewed by yogeshpaliyal at 2021-10-21 02:44
  • 6. Wrong Urgency and Importance values

    Describe the bug Urgency and Importance fields have incorrect values assigned to them while creating and editing tasks. It is less than it should be.

    To Reproduce Steps to reproduce the behavior:

    1. Create new Task and fill in "Title", "Description" and "Category" fields.
    2. Set "Urgency" and "Importance" to 5.
    3. Save Task.
    4. Go to Task edit mode.
    5. Set "Urgency" and "Importance" to 0.

    Expected behavior Urgency and Importance to be equal to 5 before editing; equal to 0 after editing.

    Screenshots

    Β 

    Smartphone Details

    • Device: Samsung Galaxy S8
    • OS: Android 9
    • App: v1.0.0-alpha01(1)

    Additional context All Urgency and Importance values are less then should be:

    | Expected value | Real value | | --- | --- | | 0 | 0.0 or 1.528324E-9/5 | | 1 | 0.8 | | 2 | 1.6 | | 3 | 2.4 | | 4 | 3.2 | | 5 | 4.0 |

    Reviewed by tochanenko at 2021-10-18 12:27
  • 7. Feature/reminder

    Add Notification Reminder 1 hour prior to task due date time

    • Change parent activity of MainActivity to AppComponentActivity from ComponentActivity to get supportFragmentManager to show Date Picker and Time Picker
    Reviewed by yogeshpaliyal at 2021-11-20 19:11
  • 8. Always provide a Modifier Parameter

    Is your feature request related to a problem? Please describe. According to latest blog from Chris Banes. It's better to always provide a Modifier to Composable.

    Link to blog - https://chris.banes.dev/always-provide-a-modifier/

    Describe the solution you'd like Any composable you write which emits layout (even a simple Box), should have a modifier: Modifier parameter, which is then used in the layout.

    Sample code from the blog

    /**
     * This now has a modifier parameter, allowing callers
     * to customize the layout, behavior and more!
     */
    @Composable
    private fun HeaderText(
        text: String,
        modifier: Modifier = Modifier,
    ) {
        Text(
            modifier = modifier,
            // ...
        )
    }
    
    
    Reviewed by Spikeysanju at 2021-10-23 05:51
  • 9. "All task" should be "All tasks"

    Describe the bug Just incorrect grammar

    To Reproduce Steps to reproduce the behavior: Open app, says, "All task"

    Expected behavior Open app, says, "All tasks"

    Screenshots Github home page.

    Reviewed by spyderrsh at 2021-10-18 15:24
  • 10. Broken "Contributing Guidelines" link in README.md

    404: Page not found for redirect to https://github.com/Spikeysanju/Einsen/blob/master/CONTRIBUTION.md

    Expected redirect: https://github.com/Spikeysanju/Einsen/blob/master/CONTRIBUTING.md

    Reviewed by tittojose at 2021-10-18 12:51
  • 11. Update Navigation Transition animation

    The goal of this feature request is to improve the onscreen navigation animation of this app. Currently we're using default animation which looks really odd.

    Reviewed by Spikeysanju at 2021-09-13 20:44
  • 12. Share as Image

    Is your feature request related to a problem? Please describe. Sometimes it's better to have an option to share the Note/Todo item as an image. Currently we do have Share as text. Add an another option to Share task as Image.

    Describe the solution you'd like We're gonna use this awesome library to capture bitmap on Jetpack Compose app.

    Reviewed by Spikeysanju at 2022-01-25 20:33
  • 13. Add Einsen Widgets

    Is your feature request related to a problem? Please describe. The goal of this feature request is to add Widgets to the Einsen app.

    Describe the solution you'd like By using Glance we can create widgets in Jetpack Compose style.

    • [ ] Dashboard widget (Same as current dashboard but with colors and number of task available inside each card)
    • [ ] Task widget (Urgent, Important, Delegate & Dump it as separate widget)

    Additional context Currently I'm working on the designs for the Einsen widgets. Will add more details once I complete it.

    Reviewed by Spikeysanju at 2021-12-19 22:30
  • 14. Workspaces & Projects

    ⭐️ Is your feature request related to a problem? Please describe. The goal of this issue is to have Workspaces & Projects to add all task related to the project.

    πŸ’¬ Describe the solution you'd like For instance -> Instead of showing the dashboard view for all task. I would like to have Workspace & projects.

    ⁉️ Why we're doing this?

    • It will be really helpful to track the progress of overall project.
    • User can focus on particular project instead of wasting time by seeing overall dashboard.
    • In future user can able to see the statistics for the overall project, completion rate, keep track of each deliverables etc.

    πŸ„πŸ»β€β™‚οΈ Flow

    1. πŸ—³ User creates a new workspace. (Ex -> Side Projects)
    2. 🎯 User adds a new project inside the workspace. (Ex -> Einsen App)
    3. βœ… Once project is created -> User will add all the task related to that project. (Ex -> Finish Design, Code new feature, Review Pull Request etc.)
    4. πŸ”ƒ User can easily able to switch between multiple workspace. (Ex -> Slack)

    🎨 Checkout the below design πŸ‘‡

    | All Projects | All Projects (Without tags) | Workspace Switch Dropdown | Workspace Switch Dropdown (without Emoji) | |---|---|---|---| | image | image | image | image |

    πŸ“ Additional context

    Here's the db schema for this new Workspaces & Project Features

    einsen-db-schema

    Reviewed by Spikeysanju at 2021-11-14 21:56
  • 15. F-Droid

    Is your feature request related to a problem? Please describe. A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

    I'm always frustrated when I open F-Droid and don't see Einsen there.

    Describe the solution you'd like A clear and concise description of what you want to happen.

    Get Einsen included in F-Droid! Submit the app!

    Describe alternatives you've considered A clear and concise description of any alternative solutions or features you've considered.

    There is no alternative! This is the only known way to install apps. Everyone saying there are other ways lies.

    Additional context Add any other context or screenshots about the feature request here.

    β†’ https://f-droid.org/en/contribute/

    Reviewed by DC7IA at 2021-10-31 00:48
  • 16. Add Pomodoro Timer for Each Task

    Is your feature request related to a problem? Please describe. The goal of this issue is to add Pomodoro timer for each task. So that it will be easier for user to complete the multiple list of task with regular interval.

    Describe the solution you'd like So my approach would be like showing the Pomodoro timer on the first visible task(Task with upcoming due date). So that we can save some space on all task screen.

    Things to add πŸ‘‡

    1. Pomodoro Timer with reset button
    2. Delete, Complete& Move to Top Task button
    3. Show overall time to complete the All task.

    Additional context Below I'm attaching reference for the Einsen with Pomodoro Timer Design

    | Minimal | Detailed | |--- |--- | | image | image |

    I personally like the first version (Minimal). It looks more prominent & it makes sense. But my only concern is will user know how to complete the task especially one below the top big card?.

    To fix this above issue we can implement swipe Left or Right to Complete or Delete the task?

    Reviewed by Spikeysanju at 2021-10-20 23:46
Full Management is an application that helps you manage your tasks effectively. built with the latest tachs like Compose UI, Jetpack libraries, and MVVM design pattern.
Full Management is an application that helps you manage your tasks effectively. built with the latest tachs like Compose UI, Jetpack libraries, and MVVM design pattern.

Full Management is an application that helps you manage your tasks effectively. built with the latest tachs like Compose UI, Jetpack libraries, and MVVM design pattern.

Feb 20, 2022
Simple Recipe/Dish list Android App that uses Compose, MVVM & Hilt.

Simple Recipe/Dish list Android App that uses Compose, MVVM & Hilt. This is the codebase that I am working on during my Youtube Live Stream (Link below...)

Apr 9, 2022
JeTaxi is built on Clean Architecture-MVVM with Kotlin and follows modern android development trends.
 JeTaxi is built on Clean Architecture-MVVM with Kotlin and follows modern android development trends.

JeTaxi is built on Clean Architecture-MVVM with Kotlin and follows modern android development trends. Also, It uses some of Jetpack and popular libraries. These are Kotlin Coroutine-Flow, kotlinx.serialization, Hilt, Compose, Accompanist, Retrofit2, OkHttp3, Chucker, MockWebServer, Truth.

May 19, 2022
Android MVVM Base Architecture for Enterprise Mobile Application using Architectural Components
Android MVVM Base Architecture for Enterprise Mobile Application using Architectural Components

Android MVVM Base Architecture for Enterprise Mobile Application using Architectural Components Highlights MVVM Architectural pattern Offline Support

Apr 23, 2022
LukohSplash is based on Android latest architectural components,Jetpack, and follows MVVM design pattern.
LukohSplash is based on Android latest architectural components,Jetpack, and follows MVVM design pattern.

?? The LukohSplash by open-source contributor, Lukoh. LukohSplash LukohSplash is based on Android latest architectural components,Jetpack, and follows

May 3, 2022
A sample project in Kotlin to demonstrate AndroidX, MVVM, Coroutines, Hilt, Room, Data Binding, View Binding, Retrofit, Moshi, Leak Canary and Repository pattern.

This repository contains a sample project in Kotlin to demonstrate AndroidX, MVVM, Coroutines, Hilt, Room, Data Binding, View Binding, Retrofit, Moshi, Leak Canary and Repository pattern

May 9, 2022
MVVM RECIPE ANDROID APP Is an app where I show how to use MVVM, retrofit, dagger hilt, coroutine, liveData, Kotlin, navigation component, and so on...
MVVM RECIPE ANDROID APP Is an app where I show how to use MVVM, retrofit, dagger hilt, coroutine, liveData, Kotlin, navigation component, and so on...

MVVM RECIPE ANDROID APP Is an app where I show how to use MVVM, retrofit, dagger hilt, coroutine, liveData, kotlin, navigation component, and so on...

Apr 4, 2022
GraphQLTrial is a demo application based on modern Android application tech-stacks and MVVM architecture.

GraphQLTrial is a demo application based on modern Android application tech-stacks and MVVM architecture. App fetching data from the netw

Sep 26, 2021
A small demo application based on modern Android application technology stacks and MVVM architecture
A small demo application based on modern Android application technology stacks and MVVM architecture

Pokedex Pokedex es una pequeΓ±a aplicaciΓ³n de demostraciΓ³n basada en modernas pil

Dec 17, 2021
Android MVVM with Single Activity sample app that uses kotlin coroutines flow
Android MVVM with Single Activity sample app that uses kotlin coroutines flow

Android MVVM with Single Activity sample app that uses kotlin coroutines flow. This is a sample app that uses kotlin coroutines flow , stateflow. This

Apr 8, 2022
πŸ“’Note taking app, MVVM with Google Architectural components Room, LiveData and ViewModel written in Kotlin, androidx libraries
πŸ“’Note taking app, MVVM with Google Architectural components Room, LiveData and ViewModel written in Kotlin, androidx libraries

?? MyNotes Note taking Android App using androidx libraries, MVVM with Google Architectural components Room, LiveData and ViewModel. Written in Kotlin

May 1, 2022
Chat App MVVM + Clean ArchitectureChat App MVVM + Clean Architecture
Chat App MVVM + Clean ArchitectureChat App MVVM + Clean Architecture

Chat App MVVM + Clean Architecture This Android application built using MVVM + Clean Architecture architecture approach and is written 100% in Kotlin.

Oct 14, 2021
An android app built using Kotlin following Multi-Module Clean Architecture MVVM
An android app built using Kotlin following Multi-Module Clean Architecture MVVM

RickyandMorty An android app built using Kotlin that consumes RickyadMorty API to display characters.It has been built following Clean Architecture Pr

Feb 3, 2022
Oasis is a simple gym progress-tracking app built on MVVM architecture.
Oasis is a simple gym progress-tracking app built on MVVM architecture.

Oasis About Oasis is a simple gym progress-tracking app built on MVVM architecture. Built with Kotlin Coroutines Flow Firebase Auth Firebase Firestore

Feb 7, 2022
A simple app that consumes The GitHub APIs to display github users. The aim was to learn about different jetpack libraries, built with MVVM pattern.
A simple app that consumes The GitHub APIs to display github users. The aim was to learn about different jetpack libraries, built with MVVM pattern.

A simple app that consumes The GitHub APIs to display github users. The aim was to learn about different jetpack libraries, built with MVVM pattern.

Apr 15, 2022
Nucleus is an Android library, which utilizes the Model-View-Presenter pattern to properly connect background tasks with visual parts of an application.

Nucleus Deprecation notice Nucleus is not under develpment anymore. It turns out that Redux architecture scales way better than MVP/MVI/MVVM/MVxxx and

May 4, 2022
Shopping List App Using MVVM
Shopping List App Using MVVM

Shopping_List-MVVM Shopping List App to add Shopping Items APK Link Here About The Project Uses Android Room Database to store Shopping Items Uses MVV

Dec 11, 2021
πŸ“ A demo todo/notes app which demonstrates the use of MVVM architecture, Navigation Component Library, Room Database, LiveData, Coroutines
πŸ“ A demo todo/notes app which demonstrates the use of MVVM architecture, Navigation Component Library, Room Database, LiveData, Coroutines

?? MyNotes A demo notes/todo app which demonstrates the use of MVVM architecture, Navigation Component Library, Room Database, LiveData, Coroutines et

May 9, 2022
Retrieve Data from an API using MVVM Clean Architecture and Jetpack Compose
Retrieve Data from an API using MVVM Clean Architecture and Jetpack Compose

MVVM Clean Architecture Demo Retrieve Data from an API using MVVM Clean Architecture and Jetpack Compose. It simply shows a list of movies fetched fro

Mar 27, 2022