LAUNCHED MAR 2026 · OWNER & PRIMARY ENGINEER
PanOph
Ophthalmology learning on web and mobile
Next.js · TypeScript · Flutter · Hono · Cloudflare Workers · D1 · R2 · Queues · Firebase · Razorpay · RevenueCat
PanOph is a paid learning platform for ophthalmology, with structured topics, assessments, and clinical scenarios. Built the web and Flutter apps and the systems for publishing content, managing subscriptions, and supporting users.
Reviewers create content
Reviewers prepare lessons and questions. Contributors add teaching images.
Review app + Image Vault · Next.js
Content is published
Reviewed content is released to the shared library, ready for students to study.
Workers API · R2 content storage
Students study
Students read, practise, and return to their learning on web or mobile.
Web app · Next.js / PWA · Flutter mobile app
- Sign inOne identity across apps · Firebase Auth
- Access a subscriptionWeb payments · Razorpay
Mobile purchases · RevenueCat - Keep learning progressProgress and access records · D1 database
One account, across two apps
The apps share accounts, content, learning progress, and paid access. Built the backend on Cloudflare Workers, using D1 for product data and R2 for content and media.
Web payments and mobile-store purchases arrive through different providers, but a student needs the same access when switching devices. Kept provider-specific subscription records behind a shared server-side access model, so each app reads the student’s entitlement without implementing its own payment rules.
A payment can arrive more than once
A payment provider can retry a notification, or send two different events describing the same payment. Deduplicating only the event ID would still allow the second event to apply that payment again.
Built the Razorpay flow around separate delivery receipts and payment records in D1. The handler verifies signatures, retains delivery evidence, and checks whether the underlying payment has already been applied before changing access. Lifecycle events are also checked against provider occurrence times so a late, older status cannot overwrite a newer one.
Reconciliation checks stored records against the provider and uses the same payment-application path for recovery. Conflicting amounts or subscription links go to review. Regression tests cover repeated deliveries, different events for one payment, and concurrent requests that finish reading before either writes.
Editing without changing the live lesson
Reviewers need to revise lessons while students continue using the published material. Kept editorial drafts separate from published releases, with review and approval before a new version reaches the learner apps.
The same boundary matters for teaching images. Adapting a published image creates a separate version; the original stays available. A lesson waiting for an edited image must reference that exact approved version, so an older image from the same submission cannot accidentally satisfy the publishing check.
Built admin tools alongside these workflows to investigate payment issues, resolve content reports, and monitor learning activity and system health. Delivery receipts and content versions give those investigations a specific record to follow.
Usage and revenue · September 2026
PanOph had 2,000+ registered accounts and 150+ paid customers as of September 2026.
Approximately ₹5 lakh+ in revenue from launch in March through September 2026.