Ahmed Fathallah
WritingAboutContact
Sign in
WritingAboutContact
Sign inSign up

Ahmed Fathallah

Engineering notes on type-safe full-stack development, modern back ends and automated delivery.

WritingAboutContactSitemap

© 2026 Ahmed Fathallah

    Full-stack software engineer

    I design and ship type-safe, production-grade web platforms, from data model to deployment.

    I'm Ahmed Fathallah. I build with the modern TypeScript stack (Next.js App Router and React Server Components, end-to-end typed APIs with tRPC and Zod, Prisma on PostgreSQL) alongside Laravel and .NET back ends, and deliver them as containerised services through automated CI/CD. Increasingly, that includes integrating generative AI where it adds real value.

    Read the articlesAbout meGitHub
    ~/ahmed-s.com

    $ whoami

    ahmed fathallah

    $ cat ./stack

    TypeScriptReact 19Next.js App RouterServer ComponentstRPCZodPrismaPostgreSQLTailwind CSSshadcn/uiLaravelPHP 8C# / .NETPythonDockerKubernetesGitHub ActionsGenerative AI APIs

    $ git push origin main

    ✓ typecheck · ✓ build · ✓ image → ghcr.io · ✓ deployed

    $

    Writing

    In-depth articles on architecture, type safety and shipping software to production.

    8 articles

    Featured

    How This Blog Ships to Production with Docker, GHCR and Caddy

    The fully automated pipeline behind this site: a multi-stage Next.js Dockerfile with BuildKit secrets, immutable SHA-tagged images on GHCR, workflow_run deployments with instant rollbacks, and Caddy as a hardened reverse proxy.

    October 11, 2026·9 min read

    Docker
    Next.js
    DevOps
    CI/CD
    Read
    • October 11, 2026·6 min read

      Validating Next.js Environment Variables with Zod at Build Time and Runtime

      A build can pass and health checks stay green while production ships a placeholder value. How to validate env vars with Zod in a containerised Next.js app, why NEXT_PUBLIC_ values are frozen at build time, and where to fail fast.

      Docker
      Next.js
      TypeScript
      Zod
    • October 11, 2026·8 min read

      Laravel-Style Authorization Policies for tRPC Procedures

      Bringing Laravel's policy pattern to a Next.js + tRPC + Prisma app: permission-based policy classes, one authorize() call per procedure, compile-time checked action names, and Prisma scopes for lists.

      Next.js
      TypeScript
      tRPC
      Prisma
    • October 11, 2026·6 min read

      PHP Backed Enums as the Single Source of Truth in a Laravel API

      Using PHP 8.1 backed enums so each set of statuses is defined once: string columns, Eloquent casts, Rule::enum validation, state transitions, value/label API responses and generated TypeScript types.

      PHP
      TypeScript
      Laravel
    • December 6, 2024·4 min read

      Docker Made Simple

      When building a web application, managing different software components can be tricky. Docker helps simplify this process by packaging your application and its dependencies into a single container. Here's how Docker can make your development and deployment easier.

      Docker
    • November 4, 2024·2 min read

      Fitness Your Journey to a Healthier You

      Fitness, the state of being physically healthy and strong, is essential for overall well-being. It encompasses a wide range of activities, from cardiovascular exercise to strength training and flexibility exercises.

      PHP
      HTML
    • November 4, 2024·2 min read

      The Art of Crafting Digital Worlds

      Programming is more than just writing code; it's about problem-solving, creativity, and logical thinking. When you learn to program, you're not just learning a skill, you're learning a way of thinking.

      Well-Being
      Health
      Fitness
    • November 4, 2024·1 min read

      Welcome to My Blog3

      Hello, and, welcome to my blog. I hope you enjoy your time here and learn a thing or two

      PHP
      CSS
      HTML

    Have a question or an idea to discuss?

    Whether it's feedback on an article, a technical question or a collaboration, I'd be glad to hear from you.

    Get in touch