Hash-It-Out

  • Category: Product & Full-Stack Engineering
  • Status: Live, in production
  • Platforms: Web, iOS & Android
  • Website: hashitout.net

Why I Built It
Hash-It-Out started with an argument. I was debating my brother one day and realised our opinions were wildly different, and the more we dug in, the clearer the reason became: we were getting our information from completely different sources. Neither of us was arguing in bad faith. We were just working from different facts. That is why evidence sits at the core of Hash-It-Out: every claim can carry sources, and the platform analyses those sources for bias so both sides can see where the other is coming from. I also wanted to get away from the shouting-match format entirely, so debates are anonymous. Nobody can come after you for the content you follow or the position you argue. The argument stands on its own.

The Product
Debates are turn-based with a seven-day response window per turn, which gives you time to research and write a proper argument instead of firing off a comment. Claims carry citations, and the platform tracks evidence quality through the debate. The community follows along, votes on arguments with a 1 to 5 persuasiveness scale rather than simple likes, and discusses in threaded comments. An LLM analyses cited evidence for bias and writes neutral summaries of long debates. The product is freemium: debating is free, with a premium tier for power users.


The Engineering
The backend is written in Go, a REST API with 55 routes behind a middleware chain handling CORS, IP-based rate limiting, JWT auth and subscription limits. Background work runs as goroutines inside the same process: AI evidence analysis, debate timeouts, push notification dispatch, subscription expiry and trending recomputation. The mobile apps are React Native with Expo, shipped solo to the Apple and Google app stores with first-pass approval on both.

The auth and billing layer took the most care: full JWT lifecycle management, X.509 certificate-chain validation for Apple's billing webhooks, and Google Play API integration for subscription verification, with the store webhooks as the source of truth for subscription state. Data lives in a 24-table PostgreSQL schema with automated archival triggers that keep query performance steady under high-volume voting, and user content passes through safety filtering.

It also doesn't run on a cloud platform. Hash-It-Out runs containerised on server infrastructure I built and administer myself, served through a Cloudflare Tunnel so the machine exposes no open inbound ports, with patching automated through Ansible. Owning the whole stack, from the mobile UI down to the hypervisor, is the part of this project I'm proudest of.