Skip to content
Muhammet Şafak
tr
Cover — a black device embossed SWIPENOR whose face shows CLIENT_SCORE and SERVER_NONCE arrows entering an HMAC-SHA256 box and leaving as SIGNATURE, a violet LED lit beside them
Security & verifiability In development Beta

Swipenor: if the client computes the score, what does the server trust?

A swipe-based true/false trivia game; the real subject is not the game but making a client-computed score verifiable through a signature.

What it does today

The swipe-based true/false quiz runs end to end in its core loop as a mobile app; the score is produced on the client but verified server-side with a server_nonce and an HMAC signature. swipenor.com is the app's landing page, not the game itself.

Started
July 2026 — Ongoing

Form

Mobile app

Technologies

Laravel PHP PostgreSQL Redis React Native Expo TypeScript Filament Astro

The mechanic is simple: a card arrives, swipe right for “True”, left for “False”. Content is tailored by age group (4–9, 10–17, 18+), correct answers score, streaks earn a bonus, and results land on global and per-age leaderboards. The part that is not simple is who owns the score.

If the client computes the score, what can the server check

The game loop runs on the client at 60fps (reanimated worklets plus gesture-handler), so the client naturally computes the score. A server that believes that number blindly turns the leaderboard into garbage on day one.

The model under test is signed-client: the server issues a server_nonce per session, the client HMACs the score with it, and the API both sanity-checks the value and verifies the signature. The scoring constants are not baked into the client either — 100 points per correct answer, a streak threshold of 3, a +25 streak bonus — and they all come from GET /config, so client and server never drift apart.

Four repositories, one schema owner

Four separate repositories in one workspace: game (Expo SDK 57, React Native, TypeScript), api (Laravel 13, PostgreSQL 16, Redis), admin (Filament, running against the shared database but never migrating it — the API owns the schema) and a fourth holding the marketing page built with Astro. The core loop works end to end: swiping, scoring, streak bonus, global and per-age leaderboards.

Schema ownership stays in one place. The admin panel is written with Filament and looks at the same database as the API, but it never runs a migration: only the API changes the schema. In a setup where both applications can migrate, it at the first collision it becomes unclear which release defined which table, and in production that ambiguity cannot be undone. So the panel was never given write access to the schema.

The signature model gets tested in production

The open ends are around the game rather than in it: ad integration and the one-time “remove ads” purchase, store assets, and the release process. How well the signature model holds up against real users is something only shipping will tell.

Tags: #mobile#game#api
Share:

More Records

All records

A Reddit-like community platform where every vehicle make and model has its own club, holding ICE and EV under one roof; web and mobile run in parallel.

What it does today

A community platform where every car make and model has its own club; identity, content, notifications and moderation all run on a single-schema API, with the web and mobile clients sharing that one schema. Anyone looking for a community specific to their car's model can join today.

Web app Mobile app Laravel PHP PostgreSQL +6 more
July 2026 — Ongoing

A finance core that keeps multi-account income and expense tracking in a single model; it became Parantaj, running on web, iOS and Android.

What it does today

One account/transaction model carries multi-account management, budgeting, goals and reporting on a single core; the web, iOS and Android clients are all live. Anyone who wants personal and business finances tracked in one place can use it.

Open source Web app Mobile app PHP Laravel Go +4 more
March 2024 — October 2024

A free, publicly open, text-first learning platform that holds textbook theory and problems actually met in the industry inside a single lesson flow.

What it does today

Live as a free learning platform with no signup wall: the field–curriculum–course–unit–lesson hierarchy, full-text search, progress tracking and verifiable certificates all work. Anyone who wants to read the computer-science curriculum can use it today.

Web app Laravel PHP Livewire +6 more
August 2026 — Ongoing

Search the site

Start typing to search posts, projects and pages.

Esc to close Powered by Pagefind