Shayan Shokat.

A portfolio in lights. Lahore, 31.52 N, 74.36 E

Senior full-stack engineer. 8+ years in software. Lahore, Pakistan (UTC+5), working remote.

TypeScript, Python (FastAPI), React.js and Node.js, with REST APIs, Firebase, Stripe and LLM integration. AI-assisted development (Claude Code), test-first.

Open to remote full-time, part-time or contract work.

Light the lanterns. Write to me.

Character file.

Name
Shayan Shokat
Class
Senior full-stack engineer
Base
Lahore, Pakistan (UTC+5). Works remote.
Experience
8+ years in software, Jun 2018 to Sep 2026
Weapons
TypeScript, Python (FastAPI), React.js, Node.js, REST APIs, Firebase, Stripe
Special moves
Payments architecture on Stripe. LLM integration. Managing a team of about 5 and reviewing every merge.
Fighting style
AI-assisted development (Claude Code), test-first
Origin
BS Computer Science, FAST-NUCES, Lahore, 2014 to 2018
Status
Open to remote full-time roles and to part-time or contract work, including 40 hours a week

Interlude: Lahore to North America.

A world clock. Lahore sits at the top; Canada and the US are across the dial. The sun marks noon.

Based in Lahore, Pakistan (UTC+5). Works remote.

  • PKT Lahore
  • ET Toronto, New York
  • CT Winnipeg, Chicago
  • MT Denver
  • PT San Francisco, Seattle

Turn the ring to try another hour: drag it, use the buttons, or focus it and use the arrow keys.

Chapters.

Light a lantern to open its chapter. Reading a chapter lights its lantern too.

  1. 01 Your Doctors Online 2021 - 2026
  2. 02 EMPG 2021
  3. 03 Exper Labs 2018 - 2021
  4. 04 GharSathi 2026
  5. 05 claude-pocket 2026
  6. 06 FAST-NUCES 2014 - 2018

Your Doctors Online.

Head of Technology (2022-2026), joined as Full-Stack Developer (2021-2022)

Oct 2021 - Sep 2026. Remote, from Lahore.

A telehealth platform on iOS, Android and web; the patient app has 100K+ Google Play downloads.

I led engineering for the patient and doctor apps on iOS, Android and web, built around real-time chat, voice and video consultations, scheduling and prescriptions.

Same laptop. Bigger blast radius.

The payments arc.

I migrated payments to Stripe and rewrote the payments architecture for subscription idempotency, off-session charging and 3D Secure handling.

Three bosses. No continues.

Boss 1: the double charge.

A retry must never charge twice. Idempotency: send it again, pay once.

Demo: a Pay button that sends the same request again and again under one idempotency key: the requests climb, the charges stay at one.

Boss 2: the sleeping card.

Off-session charging: a saved card, charged later, with nobody at the screen. It has to just work, and it has to be right.

Demo: a saved card renews in the night while its owner sleeps: it is charged with nobody at the screen.

Boss 3: the bank's challenge.

3D Secure: the bank steps in and asks the cardholder to prove it's them. The flow has to survive the detour.

Demo: a phone checkout where the bank steps in to ask "Is this you?": yes pays after the bank's check, no stops with no charge, and either way the app carries on.

Clear.

I owned the payments architecture. Stripe since 2021. I also shipped production-critical fixes in payments, communications and webhook handling.

Retry all you like.

The new app.

I established the foundations of a new app, including its authentication flow. Then I ran a security audit of it.

The highest-risk changes, to sign-in, account recovery and payments, I personally owned.

If it breaks here, it breaks for real.

On call.

I ran on-call triage for production issues and routed incoming issues through the team's tracker.

Demo: a phone buzzes with "Webhook failed." Pressing On it plays it through: triage, routed through the team's tracker, fixed.

Releases.

I oversaw App Store and Google Play releases.

The crew.

I managed a team of about 5 web, mobile and backend engineers and reviewed every merge. I mentored developers on React, TypeScript and state management, and set frontend standards and a reusable component library for the React.js web apps.

Demo: a change waiting for review, with you as the reviewer: ask for changes or approve it, then merge it.

The machines.

I built Python (FastAPI) services used in production and added Redis caching for peak-load performance. I built an LLM-based patient-triage workflow with LangChain and the OpenAI API.

I ran the team's AI-assisted engineering setup on Claude Code, with TypeScript agents and Model Context Protocol (MCP) servers.

FastAPI in production.

Voice and video.

Agora, Twilio, Telnyx. I owned the voice and video integrations.

The quiet work.

I shipped pricing plans and rollouts, post-chat upsells, email feature flags and A/B/C testing infrastructure. I built revenue-recovery services, including activation watchdogs and auto-chat triggers. I shipped prescription home delivery, pharmacy preference and cancellation flows.

Nobody claps. It compounds.

EMPG.

Software Engineer

May 2021 - Oct 2021. Lahore, Pakistan.

