Skip to main content
Maqam

// a streaming platform for the Kurdish & Arabic world

Press play on a whole city’s sound —the songs it grew up on,in the language it dreams in.

Visit Maqam
  • Backend & API Engineering
  • Product Strategy & Lead
  • Payments & Subscriptions

// the brief

Built for an audience the big platforms skipped.

Kurdish and Arabic listeners have been an afterthought for the global streaming services — patchy catalogues, no real localisation, and no sense of the local music scene. Maqam set out to fix that: a proper music product for this audience, with a catalogue that lives in their languages.

It's a full product — native iOS and Android apps backed by a single Laravel API, plus a Livewire back-office for running the catalogue and the business. I built the backend and API, led product direction, and owned the payments and subscription layer end to end. The apps' interface is the team's design; the platform underneath — the tri-lingual catalogue, the per-locale search, the multi-store billing — is mine.

// discovery

A whole listening experience, end to end.

Home, player, artist, library — every surface feeds from the same Laravel API. The app's interface is the team's design; the catalogue, recommendations, and playback data behind it are the platform I built.

// one catalogue, three languages

  • 3content languages · en / ar / ckb
  • 3payment rails reconciled
  • 2right-to-left locales
enEnglisharArabic · RTLckbSorani Kurdish · RTL
  • 11translatable models
  • 5Algolia-indexed per locale
  • 3plan tiers
  • 7day free trial
  • ~54API endpoints
  • 44migrations

// under the hood

One API, feeding two apps and a back-office.

A modern Laravel API designed to feed native apps fast, search well in three languages, and reconcile money across three app stores.

  • // api.laravel

    Laravel 12 API

    A versioned, Sanctum-secured REST API split into auth, home, my-music, onboarding, and subscription domains — the single source of truth for both the iOS and Android apps.

  • // search.algolia

    Per-locale search

    Laravel Scout + Algolia index titles, artists, and albums per locale (en / ar / ckb), backed by Spatie Translatable so the catalogue is genuinely tri-lingual — not just the UI chrome.

  • // media.s3

    Media on S3

    Audio and artwork are delivered from S3 via Spatie MediaLibrary, with derived URLs served to the apps and a scope that only ever serves active songs that actually have audio attached.

  • // auth

    Auth your way

    Sign in by email, by phone with OTP over Twilio, or with Apple and Google social login — whatever fits the listener and the device.

  • // admin.livewire

    Catalogue back-office

    A Livewire admin runs the catalogue — artists, albums, songs, playlists, genres and moods — with roles and permissions, plus bulk import from Excel and Google Sheets to onboard a large library quickly.

  • // engagement

    Push & engagement

    OneSignal delivers push notifications for new releases and re-engagement, while play tracking feeds the trending, viral, and daily-recommendation surfaces.

// payments — the hard part is the money

Three storefronts, one truth.

A subscription can begin in the App Store, on Google Play, or through Stripe. I built the billing layer to reconcile all three providers’ webhooks into one consistent subscription state — idempotent and audited — so a listener’s access is correct no matter where they paid.

Apple App StoreDID_RENEW
Google PlaySUBSCRIPTION_RENEWED
Stripeinvoice.paid
One subscription stateactive · premium · reconciled

// audited webhook event types — idempotent, logged

  • AppleINITIAL_BUYDID_RENEWDID_CHANGE_RENEWAL_STATUS
  • Google PlaySUBSCRIPTION_PURCHASEDSUBSCRIPTION_RENEWED
  • Stripecustomer.subscription.updatedinvoice.paid

// outcomes, honestly

A platform built to grow past launch.

Maqam gives Kurdish and Arabic listeners a music product built for them rather than ported to them — a tri-lingual catalogue, search that works in all three languages, offline downloads, and premium plans that work on any store. Every figure here is code-derived — the shape of the platform, never a listener's data.

21
Eloquent models
44
migrations
~54
API endpoints
2
taxonomy dimensions
  • Laravel 12 API
  • Sanctum
  • Livewire admin
  • Scout · Algolia
  • spatie · Translatable / MediaLibrary / Permission
  • Cashier · Stripe
  • Apple · Google Play billing
  • S3
  • Twilio · OneSignal