All projects
Harf Media — Smart OOH Advertising

Harf Media — Smart OOH Advertising

Out-of-home advertising platform for managing DOOH and static billboard campaigns across Iraq. Advertisers browse networks, schedule campaigns, upload creative, and pay online — while an admin team reviews and fulfills every request.

02.2025 — PresentSole developer — mobile app, backend API, and admin dashboard.
React NativeExpoLaravelPHPStripeiOSAndroid

What I did

  • Built the cross-platform mobile app from scratch with React Native + Expo, hand-crafting every screen to the client's design and shipping to both iOS and Android from a single codebase.
  • Designed and developed the backend REST API in PHP (Laravel) to power campaign booking, media management, and order fulfillment.
  • Integrated Stripe for card payments, plus a cash-on-delivery / direct-cash option to fit local buying habits in the Iraqi market.
  • Built a server-rendered Laravel Blade admin dashboard so staff can review incoming requests, manage media inventory, and track campaigns end to end.
  • Implemented full Arabic localization with right-to-left (RTL) layouts across the app.

Impact & results

  • Shipped and published on the App Store as a complete advertiser-to-admin platform.
  • Single React Native codebase delivered to both iOS and Android.

The problem

Booking out-of-home advertising in Iraq — billboards, LED screens, digital placements — was a manual, offline process: back-and-forth with sales, no single place to see availability, and no self-serve way to pay. The client wanted to turn that into a product: advertisers should be able to browse networks, book a campaign, upload their creative, and pay, all from their phone, while staff kept control over what actually goes live.

My approach

I took the project end to end as the sole developer — mobile app, backend, and admin.

  • Mobile app — I built the whole app in React Native + Expo, translating the client's design into every screen by hand and shipping the same codebase to iOS and Android.
  • Backend — I designed a Laravel (PHP) REST API to model advertising networks, campaign bookings, creative uploads, and the order lifecycle.
  • Payments — I integrated Stripe for card payments and deliberately kept a cash-on-delivery / direct-cash path alongside it, because a card-only flow would have excluded a large part of the local market.
  • Admin — I built a server-rendered Laravel Blade dashboard so staff can review incoming requests, manage media inventory, and move campaigns through fulfillment.

Challenges

  • Localization & RTL — the app is Arabic-first, so I implemented right-to-left layouts throughout rather than bolting them on afterward, which affects layout, iconography, and text flow across every screen.
  • Two-sided flow — advertisers self-serve on mobile while staff approve and fulfill on the web admin. I designed the API and data model so both sides stay in sync around a single campaign's state.

Outcome

Shipped and published on the App Store as a complete advertiser-to-admin platform, running on both iOS and Android from one React Native codebase.

View on the App Store →