Principal Software Engineer and Tech Lead based in Berlin. Originally from Iran — been writing code professionally since 2007, which feels like both forever and yesterday at the same time.
I run SiaExplains — a YouTube channel, blog, and collection of side projects where I share what I've learned about engineering, AI, career growth, and navigating the tech world as an international professional.
- 🏢 Leading engineering at MHP in Berlin — working on tooling for Volkswagen Group
- 📺 Creating content on YouTube @SiaExplains about tech, AI, and engineering careers
- 🫙 Running Emojar.com — an emoji search and copy tool (built entirely with AI, zero lines of hand-written code)
- 📰 Building WikiDigit.com — a tech media and news site for engineers who want signal over noise
- ✍️ Writing about system design, AI tools, and the realities of a software career at siaexplains.com/blog
This is the source code for siaexplains.com — my personal site, built with:
- Next.js 15 (App Router)
- TypeScript
- Tailwind CSS v4
- MDX for blog posts and articles
- Framer Motion + Bedrock/ReactBits components for the animation
- Supabase for the
/adminpanel (the/linkbuttons and admin-written blog posts)
npm install
npm run devThe site runs without Supabase: the blog shows only the MDX posts, /link uses its built-in links, and /admin shows a setup screen. To work on the admin:
supabase start: local stack on ports 55xxx (seesupabase/config.toml); it appliessupabase/migrations/.- Copy
.env.exampleto.env.local, then fill in the URL and anon key fromsupabase status. - Create the admin user in the local Auth (Studio is off, so use the Auth admin API). Only
ADMIN_EMAILcan sign in.
For production, run 0001_init.sql on the hosted project, set the three env vars in Vercel, turn off "Allow new users to sign up" (keep the Email provider on), and add your admin user in Auth → Users.
It's open source. Feel free to look around, take inspiration, or open an issue if something is broken.
ReactJS · Next.js · Node.js · TypeScript · AWS · PostgreSQL
MongoDB · GraphQL · Docker · Terraform · Python
Iran → Sydney → Berlin. Loving the journey.