Internal apps for a marketplace group: an inspection app and Dubizzle CRM.

I led the junior engineers on one project, and worked with distributed teams across several countries.

One app. Many tenants.

Many tenants, one app.

I built features for a multi-tenant inspection app in React Native, with tenant-specific theming, custom branding, feature toggles and regional settings.

Demo: one inspection app with three made-up tenants; the same code gives each its own colours, brand mark, features and regional settings.

The live dashboard.

I delivered Dubizzle CRM features on mobile (React Native) and web (React.js), including dashboards with real-time updates, filtering and pagination.

Demo: a made-up dashboard where rows arrive live, with filters and pages. Here, new rows wait behind a pill until you bring them in, so the page you are reading does not jump.

Exper Labs.

Software Engineer

Jun 2018 - Apr 2021. Lahore, Pakistan.

Client apps in e-commerce, services and healthcare.

Where it starts: React Native.

Many apps.

I shipped several cross-platform mobile apps in React Native for B2B and B2C clients in e-commerce and services, with complex navigation, Redux state management, form validation and reusable UI components.

A team of three.

I developed a telemedicine client app in React Native in a team of 3 developers, covering the iOS and Android apps through to the cloud backend.

Offline, then back.

I added offline sync with local storage, push notifications and background data fetching, and integrated third-party SDKs for payments, analytics and social authentication.

No signal? No problem.

GharSathi.

2026. Personal project, working prototype, built with AI-assisted development.

The same app built twice: once in Flutter 3.47 and Dart 3 (flutter_bloc, go_router), once in React Native 0.86 with Expo SDK 57 and TypeScript.

I built customer, staff and admin apps from one Flutter and Dart codebase for mobile and web, with an English and Urdu interface that mirrors right to left.

Two builds. One app.

Right to left.

English and Urdu, mirrored.

Demo: one app screen in two languages: in Urdu the whole layout mirrors, right to left, from the back arrow to the progress bars.

The outbox.

I implemented real-time messaging with photos over a WebSocket relay written in Dart: reconnect with backoff, an offline outbox, relay acknowledgements, and sent, delivered and read marks.

Demo: two phones and a relay: with signal, a message gets one tick when the relay has it, two when it arrives and two filled ticks once it is read; without signal it waits in the outbox, then goes out when the signal comes back.

What the relay sees.

I encrypted every message and photo end to end (X25519, HKDF, AES-256-GCM) so the relay cannot read, alter or replay them, kept private keys in the platform's secure storage, and stripped location metadata from photos.

Demo: three views of one message: your phone sees the words, the relay sees only scrambled bytes that change with every send, and their phone sees the words again. Change one byte on the relay and their phone refuses it.

The tests.

Flutter: I wrote 452 tests, including whole conversations over real sockets, and fixed 31 of 32 findings from an independent code review.

React Native: I wrote every behaviour test-first with Jest and React Native Testing Library, 198 tests including full journeys through each app. I fixed 29 of 30 code-review findings, then tested the release APK on an Android emulator.

claude-pocket.

2026. Personal project.

Real-time, end-to-end encrypted phone app (PWA). JavaScript, WebSockets, Cloudflare Workers, Node.js.

Several Macs. One phone.

Live from the Macs.

I created an iPhone app that streams live sessions from several Macs over a WebSocket relay, with push notifications, and shipped about 30 releases.

Demo: three Macs stream their live sessions through a relay to one phone: every message is locked end to end, a push arrives when a session needs attention, and the phone can be logged out while the Macs keep working.

Locked in transit.

I secured every message with end-to-end AES-256-GCM encryption so the relay cannot read, replay or reorder what it carries, with keys derived by PBKDF2 and HKDF and a separately revocable login for each device.

The parts.

I built the Node.js host daemon on the Claude Agent SDK, the relay on Cloudflare Workers and Durable Objects, and a screen-by-screen phone test harness for the app.

FAST-NUCES.

Sep 2014 - Aug 2018. Lahore, Pakistan.

Bachelor of Science (BS) in Computer Science, National University of Computer and Emerging Sciences (FAST-NUCES), Lahore, Pakistan.

Origin story.

Off the clock.

Foosball, chess and snooker. Anime and TV series.

Snooker.

Demo: a snooker table seen from above: six reds, a yellow and the white, with six pockets to pot them in.

Chess.

Demo: a chess puzzle: White to move and checkmate in one, with the black king boxed into its corner.

Foosball.

Demo: a foosball table: a ball rolls towards a rod of three men, and a kick at the right moment puts it in the goal.

Series.

Demo: a small TV with a remote: each episode plays a short opening with a made-up title, and twelve episodes make a season.

Letters to the author.

If you are hiring, I am one message away.

Email LinkedIn

shayanshokat@gmail.com. Lahore, Pakistan, UTC+5. CV on request by email.

Our seal.

Type your team's name. My seal and your name draw one pattern together.