ECTLogger

Team Management Spec Draft (Back-Burner)

Last updated: 2026-08-02

This document is a structured draft spec for a future Team Management module. It is intentionally scoped as back-burner work while core web app stability and self-hosting priorities are completed.

Related roadmap references:

1. Problem Statement

Current team operations rely on shared spreadsheets for staffing, training, and readiness tracking. This creates:

Goal: provide a secure, role-based team management experience integrated with existing ECT Logger net activity.

2. Goals and Non-Goals

Goals

Non-Goals (initial release)

3. Scope

In Scope (phaseable)

Out of Scope for now

Boundary against Public Service Event Support

PUBLIC-SERVICE-EVENTS.md covers staffing the communications positions of a marathon, bicycle ride, or sled race. It overlaps this module on hours, contact details, and rosters, so the split is fixed here and stated identically in both documents:

Events own per-event posts, shifts, sign-in and sign-out, and the hours produced by one event. Teams owns people, long-term membership, training records, and cross-event ARRL Form 2 and EMA rollups.

Practically: Events must not create a volunteers or people table — unregistered people live inline on its shift rows, and Contact.user_id links them if they later register. Events export hours for one event; Teams sums them across events and produces the form. Any new noun proposed for either module should be tested against that sentence before it is given a table.

4. Personas and Roles

5. Functional Requirements

5.1 Navigation and Team Discovery

5.2 Membership and Access Control

5.3 Identity Linking and Invitations

5.4 Net Integration

5.5 Reporting

5.6 Team Locations and Coverage Assessment

This is the Teams-dependent half of the “can hear” inter-station propagation feature. The per-net capture side of that feature (station-to-station coverage logging: the reporting dialog, the Coverage panel, and the map overlay) shipped 2026-08-02 and did not wait on Teams — see docs/CHANGELOG.md for the release entry. Its settled data model (the can_hear_reports table, the operating_position classifier on check-ins, the team_location_id upgrade path below) lives in backend/app/models.py and backend/app/routers/can_hear.py now that it has shipped; it’s no longer a separate roadmap entry. This section covers only what genuinely requires a team to exist.

Context: teams support fixed locations (shelters, EOCs, hospitals, cooling centers, staging areas). A team manager needs to know, for each supported location, which other locations and which stations that location can reliably communicate with — and where the gaps are. This is the deliverable of a Coverage Assessment exercise, a common ARES/emcomm SET drill type, and today it is produced by hand from paper notes.

Named locations

Location-to-location coverage

Manager-facing outputs

Cross-team and mutual aid

Note on personal coverage maps

A user’s own “stations I can hear from home” map is not part of this section — it’s the Profile → Coverage tab, and it already shipped alongside the rest of the per-net capture on 2026-08-02, needing only per-net reports and the home classifier. Teams does not gate it and must not duplicate it.

6. Data Model Draft

Core Entities

Candidate Fields (from WSSM-ECT workflows)

7. Permissions Matrix (Draft)

To be finalized in implementation planning.

8. Privacy and Security Controls

This section is product/engineering guidance, not legal advice.

Data Classification

Required Controls (baseline)

User Rights and Lifecycle

Privacy Policy Checklist

9. Build vs Buy Notes

10. Milestones (Proposed)

11. Open Questions