Skip to content
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

feat: p/demo/pm, basic project-management #730

Draft
wants to merge 3 commits into
base: master
Choose a base branch
from
Draft
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 54 additions & 0 deletions examples/gno.land/p/demo/pm/pm.gno
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
// On-chain project management utilities.
// This library enables efficient project management for evaluation DAOs, governance modules, community pool management, launchpads, or general transparency.
package pm

// ITask is a completion unit that is associated with IOwner and can include sub-tasks.
// It is typically utilized for issues, epics, milestones, cards, and stories.
type ITask interface {
// attributes

ID() string
Title() string
// Kind could be Issue, PR, Milestone, Epic, Story, Card, ...
Kind() stringOrEnum
State() Enum
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Status() instead of State(), if you mean something like pending, completed etc

Progress() int
IsBlocked() bool
CreatedAt() time.Time
UpdatedAt() time.Time
CompletedAt() time.Time

// relationships

Author() IOwner
Parent() IOwner
Assignees() []IOwner
Reviewers() []IOwner
Dependencies() []ITask
SubTasks() []ITask
}

// An IOwner contains ITask or other IOwner entities and can be applied to folders, repositories, teams, organizations, and users.
// It has no definitive completion status and can be archived but always serves as a container.
type IOwner interface {
// attributes

ID() string
Title() string
// Kind could be User, Organization, Team, Repo, Folders, ...
Kind() stringOrEnum

// relationships

Parent() IOwner
Children() IOwner
Tasks() []ITask
}

// ITopic tags and labels ITask and IOwner entities for grouping related topics based on arbitrary information.
// These tags may be used with weighted attributes in the future.
type ITopic interface {
ID() string
Title() string
Kind() stringOrEnum
}