Skip to content
View SiaExplains's full-sized avatar
🦁
In the Beginning, There Was Nothing and the Lord said, ‘Let There Be #JS.’
🦁
In the Beginning, There Was Nothing and the Lord said, ‘Let There Be #JS.’

Block or report SiaExplains

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
SiaExplains/README.md

Hey, I'm Siavash 👋

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.


What I'm up to

  • 🏢 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 repo

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 /admin panel (the /link buttons and admin-written blog posts)

Running it locally

npm install
npm run dev

The 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:

  1. supabase start: local stack on ports 55xxx (see supabase/config.toml); it applies supabase/migrations/.
  2. Copy .env.example to .env.local, then fill in the URL and anon key from supabase status.
  3. Create the admin user in the local Auth (Studio is off, so use the Auth admin API). Only ADMIN_EMAIL can 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.


Tech I work with

ReactJS · Next.js · Node.js · TypeScript · AWS · PostgreSQL
MongoDB · GraphQL · Docker · Terraform · Python

Find me


Iran → Sydney → Berlin. Loving the journey.

Pinned Loading

  1. visa-sponsorship-companies visa-sponsorship-companies Public

    The aim of this repo is making an updated list of all companies around the world that offer visa sponsorship perk.

    TypeScript 542 69

  2. microservices microservices Public

    implementing microservices architecture based on my experiences and best practices.

    JavaScript 6 2

  3. einbuergerungstest einbuergerungstest Public

    Einbürgerungstest is an application that simulate German Citizenship Examination.

    TypeScript 4

  4. keepcent keepcent Public

    KeepCent is a simple playground app for developing a personal budget application.

    TypeScript 3 1