Nov 2024 – PresentCairo, Egypt
Current role
Noon Egypt
Software DeveloperPost-order frontend
Returns, refunds, address changes, the help center and support flows, on web and in the app. Every customer interaction after checkout runs through these screens, so there's little tolerance for broken states or edge cases that slip through.
- Maintain the Help Center in the Noon app. It's the first thing customers see when they need support, so it has to load fast and route them to the right flow before they reach an agent.
- Ship the same return and refund flows on web (React, Next.js) and mobile (React Native). The backend doesn't always return identical response shapes per platform: a field can come back null on mobile that web never had to check, so the mobile client gets defensive handling and type guards web doesn't need.
- TypeScript across both codebases. Zustand for state on most features, Redux on the chat module, Sass for web styling.
Stack React, Next.js, React Native, TypeScript, Zustand, Redux, Sass, REST APIs
Detail A
In-app chat support, built from scratch
No existing SDK worked with our React Native setup, and there was no internal backend to proxy Zoho's API, so I integrated with it directly.
| Constraint | Decision |
|---|---|
| ConstraintNo chat SDK fit our React Native setup | DecisionCustom chat UI components, sending and receiving through Zoho's REST API |
| ConstraintWebsockets would have needed a backend relay we didn't have | DecisionAPI polling for real-time updates |
| ConstraintChat state has to survive navigation and the app moving to the background | DecisionRedux for the chat module; Zustand's simpler model didn't fit that lifecycle |
| ConstraintCustomers come back to a conversation from a push notification | DecisionDeep links from the notification straight into the active conversation |

