Garvit Galgat

LAUNCHED MAR 2026 · OWNER & PRIMARY ENGINEER

PanOph

Ophthalmology learning on web and mobile

Visit website

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.

HOW IT WORKSFrom a reviewer’s knowledge to a student’s study screen.
  1. Reviewers create content

    Reviewers prepare lessons and questions. Contributors add teaching images.

    Review app + Image Vault · Next.js

  2. Content is published

    Reviewed content is released to the shared library, ready for students to study.

    Workers API · R2 content storage

  3. 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.