-
Notifications
You must be signed in to change notification settings - Fork 8
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Zentasktic Builder Journey #64
Comments
Zentasktic grant consists of 3 back-end projects, with 6 UIs, 2 for each backend, one web, one mobile. As of April 10th, the first backend app, zentaskitc core is implemented here. ZenTasktic CoreA basic, minimalisitc Asess-Decide-Do implementations as This implementation will expose all the basic features of the framework: tasks & projects with complete workflows. Ideally, this should offer all the necessary building blocks for any other custom implementation. Object Definitions and Default ValuesAs an unopinionated ADD workflow,
Realms act like containers for tasks & projects during their journey from Assess to Do, via Decide. Each realm has a certain restrictions, e.g. a task's Body can only be edited in Assess, a Context, Due date and Alert can only be added in Decide, etc. If someone observes different realms, there is support for adding and removing arbitrary Realms. note: the Ids between 1 and 4 are reserved for: 1-Assess, 2-Decide, 3-Do, 4-Collection. Trying to add or remove such a Realm will raise an error. Realm data definition:
A task is the minimal data structure in ZenTasktic, with the following definition:
Projects are unopinionated collections of Tasks. A Task in a Project can be in any Realm, but the restrictions are propagated upwards to the Project: e.g. if a Task is marked as 'done' in the Do realm (namely changing its RealmId property to "1", Assess, or "4" Collection), and the rest of the tasks are not, the Project cannot be moved back to Decide or Asses, all Tasks must have consisted RealmId properties. A Task can be arbitrarily added to, removed from and moved to another Project. Project data definition:
Contexts act as tags, grouping together Tasks and Project, e.g. "Backend", "Frontend", "Marketing". Contexts have no defaults and can be added or removed arbitrarily. Context data definition:
Collections are intended as an agnostic storage for Tasks & Projects which are either not ready to be Assessed, or they have been already marked as done, and, for whatever reason, they need to be kept in the system. There is a special Realm Id for Collections, "4", although technically they are not part of the Assess-Decide-Do workflow. Collection data definition:
ObjectPaths are minimalistic representations of the journey taken by a Task or a Project in the Assess-Decide-Do workflow. By recording their movement between various Realms, one can extract their ObjectPath data definition:
note: the core implementation offers the basic adding and retrieving functionality, but it's up to the client realm using the Example Workflow
All tests are in the |
ZenTasktic packageDuring implementation, it became obvious that we need to move storage outside the package (packages deployed under
ZenTasktic Gno realmsThe 3 realms deployed are implemeting the same type of workflow, but with different data types. The basic one, ZenTasktic Core, has just the basic data types defined in the ZenTasktic package. The ZenTasktic Project realm is multi-user (has Users which can be allocated to Teams) and Rewards. The ZenTasktic User realm is a barebone realm suitable for an individual tracking his work on potentially more customers. ZenTasktic ProjectThis realm has 3 more data types: Users (Actors), Teams and Points. These are hinting towards a type of task / project which can be worked on, individually, or in a team, for a certain reward. We added a Workable interface, which allows, for instance, to implement specific Tasks as WorkableTasks, and new data types, like WorkDurations (can be expressed in hours, work hours, etc). Here is a snippet from the current implementation:
The main logic is implemented using these types, so I wrote an additional wrapper on top of that, which can be invoked by an external client which needs marshalled data. Here is an implementation example: in the
in the
ZenTasktic UIThe UI can be accessed at https://gno.zentasktic.com. There is a main dashboard with links for each realm UI. Underneath there is a ZenTasktic Core Web UIZenTasktic Core UI (deployed in prod), with basic workflow:
ZenTasktic Project Web UIZenTasktic Project web UI, with extra data types for Users, Teams and Rewards. Currently in testing.
|
Hey Dragos,
For your work on the Zentasktic grant, please document your journey here. If you can start by introducing the project and regular updates.
The text was updated successfully, but these errors were encountered: