The Tech Stack
A full breakdown of what I use to build and why each piece earned its place. This isn't a theoretical "technologies I know" list — every item here has been used in a shipped product or an active project.
Web: React / Next.js / TypeScript
React and Next.js are the foundation of everything web. This personal site, landing pages, web dashboards for Simplifly's B2B platform — all React/Next.js.
Why Next.js specifically? Server-side rendering, file-based routing, API routes, and seamless Vercel deployment. It's the framework that matches the "ship fast" philosophy. TypeScript sits on top because type safety prevents the kind of bugs that eat entire evenings — the ones where something is undefined and you have no idea why.
I learned React building Tipp at 13. It was my first framework after the Python years, and it clicked immediately. The component model — breaking UI into reusable pieces — matched how I naturally think about products.
iOS: Swift / SwiftUI
LockIn is a native iOS app, which means Swift and SwiftUI. No cross-platform compromise. The reason is simple: LockIn uses Apple frameworks that don't exist in React Native — FamilyControls, Screen Time API, Vision framework for push-up detection, AlarmKit, CoreNFC, Live Activities.
Swift is a different world from TypeScript. Xcode is a different world from Cursor. The learning curve was steep, and I had Amir guiding me through the worst of it. But native development was the only way to build what LockIn needed to be.
Mobile: Expo / React Native
Simplifly was built with Expo and React Native — the cross-platform option. For a connectivity app that needs to work on both iOS and Android, native didn't make sense. Expo's managed workflow and EAS Build pipeline made it possible to ship to both platforms from one codebase.
Backend: Python / TypeScript / Node.js
Python handles the scraping and data processing — Raly's live rate tracking across remittance providers runs on Python scrapers. It's also my comfort language, the one I learned first at MindChamp.
TypeScript and Node.js handle API servers and backend logic. Simplifly's backend, the integrations with Dtone DVS API and Stripe — all TypeScript.
Database & Auth: Supabase
Supabase handles database, authentication, and storage for the personal site and some projects. It's the "Firebase alternative" that's actually open source and doesn't lock you into Google's ecosystem.
Cloud: CloudKit
LockIn's leaderboard sync runs on CloudKit — Apple's cloud database for iOS apps. It handles the competitive layer where users compare push-up counts and streaks.
Payments: Stripe / Tap
Stripe for international payment processing. Tap Payments as the UAE-specific alternative. Navigating payment infrastructure in the Gulf taught me that "just add Stripe" doesn't always work — different regions have different realities.
AI: Claude / Cursor
Claude and Cursor are the force multipliers. Claude for thinking and problem-solving, Cursor for writing and iterating on code. Together they compress what used to take days into hours.
The Pattern
The stack isn't random. Each piece was chosen because a specific project demanded it. React because Tipp needed a frontend. Swift because LockIn needed native APIs. Python because Raly needed scrapers. The stack grew organically from real problems, not from a "what should I learn next" list.
See Also
- Technical Skills -- detailed breakdown with project mappings
- Cursor and Claude -- the AI layer
- Vercel and Deployment -- where it all ships
- AI and Coding -- how AI changed the stack