Haitham Assoli

← All projects · SHEET A-130

Sawt

Automating an election, from voting to results.

Title block
RoleSolo: mobile and backendYear2025
StatusShippedRoomMobile
Built withReact Native · TypeScript · OTP verification · Firebase · Zustand · React Query · Reanimated · Restyle · Zod
Where to find it
Sawt
ELEVATION · A-130 · SCALE 1 : 1

1 · General notes

What it is, and why it exists.

An app that digitises the election process end to end: voter registration, identity-verified access, casting a vote and announcing results. Built for transparency at every stage.

Voting is the least forgiving thing to build. A bug in a normal app annoys someone; a bug here invalidates a result and the trust that goes with it.

Sawt covers the whole cycle: voters register and access their account through verified identity, cast a ballot, and results are announced through the same system. The engineering priority throughout was that every stage be verifiable rather than merely fast.

2 · Challenges

DETAIL 1

One person, one vote, on a device you do not control

The problem

Anyone can install the app twice, on two phones, with two numbers. Device-based identity is not identity, and client-side checks are trivially bypassed.

As built

Eligibility is bound to a verified identity checked server-side via OTP, and the ballot record itself enforces uniqueness per voter per election. The device is treated as untrusted throughout.

DETAIL 2

Everyone votes in the last hour

The problem

Election traffic is not steady. It is nothing for days and then everything at once, right before closing. A system that works in testing can fold exactly when it matters.

As built

Writes are kept small and idempotent so a retried submission cannot double-count, and reads for results are served from aggregates rather than recomputed per request.

3 · Results

  1. 3.1Published on Google Play.
  2. 3.2Identity-verified, one-vote-per-voter enforcement on the server.

4 · Elevations

Sawt — 1
ELEVATION 1
Sawt — 2
ELEVATION 2
Sawt — 3
ELEVATION 3
Sawt — 4
ELEVATION 4
Sawt — 5
ELEVATION 5

Next sheet

Kheir →

Donate directly to people in need.