Shawky ElsayedSoftware Engineer
Skip to case study
JAHIZ Analytics logo

01 · Overview · JAHIZ Analytics · Cross-platform sports product

From live match to useful insight.

JAHIZ helps coaches and athletes record matches, manage athletes, teams and tournaments, review event history, and turn recorded activity into practical performance insights.

JAHIZ coach workspace with match recording, athletes, teams and tournament actions
Coach workspace

Match recording, athletes, teams and tournaments share one mobile product context.

Role
Software Engineer & Equity PartnerSole technical developer across the Angular/Ionic application, Node.js APIs, PostgreSQL data flows, analytics workflows and cross-platform delivery.
Status
Cross-platform beta · Android closed testing · iOS reviewBusiness, branding and sport-domain decisions were developed with product partners.

Screens use approved fictional data. No production athlete, coach, team or tournament data is shown.

Record once. Use the data beyond the match.

Match activity has to be recorded quickly without turning competition into a data-entry exercise. JAHIZ keeps capture focused, preserves every event as structured history, and reuses that history for review and analysis.

Fictional match · Bout 03

One action. No re-entry.
  1. 01

    Mobile input

    One scoring action is recorded.

    A focused scorer captures side, value and match time once—at the moment the action happens.

    Status
    Input · accepted
    Signal
    AO · +1 · 08:42
  2. 02

    Immediate state

    The live score responds now.

    The match state updates optimistically while the event remains visibly pending.

    Status
    Pending · local
    Signal
    AO 3 · AKA 2
  3. 03

    API persistence

    The same event is acknowledged.

    The API validates and stores the event, replacing temporary state with a trusted server identity.

    Status
    Confirmed · EVT-2841
    Signal
    201 Created
  4. 04

    Match history

    Continuity survives the bout.

    The confirmed action joins the chronological match record without being entered again.

    Status
    Stored · 08:42.17
    Signal
    Event 14 of 27
  5. 05

    Analytics

    One action becomes context.

    The same structured history can support athlete, team and tournament insight after the match.

    Status
    Athlete · team · tournament
    Signal
    Scoring rate +12%

Confirmed signal · no re-entryOne event now powers the product behind it.

What I built across the product

01

Mobile product

Built the Angular and Ionic experiences for live recording, athlete and team management, tournament workflows, match review and analytics.

02

Backend and data

Designed the Node.js and Express APIs, PostgreSQL data flows and structured event history connecting live activity to later review.

03

Delivery

Managed Capacitor integration, Android testing and release work, and iOS builds through Codemagic, TestFlight and App Store Connect.

Role boundary · Sole technical developer; business, branding and sport-domain decisions were shared with product partners.

Keeping live state reliable

01

One source of truth for the match

Problem
Timer, score, penalties and event history can drift when each part is managed independently.
Decision
Model the live match as one typed state with explicit event transitions.
Result
The interface, backend record and review timeline remain consistent.
02

Immediate feedback without hiding failure

Problem
Waiting for every network response makes live recording feel slow.
Decision
Update the interface optimistically while keeping pending, retry, rollback and removal states explicit.
Result
Interaction remains immediate without pretending failed persistence succeeded.
03

Mobile lifecycle without duplicate work

Problem
Cached Ionic views can re-enter while existing timers or subscriptions are still active.
Decision
Separate route-entry hydration from component lifetime, centralise timer ownership and bind cleanup to lifecycle boundaries.
Result
One reliable timer remains active and stale listeners do not duplicate work.
System path
  1. Angular · Ionic · NgRx
  2. Node.js · Express
  3. PostgreSQL
  4. Capacitor · Android · iOS

The product in use

Screens use approved fictional or synthetic data. No production user data is shown.

JAHIZ turns time-sensitive match activity into structured information that remains useful after the live session ends.