Muhammad Arslan
Hire me
Back to projects

ZED (My Islamic Reminders)

A mobile app plus web admin console that delivers multilingual Islamic broadcasts on each user's personal schedule, with auto-generated narrated audio and full delivery analytics.

Role: Contributing developer (team project, led by another engineer)Timeline: 2025-2026Type: Cross-platform app + admin

Expo (React Native)

Next.js

Convex

OpenAI TTS

TanStack Table

Recharts

ZED admin dashboard with sample user-growth, engagement and language charts

Overview

ZED is a spiritual broadcast platform built as a monorepo with three parts that share one backend: an Expo mobile app for end users, a Next.js admin dashboard for the people running it, and a Convex backend that holds the data and does the scheduling, notifications, analytics, and audio generation. The product sends users short Islamic broadcasts at their preferred local time, in their chosen language, and automatically turns each one into narrated audio with word-by-word highlighting as it plays.

The Problem

The hard part of this product isn't showing content. It's orchestration. Users want broadcasts delivered at a specific time in their own timezone, in one of several languages including right-to-left scripts. Each broadcast should be consumable as text, as audio, or as something shareable. Administrators need to see what's actually happening: what's been delivered, viewed, and played, and whether audio generation is keeping up. And when someone misses content, the system should follow up on its own. The real work is pulling scheduled delivery, language selection, audio generation, push notifications, and analytics into one coherent system.

My Role & Approach

This was a team project led primarily by another engineer, and I contributed as one of the developers on it. My involvement was focused rather than primary, within an architecture built around Convex as the single source of truth shared by both the mobile app and the admin dashboard. The design principle across the codebase is that the backend owns the orchestration, including scheduling, retries, audio jobs, and analytics, while the two front ends stay thin and read from the same generated API.

Tech Stack

MobileExpo and React Native with Expo Router, Jotai, expo-audio, expo-notifications
AdminNext.js with React, TanStack Table, Recharts, Sonner, and a shadcn-style UI
BackendConvex for data, queries, mutations, storage, cron jobs, and a background work pool
MediaOpenAI text-to-speech for narrated audio generation
Notificationspush delivery with a retry policy

Key Features

Personalised scheduled deliveryeach user's broadcast arrives at their preferred local time, matched to their timezone.
Multilingual contentbroadcasts in several languages, including full right-to-left support, with the best variant chosen from the user's preferences.
Auto-generated narrationevery broadcast is turned into audio through text-to-speech, with word timings so the text highlights in sync as it plays.
Guided broadcast experiencethe mobile screen plays narrated audio, highlights along, and lets users share the text.
Admin operations consoledashboards for users, delivery, views, plays, and audio-generation progress, plus growth and language-performance reporting.
Broadcast and content managementcreate and edit broadcasts, regenerate or retry stalled audio jobs, and manage localised app copy and store links.
User management and settingsmanage roles and active state, choose single or multi-reminder behaviour, and send test notifications.

Gallery

ZED admin overview with synthetic user, content and delivery statistics
ZED engagement and language charts with sample broadcast activity

Challenges & Solutions

Notification delivery is the technically demanding core of the product. Because broadcasts go out per user, per timezone, on a schedule, the backend handles delivery through Convex cron jobs and a background work pool rather than ad-hoc triggers, with retry markers tracked against each user's activity so missed content gets followed up automatically.

Audio generation is the other moving part that has to stay reliable. Turning text into narrated audio is slow and can fail, so each piece of localised content tracks its own generation status and retry count, and admins can see progress and re-run stalled jobs from the dashboard. Engagement tracking, recording delivered, viewed, and played events with timestamps, is built directly into the data model, which means reporting comes straight from the same store without a separate analytics pipeline.

Outcome

ZED is a complete cross-platform system where a single Convex backend drives both a consumer mobile app and an operations dashboard. It schedules personalised, multilingual, auto-narrated broadcasts and reports on every step of their delivery. It's a strong example of orchestration-heavy product engineering, with the back end doing the hard scheduling and media work so the apps can stay simple.

Have a similar product problem?

Share the current product, the outcome you need, and the constraints already in the way. I will use that to define a sensible first milestone.

Hire a full stack developer
Start your project brief
All projectsNext projectSchooliee