cekrause/avioes

Aviões is an offline-first PWA for groups of friends who count airplane sightings together. One tap records a sighting, updates the group tally, and keeps a shared diary and scoreboard.

Repository (opens in a new tab)

Offline-first · Multi-tenant groups · Next.js · Postgres · IndexedDB · PWA

Product

Members tap once when they see an airplane. The app records each sighting for the active group, combines consecutive sightings by the same person into streaks, and keeps totals, leaders, and recent activity easy to revisit.

Groups are private and invite-only. Each person can join more than one group, switch between them, and review each shared history without mixing their data.

What I built

I built the installable PWA and its backoffice as a Turborepo with Next.js, React, TypeScript, Postgres, and Drizzle. The backoffice provides a separate place to manage users and groups.

The product supports email and password, one-time code, passkey, and Google sign-in. It ships in Brazilian Portuguese and English, with light and dark themes and six color palettes.

Engineering choices

An IndexedDB snapshot and ordered operation queue keep counting available offline. Pending changes sync through Server Actions when the connection returns, while Postgres remains the source of truth.

Every group read and write is checked against server-side membership. This keeps the one-tap interaction fast without moving authentication or tenancy decisions into the browser.