M4Engine MVP Roadmap
Player records
Objects that handle Player records:
- Player
- Rank
- RankSet
- Award
- Course
- Commendation
- Reprimand
- Qualification
- Leave of Absence
Group records
- Group
- Role
- Membership
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
- User
- PlayerOrg
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.
- Org
- Settings
- Domain
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
- Key
- Entry
- Rule
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:
Operationattendance- An aircraft or vehicle employed by a
Playerin an Operation - Tank to Tank kills
- Air to Air kills
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
- RSVP
- Attendance
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:
- Upcoming events
Group leaders:
- Attendance / lack of attendance of members
- Members ready for promotion or near promotion
- Tickets / Ticket status (depends on ticket system)
Subscribers:
- Status of subscription
Rank Progression / Promotion
Definable criteria for promotions.
- Time in Service
- Time in Grade
- Number of Ops attended
- Qualification in Course(s)
Document management
- Document
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.
Discord Integration (underway)
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.
-- We are Here --
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.
- Approval from current Group leadership
- Approval from target Group leadership
- Waiting period to expire
- All criteria met, clear to execute the Transfer
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.