# Sanfor2004 — Ahmed Abdelaziz Hanafy (Sanfor) > Product-Minded Software Engineer (Backend, APIs & Automation) based in Alexandria, EG. Backend, automation, AI integration and payments that save businesses hours of manual work. By Ahmed (Sanfor), Alexandria. ## Summary & Verified Track Record - **Name**: Ahmed Abdelaziz Hanafy (known online as **Sanfor**, handle `sanfor2004`) - **Positioning**: Product-Minded Software Engineer (Backend, APIs & Automation) - **Location**: Alexandria, Egypt (working remotely with international clients) - **Track Record**: 5.4M+ leads processed, 53,000+ orders handled, $1.35M+ in payments processed (Across 3+ years at Skylimit LLC building lead-gen, telephony and payments systems. Telephony & payments pipelines on Twilio, Plivo and Stripe handling 339,000+ messages and calls a month). - **Trusted By**: [ErateApp](http://erateapp.com/), [Skylimit](https://skylimitapp.com/), [Isomorphic](https://theisomorphic.com/) and more. - **Book a Free Call**: [Cal.com](https://cal.com/sanfor2004/free-call) - **Business Email**: contact@sanfor2004.com - **Full Context File**: [https://sanfor2004.com/llms-full.txt](https://sanfor2004.com/llms-full.txt) ## Core Services - **Backend & APIs**: Laravel, Django and Node services that stay fast under real traffic. - **Automation**: Spreadsheet and copy-paste work, turned into pipelines that run themselves. - **AI integration**: LLMs wired into real workflows, with guardrails, not demos. - **Payments**: Checkout, subscriptions and payouts that reconcile to the cent. ## ERP & Systems Integration ([https://sanfor2004.com/services/erp/](https://sanfor2004.com/services/erp/)) Supported platforms: Odoo, SAP, Microsoft Dynamics 365, NetSuite. - **Tier 01 — Custom ERP Integrations & API Connectors**: Connect your e-commerce stack to Odoo, SAP or Dynamics 365 with clean, documented pipelines that hold up under real traffic. (Shopify / WooCommerce → Odoo / SAP / D365 order pipelines; E-invoicing connectors (UBL, Factur-X, ZUGFeRD); Custom REST & SOAP middleware with retry and dead-letter queues; Webhook management and real-time event routing) - **Tier 02 — End-to-End ERP Setup & Deployment**: Full configuration from a clean slate — modules, database, access control and data migration — without business interruption. (Module selection, configuration and chart-of-accounts setup; Clean PostgreSQL / MySQL database initialisation; Role-based access control (RBAC) and multi-company setup; Legacy data migration with validation and reconciliation reports) - **Tier 03 — Module Customisation & Workflow Automation**: Custom Python modules, PDF document layouts and multi-tier approval rules built exactly to your business logic — not bolted on top of defaults. (Custom Odoo Python modules (ORM models, wizards, views); QWeb PDF templates: invoices, delivery slips, purchase orders; Multi-tier approval workflows (purchase, expense, leave); Automated scheduled actions and server-side hooks) - **Tier 04 — Migration Recovery & Maintenance**: Fix broken integrations, resolve sync bottlenecks and keep your ERP running cleanly month over month. (Broken webhook diagnosis and rebuild; Sync bottleneck profiling and resolution; API rate-limit handling and back-off strategies; PostgreSQL query tuning and index optimisation) ### ERP Frequently Asked Questions - **Which ERP platforms do you integrate and customise?** I work across Odoo, SAP, Microsoft Dynamics 365 and Oracle NetSuite, connecting them with e-commerce platforms (Shopify, WooCommerce), payment processors (Stripe), telephony (Twilio, Plivo), e-invoicing standards (UBL, Factur-X, ZUGFeRD) and custom REST or SOAP APIs. - **Can you fix a broken ERP sync or migration without rebuilding from scratch?** Yes. Tier 04 covers migration recovery and maintenance: diagnosing silent webhook failures, profiling database and queue bottlenecks, adding idempotent retry and dead-letter handling, and tuning PostgreSQL or MySQL queries so your existing integration holds up under production load. - **How do you prevent duplicate orders or lost data between Shopify and an ERP?** Every connector is built around idempotency keys, verified webhook signatures, persistent retry queues with exponential back-off and dead-letter alerting. If an ERP endpoint times out or rate-limits, events are queued and replayed cleanly without duplicating orders or invoices. - **Do you build custom Odoo modules and QWeb PDF reports?** Yes. I write custom Python modules on Odoo ORM (models, views, wizards, scheduled actions, multi-tier purchase and expense approval rules) and custom QWeb PDF layouts for invoices, delivery slips and purchase orders—isolated in clean add-on modules so upgrades stay straightforward. - **How does an ERP project start and how is pricing structured?** We start with a free call on Cal.com where you walk me through the workflow or broken sync. You then receive a short written plan with a clear scope, timeline and fixed price. Once delivered, all code and documentation are yours to keep with no vendor lock-in. ## Client Case Studies - [Lead-gen & loan platform — Skylimit LLC](https://sanfor2004.com/projects/skylimit/): Built from scratch: 5.4M+ leads, 53,000+ orders, $1.35M+ in payments processed. (Stack: PHP, Twilio, Plivo, Stripe, IVR) - [eRateApp.com — School collaboration platform](https://sanfor2004.com/projects/erateapp/): Adopted by 200+ schools in its first two months. (Stack: PHP, JavaScript, MySQL, WebSocket) ## Products - [360Vision](https://github.com/sanfor2004/360vision) (Browser-based 360° tour studio): Authoring, hotspots, floor plans and a viewer, end to end. (Stack: Next.js, Three.js, Prisma, MySQL) - **Zomzam** (Professional operating system): Life, CRM and more on one identity. In progress. (Stack: Product, Brand, Systems) ## Open-Source Software & Tools - [php-hls-streamer](https://github.com/sanfor2004/php-hls-streamer) (HLS streaming backend): Chunked ingestion, async transcoding, renditions and cloud upload. (Stack: PHP, FFmpeg, HLS) - [XGS](https://github.com/sanfor2004/XGS) (Recon & dorking utility): Searches standard and onion sites. 60+ GitHub stars. (Stack: Python, Security) - [XCVE](https://github.com/sanfor2004/XCVE) (CVE lookup tool): Fast vulnerability research against CVE.MITRE.ORG. (Stack: Python, Security) - [BigDPP](https://github.com/sanfor2004/BigDPP) (Discord operations bot): Moderation, audits and automation for a 450-member server. (Stack: C++20, PostgreSQL, Docker) - [Design-Patterns-23](https://github.com/sanfor2004/23-Design-Patterns) (All 23 GoF patterns): Plain-language docs with C++20 examples. (Stack: C++20, Docs) - [Multi-Region i18n Translator](https://github.com/sanfor2004/Multi-Region-Tag-Translator-i18n) (Localization system): Region-aware text and image delivery. (Stack: JavaScript, PHP) ## Technical Articles - [CVE-2026-96889: when an SVG upload can free memory your parser still needs](https://sanfor2004.com/articles/cve-2026-96889-librsvg-use-after-free/) (Backend): The librsvg use-after-free explained: which servers render SVG uploads (libvips, ImageMagick, thumbnailers), how to check your version, and what to do now. - [CMake Explained for Beginners: Targets, Libraries, and Builds](https://sanfor2004.com/articles/cmake-explained-for-beginners/) (C++): Build a C++20 library, executable and test with CMake. Learn targets, PUBLIC vs PRIVATE vs INTERFACE, out-of-source builds and six common mistakes. - [Build a C++ Discord Bot with DPP](https://sanfor2004.com/articles/cpp-discord-bot-dpp/) (C++): Build a /ping slash-command Discord bot in C++20 with DPP and CMake, keep the bot token out of your code, and fix the five most common startup failures. - [Build a Desktop App with Electron and Next.js](https://sanfor2004.com/articles/electron-nextjs-desktop-app/) (Project Engineering): Package a Next.js static export in Electron with TypeScript: a custom protocol instead of file://, a one-method preload bridge, a starter CSP, and Forge. - [Redis Internals: From a Command to Memory and Disk](https://sanfor2004.com/articles/redis-internals/) (Systems): Follow one Redis command from socket to memory to disk: event loop, RESP, encodings, expiry vs eviction, RDB vs AOF and replication, with ops answers. - [Design Patterns Overview (Creational, Structural, and Behavioral Patterns)](https://sanfor2004.com/articles/design-patterns-overview/) (Design Patterns): All 23 GoF design patterns by category (creational, structural, behavioral), each with illustrated Python and C++20 lessons and advice on when to skip it. - [Abstract Factory (Creational Pattern)](https://sanfor2004.com/articles/design-pattern-abstract-factory/) (Design Patterns): Abstract Factory in Python and C++20: one theme object builds matching buttons and panels. Plus how it differs from Factory Method and when it is overkill. - [Adapter (Structural Pattern)](https://sanfor2004.com/articles/design-pattern-adapter/) (Design Patterns): Wrap a legacy Fahrenheit sensor so a Celsius dashboard can use it, in Python and C++20. Plus Adapter vs Facade, and why to skip it when you own both sides. - [Bridge (Structural Pattern)](https://sanfor2004.com/articles/design-pattern-bridge/) (Design Patterns): Notices vary by urgency, delivery by channel (email, SMS). See how Bridge keeps both axes apart in Python and C++20, and when a parameter is all you need. - [Builder (Creational Pattern)](https://sanfor2004.com/articles/design-pattern-builder/) (Design Patterns): Build a validated HTTP request config step by step in Python and C++20. Learn why a fluent interface alone is not a Builder, and when named arguments win. - [Chain of Responsibility (Behavioral Pattern)](https://sanfor2004.com/articles/design-pattern-chain-of-responsibility/) (Design Patterns): Chain auth and spending-limit checks as handlers, like request middleware, in Python and C++20. Compare it with Decorator, and see when two ifs are better. - [Command (Behavioral Pattern)](https://sanfor2004.com/articles/design-pattern-command/) (Design Patterns): Turn editor actions into objects with execute and undo, in Python & C++20. Covers undo history, job queues, Command vs Memento, and when a plain call wins. - [Composite (Structural Pattern)](https://sanfor2004.com/articles/design-pattern-composite/) (Design Patterns): Get the size of a file or a nested folder through one interface, in Python and C++20. Why Composite fits real trees but misleads for graphs and flat lists. - [Decorator (Structural Pattern)](https://sanfor2004.com/articles/design-pattern-decorator/) (Design Patterns): Add milk to a coffee order any number of times without a class per combination, in Python and C++20. Real uses like stream layers, and Decorator vs Proxy. - [Facade (Structural Pattern)](https://sanfor2004.com/articles/design-pattern-facade/) (Design Patterns): Hide stock, payment and shipping behind one checkout call, in Python and C++20. When a facade helps SDKs and service layers, and when it is a pass-through. - [Factory Method (Creational Pattern)](https://sanfor2004.com/articles/design-pattern-factory-method/) (Design Patterns): An alert job that picks email or console senders per environment, in Python and C++20. Why a switch is not Factory Method, and when to pass a sender in. - [Flyweight (Structural Pattern)](https://sanfor2004.com/articles/design-pattern-flyweight/) (Design Patterns): Share glyph data across many characters, each with its own position, in Python and C++20. Measure first: sometimes the lookups cost more than they save. - [Interpreter (Behavioral Pattern)](https://sanfor2004.com/articles/design-pattern-interpreter/) (Design Patterns): Model permission rules such as "role A and role B" as an expression tree you can evaluate, in Python and C++20. Know when to use a real parser instead. - [Iterator (Behavioral Pattern)](https://sanfor2004.com/articles/design-pattern-iterator/) (Design Patterns): Let callers loop over a playlist without touching its storage: __iter__ in Python, a custom forward iterator in C++20, and when standard ranges are enough. - [Mediator (Behavioral Pattern)](https://sanfor2004.com/articles/design-pattern-mediator/) (Design Patterns): Username and password fields report to one form that enables the login button, in Python and C++20. Mediator vs Observer, and when one callback is plenty. - [Memento (Behavioral Pattern)](https://sanfor2004.com/articles/design-pattern-memento/) (Design Patterns): Checkpoint an editor before an experimental edit and restore it without exposing internals, in Python and C++20. Memento vs Command, and when to skip it. - [Observer (Behavioral Pattern)](https://sanfor2004.com/articles/design-pattern-observer/) (Design Patterns): A stock notifies displays it does not know: explicit unsubscribe in Python, weak_ptr listeners in C++20. When a direct call or a transaction fits better. - [Prototype (Creational Pattern)](https://sanfor2004.com/articles/design-pattern-prototype/) (Design Patterns): Spawn game enemies from a configured template without knowing their concrete type, in Python and C++20 with unique_ptr. When a plain copy is all you need. - [Proxy (Structural Pattern)](https://sanfor2004.com/articles/design-pattern-proxy/) (Design Patterns): Load a gallery image from disk only on first display, then reuse it, in Python and C++20. Plus access-control proxies, and when a proxy is just overhead. - [Singleton (Creational Pattern)](https://sanfor2004.com/articles/design-pattern-singleton/) (Design Patterns): A process-wide metrics counter as a Singleton in Python and C++20, the testing cost of global state, and why passing the dependency in usually wins. - [State (Behavioral Pattern)](https://sanfor2004.com/articles/design-pattern-state/) (Design Patterns): A door that acts differently when open or closed, each state picking the next, in Python and C++20. State vs Strategy, and when an enum table is enough. - [Strategy (Behavioral Pattern)](https://sanfor2004.com/articles/design-pattern-strategy/) (Design Patterns): Choose a shipping-fee rule at checkout by passing in a callable, in Python and C++20. Fits pricing, ranking and retry policies; skip it for one stable if. - [Template Method (Behavioral Pattern)](https://sanfor2004.com/articles/design-pattern-template-method/) (Design Patterns): Build reports from a fixed begin, read, format, end skeleton with overridable hooks, in Python and C++20. Template Method vs Strategy, and when to compose. - [Visitor (Behavioral Pattern)](https://sanfor2004.com/articles/design-pattern-visitor/) (Design Patterns): Compute tax across books and food without editing each item class, using accept and visit in Python and C++20. Compare std::visit, and when new types hurt. - [360Vision: Building a 360° Virtual Tour Studio in Next.js](https://sanfor2004.com/articles/360vision-nextjs-virtual-tour-studio/) (Project Engineering): How 360Vision links panoramas with hotspots and floor plans in Next.js and Three.js: angle-based hotspots, Sharp image variants, and JSON autosave. - [How I Used AI, References, and Review Loops to Build Mint Woodland Pet](https://sanfor2004.com/articles/ai-reference-review-loops-mint-woodland-pet/) (AI Engineering): How I turned AI-generated pixel art into a Windows desktop pet: reference checklists, deterministic sprite packing, and review loops that caught defects. - [Designing a Reliable Background Job Pipeline](https://sanfor2004.com/articles/designing-a-reliable-background-job-pipeline/) (Backend): Design background jobs that survive production: job contracts, idempotency keys, retries with backoff, backpressure, timeouts, and a launch checklist. ## Key Pages & Profiles - [Home](https://sanfor2004.com/) - [About Ahmed (Sanfor)](https://sanfor2004.com/about/) - [ERP & Systems Integration Services](https://sanfor2004.com/services/erp/) - [Work & Case Studies](https://sanfor2004.com/projects/) - [Articles](https://sanfor2004.com/articles/) - [Art Gallery](https://sanfor2004.com/art/) - [Contact & Booking](https://sanfor2004.com/contact/) - [RSS Feed](https://sanfor2004.com/rss.xml) - [LinkedIn](https://www.linkedin.com/in/sanfor2004) - [GitHub](https://github.com/sanfor2004) - [Upwork](https://www.upwork.com/freelancers/~0108502d49f0acdd84) - [Contra](https://contra.com/sanfor2004) - [DEV](https://dev.to/sanfor2004) - [Medium](https://medium.com/@Sanfor2004) - [X](https://x.com/Sanfor2004_)