2025Published

sidequest

Flutter · Node.js/Express · PostgreSQL · Redis · Signal Protocol · Docker

Overview

Daily quests with snap-style proof and group votes, built for a bachelor party and shipped to both stores on party day.

SideQuest is a social challenge app with a simple loop: daily quests land as cards, players answer with snap-style photos and videos, and the group votes on whether the challenge was actually completed. Groups carry their own encrypted chat and their own leaderboards, with global and friend rankings above them. Chat and snaps were sealed on the device with the Signal Protocol; the server relayed ciphertext it had no way to open.

It began as a bachelor-party idea (challenge cards merged with a 20-shot disposable camera) and shipped as a real product on December 6, 2025, party day: the App Store with a five-star rating, the Play Store beside it, real users on both. Archived since March 2026.

the app, as it ran

Why is it called SideQuest?

The name comes from games: you are not completing the main storyline in life, you go and do a little side quest instead. Every quest in the app is exactly that, a small detour taken with friends.

How does a bachelor party become an app?

A friend's bachelor party was coming and the idea had two ancestors: challenge cards everyone has to complete, and a 20-shot disposable camera whose photos nobody gets to vet. What if the camera judged the cards? That question became SideQuest: quests land as cards, the answer is a snap, and the group votes on whether it counts. Less than two months later it was live, on December 6, 2025, the day of the party. The promo storyboard in the repo still names the groups it was made for: The Boys, Bachelors Party, Family.

A SideQuest quest card: Do the Wobble Dance, a creative challenge worth ten points.The sealed daily card: drag or double-tap to reveal your SideQuest.A SideQuest quest card: Ask Someone What They Collect, a social challenge.

Why end-to-end-encrypt a party app?

Because an insecure app is not worth shipping. Chat and the snaps themselves were sealed on the device with the Signal Protocol; keys lived in the phones' secure storage, and the server relayed ciphertext it could not open. The tradeoff was accepted on purpose: no plaintext on the server means no message moderation and no message search. For an app whose entire content is people's cameras, that was the right side of the trade.

The SideQuest chats list: friends and groups, their last messages below each name.The SideQuest feed: finished quests posted as photo cards for the group to judge.A friend request arriving in SideQuest, with accept and decline.

What was under the hood?

One Flutter app, 27 documented screens on 13 global BLoCs; one Express backend, 81 documented endpoints across 12 groups. The data layer was hybrid by design: accounts and content in PostgreSQL, leaderboards in Redis sorted sets, real-time events over Redis Streams, and a cron job locking votes every 5 minutes to settle the points. Push ran through GoRush to APNs and FCM; real time ran through a WebSocket hub authenticated by JWT.

Deployment was one command: a six-service Docker Compose where a one-shot migration container gates the backend start. The documentation runs just as deep: seven thousand lines across nine specs, the API reference alone 2,537 lines, written so a stranger can host the whole stack from the repo.

A SideQuest group screen with its reveal timing and member list.Finding friends by username in SideQuest.A SideQuest profile with the owner's score and completed challenges.

What did shipping SideQuest prove?

A complete product, one person, under two months: a Flutter app with 27 screens, an Express API with 81 documented endpoints, end-to-end encryption, push, and a six-service deployment, live on two stores with real users. The recipe outlived the app: Flutter on BLoC, Express on PostgreSQL and Redis, push through GoRush, one-command Docker deploys. That stack became the template for the mobile builds that followed it.

The servers came down in March 2026 and SideQuest was archived with its five stars intact. A comeback stays on the table, and the docs, the screenshots and the recording are not going anywhere.

Field notes

  • Built alone in under two months: empty project to two app stores, encryption, backend and deployment included.
  • 81 documented REST endpoints across 12 groups, 27 Flutter screens on 13 global BLoCs, 21 milestones from foundation to deployment.
  • End-to-end encryption with the Signal Protocol: keys on the devices, the server a relay for ciphertext. Messages and snaps, both.
  • Hybrid PostgreSQL/Redis data layer: leaderboards in Redis sorted sets, events over Redis Streams, vote locks settled by a cron job every 5 minutes.
  • Production-shaped auth: JWT access 24 h and refresh 7 d, token blacklisting, multi-device sessions, EULA acceptance enforced as middleware.
  • Released to the App Store and the Play Store on December 6, 2025, the day of the party; five stars on the App Store and real users on both.
  • Documented end to end: 7,079 lines across nine specs, the API reference alone 2,537 lines, detailed enough that a stranger can host the whole stack.
  • One Docker Compose command brought up six services, with a one-shot migration container gating the backend start.

Listed as what it is: shipped to both stores, five stars on the App Store, archived whole.