HackTacHACKTAC
FULL FEATURE BREAKDOWN

Everything in HackTac

Every feature explained in detail — from GPS tracking to server-side access control.

01

Real-Time Location Tracking

HackTac tracks every player's GPS position and pushes updates every ~5 seconds — in foreground and background. The moment a player moves, their team knows.

  • Background GPS using iOS Always-On location mode
  • Update cadence target: ~5 seconds at all times
  • Signal quality per player: Active (<15s), Degraded (15–60s), Lost (>60s)
  • Tracking is active in all game states: draft, active, finished
  • Current position only — no location history stored
  • Works when screen is off and app is not in foreground
02

Role-Based Visibility (Server-Side RLS)

What you see depends on who you are. Visibility rules are enforced in the database via Row Level Security — not just in the UI. There's no way to bypass them on the client.

  • Organizer: sees all players, all sides, all markers
  • Player: sees own side + staff only — never the enemy
  • Staff: sees all players (neutral referee visibility)
  • Pending: sees only themselves — waiting for organizer assignment
  • Supabase RLS policies enforce all rules — no client-side workarounds
  • All realtime updates are filtered server-side before delivery
03

Tactical Marker System

Tap to place a marker on the map. Choose a category, optionally add a description, and confirm. The marker appears instantly for everyone who's allowed to see it.

  • Categories: Structures, Enemy, Command, Custom
  • Enemy subtypes: Assault, Sniper, Machine Gunner, Scout
  • Visibility scopes: global / side-specific / staff-only
  • Organizer can create global and side-specific markers
  • Players create markers visible to own side
  • Staff creates markers visible to staff and organizer only
  • Markers deleted by author or organizer at any time
  • No auto-expiry in MVP — manual deletion only
04

Player Status System

Three life states communicate tactical situation at a glance. Players self-report, and organizer has override authority over everyone.

  • Three states: Alive / Bleeding (Wounded) / KIA (Dead)
  • Player self-reports via "I'm Hit" button → Bleeding or Dead
  • Organizer can change any player's status at any time
  • Bleeding players show a bleed indicator on the map
  • Dead players remain visible — spectator mode
  • Tracking continues after death — organizer sees all
05

Squads, Ranks & Classes

Squads belong to a side. Squad Leader is computed automatically — always the highest-ranked player. Ranks and classes give organizers full control over the game's chain of command.

  • Squads assigned per side — no cross-side squads
  • Squad members shown with HIGH visual priority on map (accent color)
  • Other same-side players shown with LOW priority (muted)
  • Ranks: Private (1) → Corporal (2) → Sergeant (3) → Lieutenant (4) → Captain (5)
  • Squad Leader = highest rank in squad, tie-break = earliest joined_at
  • Squad Leader can assign ranks to players in own squad
  • Classes: Assault, Sniper, Machine Gunner, Scout — informational only
06

Game Management

From game creation to finish — organizer controls the entire lifecycle. Players join via invite code and can soft-leave and rejoin without losing their record.

  • Game states: Draft → Active → Finished
  • Join via unique invite code — no account linking needed
  • Pending players see only themselves until assigned
  • Organizer assigns: side, squad, rank, class per player
  • Soft leave: player record stays, tracking stops, can rejoin anytime
  • Only one active game shown at a time per user
  • Designed for 20–50 concurrent players
07

Authentication & Profile

Sign in with Apple or Google — no password to remember. Set a nickname once and it follows you across all your games.

  • Sign in with Apple (privacy-first)
  • Sign in with Google
  • Nickname set on first launch — used across all games
  • One user account → multiple game participations over time
  • Account deletion available directly in the app