Git Product home page Git Product logo

karmayoga's Introduction

  • ๐Ÿ‘‹ Hi, Iโ€™m @octetful, aka Sid
  • ๐Ÿ‘€ Iโ€™m interested in distributed apps, kotlin, graph databases, and DDD practices
  • ๐ŸŒฑ Iโ€™m currently learning kafka streams, and helm charts
  • ๐Ÿ’ž๏ธ Iโ€™m looking to collaborate on my pet projects Karmayoga and Karmayoga Web
  • ๐Ÿ“ซ How to reach me Twitter Follow Discord

karmayoga's People

Contributors

octetful avatar pallawisingh avatar

Stargazers

 avatar

Watchers

 avatar

Forkers

shakeeb99

karmayoga's Issues

Create a Google Calendar adapter

Problem Statement

Currently the app lacks support to integrate with Google Calendar to pull data from there.

Expected Outcomes

  • Add an adapter with support for Google Calendar integration.

Add mkdocs static site support for documentation.

Problem Statement

Currently there is no support to generate static documenation site for the project.

Expected Outcomes

  • Mkdocs configuration yaml is added to the project.
  • Mkdocs site base structure is added to the project.

Refactor code to remove ureadable redundancies.

Problem Statement

There's a bit of redundancy in the code that also doesn't read very well.

Expected Outcomes

  • Redundant method names are simplified in base model classes - TimeSlot and Schedule.
  • Redundant implementations are removed - SampleAllocator.

Create an Allocator Factory

The goal is to be able to have multiple varying implementations of the Allocator interface in the future with the user being able to select any given algorithm and even configuration. Hence a Factory for Allocator needs to be built.

Requirements

  • Given an AllocatorSpec, return an AllocatorImpl.

Create an EmptySlotFinder service

Problem Statement

Currently the domain has an Allocator that expects a sequence of TimeSlot, but lacks a mechanism to find empty time slots from a sequence Schedule or Event objects.

Expected Outcome

  • Given a sequence of Event or Schedule objects, and a valid working hours TimeSlot, this new service should be able to find any free or empty slots between these events.
  • In case no free slots are available in between the given list of Schedule or Event objects, it should return the earliest available TimeSlot after all of them.

Create a fully functional Allocator implementation

Create a full fledged implementation of the Allocator interface that would take into account Task estimate, deadline and priority and uses the 80-20 principle to allocate the tasks.

Requirements

  • Tasks with extremely low estimates should be allocated first.
  • Tasks with same estimates should be allocated based on priority such that a task with higher priority gets precedence.
  • Tasks with deadline should get highest precedence. Given two tasks, if one has a nearer deadline, it should get allocated first.

Upgrade project architecture to hexagonal design.

A hexagonal architecture design would enable us to easily evolve the project and integrate with other components.

Expected Outcomes:

  • Project has submodule core
  • Project has additional submodule for rest api.

Model Calendar Events

Problem Statement

Currently the domain model is devoid of any representation of regular calendar events which may or may not have associated tasks, for example appointments.

Expected Outcome

  • Add a construct to model task-less events.

Create in memory implementation of the Repositories.

Problem Statement

Currently the application lacks any implementation of the Repositories for Tasks or Schedules.

Expected Outcomes

  • An in-memory implementation of TaskRepository is created.
  • An in-memory implementation of ScheduleRepository is created.

Add basic application layer components

Problem Statement

Karmayoga, starting off as a library, lacks some basic application layer components such as repositories, command bus, command handlers, etc.

Expected Outcomes

  • Add repositories for basic entities.
  • Add basic CRUD commands.
  • Add a CommandBus.
  • Add CommandHandler interface.

Add a springboot adapter.

Problem Statement

Add springboot adapter for REST API support.

Expected Outcomes

  • Add a springboot adapter to expose a REST API.

Add ADR for the choice of hexagonal architecture.

Problem Statement

Currently there are no ADRs describing the hexagonal architecture choice that provides the foundation of this project.

Expected Outcomes

  • Create an ADR explaining the choice of hexagonal architecture.
  • Explain future adapter possibilities as an outcome.

Model Ownership of domain aggregates

Problem Statement

The current domain model lacks any ownership information or mechanism. In a multiuser system, a sense of ownership for all business aggregates is essential.

Expected Outcome

  • All Domain aggregates such as Task and Schedule are attributed with ownership information.
  • Future scenarios such as sharing of certain aggregates are taken into consideration in the ownership model.

Update site badges

Problem Statement

Currently the site only has the build status badge.

Expected Outcomes

  • Update build status to shields.io badge.
  • Add license badge.
  • Add code quality badge.

Create rest endpoints for resources

Problem Statement

Currently the application lacks any rest api endpoint for the defined resources.

Expected Outcomes

  • GET, POST, and DELETE endpoints are created for /tasks.
  • GET, POST, and DELETE endpoints are created for /users.
  • GET,POST, and DELETE endpoints are created for /schedules.

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.