03 / Full-stack product · community · play
Strike Counter
A shared baseball scoreboard built for friendly stakes.
Strike Counter gives two people a place to keep score together. A scoreboard belongs to its creator, can be shared with a strikee by email, and stays editable by both signed-in people.
Product designer and engineer; built the Astro app, account flow, sharing model, and data access.
Independent project, developed and maintained by Kai.

- 2
- people can update a shared board
- invitation-based sharing
- RLS
- per-user database access
/01
The small friction
A running joke or friendly competition can become a surprisingly persistent bit of admin. Strike Counter makes that ritual easy to keep: create a board, invite the other person, and update the count as the game goes on.
/02
Sharing is the product
The core design decision is account-based sharing instead of a public or single shared key. A creator invites a strikee by email. Once the invitee signs in with that address, the board appears in their account and both people can edit the count.
Neon Auth handles sign-in; Postgres stores boards and invitations; the Neon Data API exposes the data with row-level security that scopes each request to the signed-in person’s own or shared boards.
- Keep board ownership clear while making collaboration simple.
- Use invitation identity to connect the other player to the right board.
- Enforce access in the database rather than relying on a hidden client-side key.
/03
The build
The application is built with Astro and uses Neon Auth and Postgres-backed data access. The interface keeps the baseball metaphor visible without making the scorekeeping interaction hard to scan.
The useful detail is the boundary: shared with the invited person, private from everyone else.
Go a little further
Explore the work.
Sources & further reading
Keep exploring