Git Product home page Git Product logo

omaloma's Introduction

Omaloma is an Android Application.

This App manages absences and holidays in Finland.

In Finland there are quite clear rules on how to manage employees' holidays, f.e:

  • Employees earns 2 days of holidays per month during trial period and 2,5 days after trial period.
  • If in some month employee was absent for a too long time, he/she does not get any holidays for this month.
  • Usually users have summer and winter holidays.
  • Sundays and public holidays are excluded from employee's holidays.
  • Employee can take at least 6 days of holidays (including Saturday).
  • If employee plans 5 holidays the 6th day is added for the Saturday, etc.

In small companies holidays calculations could be quite messy, if there is no HR tool for that purpose. With Omaloma App employees can see any time how many holidays they have earned already, how many are planned, spend and remaining.

Planned functionality:

  • Main view shows statistics about earned-, planned-, spent and remaining holidays.
  • User can view and add new absences of different type (holidays, sick leaves etc.)
  • Application calculates how many holidays employee has earned in the current year/ month already.
  • User can check information about public holidays, additional Wikipedia information about those days.

Architecture, language, DI etc...

  • This App is written in Kotlin.
  • Has a multi-module structure.
  • MVVM architectural pattern for presentation layer.
  • Reactive pattern is implemented with Kotlin Coroutines and LiveData.
  • Dagger dependency injection.
  • ROOM DB
  • Android Jetpack's Navigation

Some of the branches contain experiments with technologies and archotecture

  • otus-hw-dagger2: Clean architecture (Data layer, Domain layer, MVVM-Presentation layer), Dagger DI

Summary of set up:

  • This app is created with AndroidStudio using the Gradle build system.
  • First download the source code.
  • In Android Studio, use "Import Project" option. Next select the app directory that you downloaded from this repository. If prompted for a gradle configuration accept the default settings.
  • Alternatively use the "gradlew build" command to build the project directly.

Repo owner: Sergei Kasianov ([email protected])

omaloma's People

Contributors

lyydikoi avatar kasserg avatar

Stargazers

Alexandr avatar Dmitry avatar  avatar  avatar Felix avatar Obito Uchiha avatar Nurseiit Tursunkulov avatar

Watchers

 avatar

omaloma's Issues

UIState

В модуле absence -> abcence_details, реализовано UIState. Стоит ли что-то улучшить или поменять? Таким образом, по крайней мере не надо подписываться на кучу разных LiveData из ViewMode.

Одно из предложений было -- разделить вьюху на отдельные UI элементы со своим стейтом и ViewModel.. Но в этом случае не совсем понятно, как эти элементы (напр.: CalendarLayout, и др. widgets для отображения данных, кнопки и др.) будут получать данные из "host fragment" (напр.: AbsencDetailsFragment) и отправлять обратно результат пользовательского ввода? Часто необходимо, чтобы изменения в одном элементе влияли на видимость или изменение данных в другом элемене.... Я попытался выделить календарь с кнопкой "добавить дату" в отдельный вью, но логика вся всё равно в его хосте.
Можно, конечно, сделать отдельный репозиторий для временного хранения общих данных и все элементы подписываются на LiveData в нём и отправляют обновления в него. Но почему бы не сделать тогда один ViewModel на всех? Буду рад услышать советы и предложения :)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.