
Ahmad Habannakeh
Experience
NClip
Cairo, Egypt
Senior FullStack Developer
May 2024 – Present
•
I built a staging environment in AWS utilising Redis Cloud, a custom VPC with a NAT Gateway, security groups to protect resources, a MongoDB Atlas Cluster, an ECR Repository and an ECS Cluster of two dockerized services, an AWS Lambda Function, CloudFront Distribution and an S3 Bucket, all linked together with a NetworkLoadBalancer and an ApplicationLoadBalancer too.
•
I built a production environment using Kubernetes on AWS EKS, AWS Backup for backing up S3, Redis Cloud, MongoDB Atlas with VPC Peering connection allowing only one security group to connect to MongoDB, assigned VPC IPs and security groups to Kubernetes pods with VPC CNI Addon, made a Network Load Balancer controlled by Kubernetes using aws-load-balancer-controller, used AWS Secrets Manager for managing secrets, deployed an API Gateway to manage routing between Nextjs and webflow website, CloudFront CDN, all done through SST and Pulumi as an Infrastructure as Code platform.
•
I built an image validation solution using OpenAI integration.
•
I converted images to vectors using Hugging Face Transformers.js, then used the Redis Vector Database to search for similar images using cosine similarity to validate unique image uploads.
•
I built a complete observability solution with logging, tracing, and metrics using OpenTelemetry and the pino logger, deployed on AWS Prometheus and AWS Grafana, along with AWS X-Ray for distributed tracing and AWS CloudWatch for log storage.
•
I minimised a Docker image for launching a NestJS Service from 1.5GB to 280 MB.
•
I used the latest-generation c8g.medium ARM EC2 Instances with Amazon Linux 2023.5 for production.
•
I built a microservices architecture using NATS as the messaging platform between frontend services built with Next.js and backend services built with Nest.js.
•
I configured linting with ESLint and implemented unit tests for both the Next.js frontend and the Nest.js backend, using Vitest, MongoDB Memory Server, and Testcontainers, all within an NX monorepo.
Kaseya
Augest 2022 - Present
Frontend Developer
•
I managed the central component library for all Kaseya companies and served as a Core contributor to the product.
•
I built a complete Typography system consisting of around 15 elements, including headings, body text, buttons, etc., using pure CSS.
•
I built a Tabs overflow feature dynamically collapsing/expanding tabs as the window resizes using ResizeObserver and React.
•
I rebuilt the theming system to use the prefers-color-scheme media query to switch CSS Variables based on the system theme, a Theming React Context provider, and a custom hook to watch a media query value.
•
I wrote around 70 unit tests for React components using Jest, React Testing Library, and UserEvent.
•
I built a React component that truncates/clamps text across multiple lines using a TypeScript algorithm.
•
I built a wrapper around tinymce-react to export a RichTextEditor component.
•
I built and exported a components library as both an ES Module and a CommonJS build using Rollup 3, Babel 7.22, the SCSS plugin, PostCSS 8, and PostCSS-Preset-Env, migrating from an old webpack four config, then to Rollup 4 and swc in place of Babel.
•
I fixed around 1,000 TypeScript noImplicitAny errors in a codebase of around 100 files, then switched the noImplicitAny tsconfig option to true to prevent future mistakes.
•
I added around five Storybook files, each containing about 10 stories, using CSF 3 instead of CSF 2; some migrated from CSF 2 to CSF 3.
•
I updated around 22 dependencies, including Storybook from v6 to v10, ESLint from v5 to v9, Jest from v28 to v30, and migrated to Prettier for formatting.
•
I reviewed 40+ PRs and created an additional 200+, improving all 70+ components in our library.
•
I use Jira, Slack, Microsoft Teams, and Zoom to collaborate with teams in the US, Canada, Poland, and Lebanon, spanning multiple time zones.
SilverKey Technologies
Cairo, Egypt
Backend Developer
February 2025 – September 2025
WowVir
Cairo, Egypt
Full Stack Developer
September 2024 – November 2024
•
I built a staging environment using AWS ElastiCache Redis, Elasticsearch Cloud Deployment, MongoDB Atlas Deployment, and deploying Docker containers to AWS ECS and AWS IoT Core Infrastructure, all using the Pulumi IaC Tool.
•
I deployed two single-page applications to Cloudflare Pages, hosted in a Cloudflare zone, enabling TLS, HTTP/3, Cloudflare default protection, and CDN.
•
I deployed an AWS Load Balancer, proxied by Cloudflare, to load-balance traffic between Docker containers running on AWS ECS.
•
I built a production environment using AWS ElastiCache Redis in cluster mode with replicas, a MongoDB Atlas replica set on M10 Servers, and a Kubernetes Cluster hosted on AWS EKS, deploying Docker containers with the AWS VPC CNI addon, all using the Pulumi IaC tool.
•
I upgraded an application made of 20 routes rendering around 200 components using Material UI from v5 to v6.
Data Masher
October 2023 – May 2024
Full Stack Developer
•
I built a Node.js backend service to connect to around 3 Types of Data Sources, all connected to the frontend service.
•
With Azure ServiceBus and API JWT Tokens.
•
I built a Node.js backend service that deploys Azure function apps and calls them.
•
I built around 4 Express.js API Endpoints for storing images in Azure Blob Storage using multer express.
•
Middleware and multer-az-storage-blob storage backend.
•
I created a Release pipeline on Azure Pipelines that deploys two versions of the same app with different.
•
Environments and target branches.
•
I created around 10 Zod validation schemas, validating objects with around 10 fields, including image fields, arrays, default values, and TypeScript support.
•
I built two forms, each with 11 fields, including attachments, image uploads, tags, AutoComplete, Selects with Icons before each menu item, Text Fields, and auto-resize textarea fields, using Material UI 5, React Hook Form 7.51, and Zod validation library 3.23.
•
I built a modal gallery effect manually using CSS 3D Transforms, perspective and React 18.
•
I connected around 12 backend endpoints using react-query.
•
I built custom scrollbars that work in Chrome using the ::webkit-scrollbar pseudo-element and in Firefox using the scrollbar-width and scrollbar-colour CSS properties.
TandraTech
December 2022 – July 2023
Frontend Developer
Dosedealz
April 2022 – July 2022
Backend Developer
•
I built a storage adapter for multer, the Express.js file upload middleware, that uploads to AWS S3 using @aws-sdk/lib-storage v3 for multipart uploads.
•
I used @aws-sdk/credential-providers to provide AWS credentials only via environment variables in the development environment and via instance metadata (IAM roles, groups, etc.) in production.
•
I achieved more than 80% code coverage across around six express endpoints that involved file uploads to AWS S3, unit tests of mongoose models and express controllers, and integration tests using mocha, chai, sinonjs, c8 for code coverage, the mongodb-memory-server library, and supertest.
•
I dockerized and deployed a backend ExpressJS application consisting of around 20 endpoints to AWS using Elastic Beanstalk.
•
I built Geospatial queries using MongoDB GeoJSON and 2dsphere index.
•
I built complex schema validators for objects with around 10 fields, including nested arrays and objects, using the Joi library. I also type-checked the schema against a TypeScript interface using Joi's generic parameters and strict option.
Zamn platform
April 2021 – May 2022
Fullstack Freelancer
•
In just around 10 days, I fixed a bug in the streaming virtual classroom to YouTube, Facebook, and Twitter, which used NodeJS, Puppeteer, FFMPEG, and a Chrome extension to record the virtual classroom.
•
I got into a project built on the open-source bigbluebutton virtual classrooms app, which was made up of around nine modules, each with around 250 files, incorporating Scala, Meteor.js, MongoDB, Redis, and all kinds of stuff, and in around two weeks, I started implementing features and fixing bugs on the platform.
•
I upgraded this app twice, from v2.2 to v2.3, then to v2.4.
Invest4all
April 2019 – January 2021
Fullstack Developer
•
I finished a workflow project in 1 month and 10 days that previous developers had failed to finish in years using the Camunda Platform, Wildfly, ReactJS, and TypeScript.
•
I server-side rendered dynamic ReactJS-Typescript pages using pure V8 embedded in a Kotlin backend via JNI with the Rust and rusty_v8 libraries.
•
I improved the performance of a 20-tab, 500px-height Form Viewer ReactJS TypeScript component from minutes to seconds by enabling 4x CPU throttling, without virtualisation, react-window, or similar.
•
I improved the UX for very non-technical people who didn't even know how to use a mouse, using ReactJS and TypeScript.
•
I successfully migrated the app in about 1 month from pure ReactJS to a React-Redux frontend.
•
I prerendered static pages built in ReactJS using pure Puppeteer to achieve 8x more req/sec.
•
I reduced the RAM usage of a large Kotlin Gradle project from 1.3GB to 400MB to deploy it as a Docker container on the Heroku platform.
•
I enhanced the security of the Kotlin-ReactJS project by implementing a nonce-based Content-Security-Policy, JWT Authentication, Feature Policy, HSTS, SameSite-secure-HTTP-only cookies, and scanning the project with Mozilla Observatory, Google CSP Evaluator, and SSL Labs.
Neotech Solutions
Junuary 2018 - Mars 2019
Backend Developer
•
I built hierarchical category data in PostgreSQL using the ltree extension, connected from a Node.js, Fastify.js backend with pure pg-promise, so no ORM.
•
I used NodeJS's sharp library, which uses libvips to optimise uploaded images.
•
I imported a large Excel file of data into a PostgreSQL database from a Node.js backend.
•
I used the child_process module in Node.js to unzip uploaded .zip/.rar files.
•
I achieved test coverage of 90%+ for the Node.js backend using Mocha, Chai, and Istanbul.
•
I built a tags component using InfernoJS with perfect performance, even with 100tags x 20 components on one page.
•
I made an SVG Network Graph UI using pure ReactJS. Calculating maths even for the label line length.
Skills
NodeJS 24(4 years 4 months), MongoDB 8.2(3 years 11 months), Redis 8.4(2 years 1 month), PostgreSQL(8 months), MySQL/MariaDB(2 years 7 months), Azure (8 months), AWS (2 years 4 months), Nestjs 11(2 years 2 months), React 19(7 years 4 months), Typescript 6(6 years 8 months), Next.js 16(3 years 10 months), Redux-Toolkit(1 year), Material UI 6(1 year 9 months), MUI X DataGrid v7(1 year 6 months), Storybook 10(3 years 11 months), unit testing(4 years 8 months), vitest 4(2 years 2 months), jest 30(3 years 11 months), mocha(7 months), Java/Kotlin (3 years), Ruby On Rails(6 months), Docker (2 years 3 months), Kubernetes 1.36(1 year 6 months), Git (8 years 4 months), Linux (11 years 4 months)
Education
University of Bath (QS Rank 125)
Masters
Artificial Intelligence
May 2025 – May 2027
Damascus University
Bachelor
Computer Science
September 2011 – September 2017
Profiles
LinkedIn
Github