M4Engine MVP Roadmap

Player records

Objects that handle Player records:

Group records

Objects that handle Group records.

Group has a parent group relationship and can be organized into a tree structure.

Top level Group uses the uuid of the Org as parent_uuid.

Group has a boolean flag "exclusive", which means the Player can be in 1 and only 1 "exclusive" group.

Transferring a Player into an exclusive Group will remove them from the exclusive Group they are in currently.

Player can be in multiple non-exclusive Groups.

Role are designed on the Group and employed in the Membership.

Role can indicate leadership, which grants access to management tool within the Group.

Role can also indicate singular which only allows one Player to hold said Role at a time within the Group.

User records

The User context handles the login and subscription related behaviours.

PlayerOrg maps the logged into user to a Player record within an Org.

A player (the actual person, not the object) will have a single User object, but can have Player objects in multiple Org, but only one Player per Org.

Organization records

The Org represents the Player managed unit, and is associated with a Domain hostname.

Traffic on the specific Domain for the Org will restrict the access to records related to that Org.

The organization context is what drives the multitenancy for the system.

Incoming requests are on a specific Domain hostname which maps to a specific Org.

apple.m4engine.com would be a different Org from orange.m4engine.com and would show only the records relevant to the mapped Org.

Achievement records

Tracking player achievements on various metrics defined by the Group leaders and owner of the Org.

The Player detail page will have a section displaying Achievement Rewards.

Key

Keys can be associated with a Group and updated to track Player advancement on a specific topic.

For example:

Basically whatever metric the Group wants.

Entry

The Entry record is where data is logged and related to a Key, on a date.

The intention here is the Group leadership would create these Entry records after an operation.

Rule

Achievement Rule is where the "Reward" system is designed.

A Rule consists of a Key and a threshold value. When the Entry values for a Key meet or exceed the threshold value, the Progression reward is "unlocked" and the Player record is updated to show this.

Operation records

Operation scheduling, planning and documentation.

Player registration for Operations on the Calendar (RSVP).

Billeting roles for the Operation from the pool of Players who register.

Tracking Attendance after the fact for the Players who do attend.

Attendance data will also be available to Achievement keys for defining thresholds.

Operation and Calendar systems are WIP currently and will be expanded upon in the future.

Calendar component only really exists in the flask web application layer.

Dashboard

On login, present status reports relevant to the user.

All Users:

Group leaders:

Subscribers:

Rank Progression / Promotion

Definable criteria for promotions.

-- We are Here --

Document management

Markdown based document management. Document can be associated with Group, or Course, or Help pages.

Document objects are editable markdown and generate the HTML when saved or updated.

Operations Billeting tool

Map RSVP players to definable roles in the operation.

Different from Roles in Groups which persist over time. Billeting is specific to the Operation. For example, allocating infantry roles within the squad or section, or allocating specific aircraft to pilots based on what the operation requires.

Ticket system

Definable workflow tickets for handling Player requests via documented process.

For example:

A "Transfer Request" ticket would have several steps to be confirmed.

Each step would log the confirmation with a timestamp and reference to the Player leader pushing the button, similar to how the MembershipHistory records the Player common_name at the time of its creation.

Discord Integration

Discord bot capable of executing management commands.

Behaviour for most systems is defined in the engine code and not the site, so discord /commands can be created for the majority of management interactions.

Some things like structuring the Roster will still need a more rich interface provided on the site.

xs
sm
md
lg
xl
xxl