Delhi, India
Hey, I'm Sujal Gupta
I build things to understand how they work, and I write down what broke along the way.
Right now I'm an Associate at
PwC India. Before that, three years at
Accenture rebuilding finance tools for a leading UK bank. On the side I fix things in
Docusaurus,
GitLab and
Signal.
Projects
Open one to see what it is, what I used and what broke.

- Stack
- BullMQ, Redis, Qdrant, Gemini, Docker
- Broke
- The server and worker containers couldn't share uploaded files, so I merged them into one service with a shared volume.
- Started
- Jan 2026

- Stack
- WebSockets, Express, Prisma, Turborepo
- Broke
- React StrictMode drew every stroke twice, until I tore the canvas down in the effect cleanup.
- Started
- Jan 2025

- Stack
- GitHub Actions, ESLint, Cline, Gemini
- Broke
- The first orchestrator didn't fit, so the whole flow moved onto GitHub Actions.
- Started
- Dec 2025
- Stack
- React, Zustand, Express, MongoDB, Twilio
- Started
- Jul 2024
- Stack
- React, TypeScript, Vite, Tailwind
- Started
- Jan 2025
- Stack
- Chrome extension
- Started
- May 2025
- Stack
- Ollama, Node
- Started
- Oct 2025
What I reach for
- Reactui
- Next.jsframework
- TypeScripttypes
- Node.jsruntime
- Expressserver
- MongoDBdatabase
- Tailwind CSSstyles
Zustandstate- Jesttests
- Dockercontainers
- Rediscache
- Prismaorm
- WebSocketsrealtime
BullMQqueues- Qdrantvectors
- GitHub Actionsci
Writing
Notes on things I built and bugs I fixed.
- → How a one-line fix landed in the Docusaurus 3.0 changelogdraftComing soon
- → Why React StrictMode drew every stroke twiceMy whiteboard drew every line twice in development. The bug was mine, not React’s.21 October 2026 (today) · heysujal.dev · 5 min read
- → Tata 1mg SDE-1 Frontend Engineer interview experience24 March 2025 (2 years ago) · dev.to · 4 min read
- → useState(): an intro and common pitfalls15 January 2024 (3 years ago) · Hashnode
- → NavLink on a logo image does not work in React30 October 2022 (4 years ago) · Hashnode
- → How to copy an object in JavaScript5 January 2021 (6 years ago) · dev.to · 1 min read
- → How to copy one array to another in JavaScript5 January 2021 (6 years ago) · dev.to · 1 min read
Open source
693 GitHub contributions in the last 12 months
- Make Prism code block languages case-insensitiveDocusaurus · Shipped in the Docusaurus 3.0 changelogAug 2023
- Hide "Explain this code" when the selection isn't codeGitLab · One of 17 MRs; 2nd place in the Oct 2024 HackathonNov 2024
- Unescape HTML entities in link previewsSignal · Previews showed & instead of &Jul 2021
- Stop the search menu opening on top of dialogsExcalidrawJun 2025
- Add a documentation link to the Web IDE configGitLab Web IDENov 2024
- Deprecate principal and issuer classes in pkg/identitySigstoreApr 2025
- Add _file to SpooledTemporaryFiletypeshedJun 2023
- Add a link-checker GitHub Action to the tourJSON SchemaOct 2024
- Rename "APIs and Microservices" to include "Backend"freeCodeCampJun 2021
Work and study
Building web apps for clients.
Rebuilt mortgage and borrowing calculators for a leading UK bank, used by 1.3M+ people: Lighthouse ~65 → 85+, LCP down 30%, 90%+ test coverage. Led a GenAI integration that connected an in-house AI agent to internal apps.
React dashboards on the Amazon Selling Partner and Ads APIs, a HubSpot → AI-chatbot sync in Python, Shopify Plus checkout fixes.
Worked on the SkyGoal Education web app and DiscountAdda.
My first open-source PRs (freeCodeCamp, Signal Desktop, TheAlgorithms) were merged while I was studying here, in 2021.

