Dockify

Dockify is a donation platform for streamers in Iraq and Kurdistan. Streamers get their own donation page and live stream alerts, viewers pay with local wallets like FIB, ZainCash and FastPay, and payouts go straight to FIB or SuperQi — no international payment restrictions. I designed and built the whole product, from the UI/UX to the payments backend.

Next.jsTypeScriptTailwind CSSPostgreSQLWebSockets
Dockify
01

Overview

International donation tools like Streamlabs and Buy Me a Coffee weren't built for viewers in Iraq, where most people don't have a foreign card or PayPal. Dockify fills that gap: a streamer signs up, verifies their identity once, customizes their page at dockify.live/yourname, and adds the widgets to OBS as browser sources. Viewers donate without creating an account, and everything — donations, goals and payouts — is in Iraqi dinars.

02

Features

Each streamer gets a branded donation page with their own logo, colours and notes, plus a set of live stream widgets: tiered alerts with custom sounds and GIFs, donation goals, a top-supporters leaderboard and polls where every donation counts as a vote. The dashboard also includes a sound and GIF library, custom domains, an earnings calendar and self-service payouts to FIB or SuperQi with the fee shown before confirming. Messages in Kurdish, Arabic or English appear on stream exactly as viewers wrote them.

03

Technologies Used

The platform launched on Next.js with Tailwind CSS and is being migrated to a TypeScript monorepo (npm workspaces + Turborepo): a Vite and React Router frontend, and a module-based Express API using TypeORM with a Supabase-hosted PostgreSQL database. Alerts are pushed to OBS widgets in real time over WebSockets with Redis pub/sub, and shared zod schemas keep validation consistent between the frontend and API. Payments integrate First Iraqi Bank (FIB) and FastPay through a common payment provider interface.

04

Challenges

Handling money reliably was the core challenge: payment webhooks need signature verification, and a scheduled reconciliation job re-checks pending FIB payments so no donation is lost if a callback never arrives. Alerts have to show up on stream within moments of a payment, which required a realtime pipeline from the payment callback to the streamer's OBS widget. Identity verification (KYC) before a page goes live and a transparent payout fee calculation were also essential for keeping both donors and streamers safe.