Skip to content
View NgatiaJeffers's full-sized avatar
🤯
Out of Context Emoji
🤯
Out of Context Emoji
  • 21:39 (UTC +03:00)

Block or report NgatiaJeffers

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.

Maximum 250 characters. Please don't include any personal information such as legal names or email addresses. Markdown supported. This note will be visible to only you.
Report abuse

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

Report abuse
NgatiaJeffers/README.md

Hey, I'm Jefferson Gakuya 👋

Software Engineer — Systems & Architecture

I design systems where the boundaries are explicit, the contracts are enforced, and the failure modes are understood before the first line of code is written.


🧠 What Drives Me

I don't just write code — I architect systems that scale. My work lives at the intersection of domain-driven design, distributed systems, and clean architecture. I think in bounded contexts, communicate through event buses, and sleep better when there's 90%+ test coverage.

Every system I touch starts with one question: "How do we make the next feature cheaper than the last?"


🧰 Toolbox

Languages        TypeScript · Go · JavaScript
Architecture     Domain-Driven Design · Clean Architecture · Event-Driven · Microservices
Infrastructure   Docker · Kubernetes · AWS · CI/CD
Quality          Test-Driven Development · 90%+ Coverage · ESLint · Prettier

🏗️ Architecture — Things I've Built

These aren't just projects — they're systems with stories. Each one taught me something about boundaries, trade-offs, and the cost of complexity.

💳 Dual-Payment Gateway — Ports & Adapters Pattern

Integrated two payment providers (Peach Payments + iPay) without coupling business logic to either vendor's API. Modelled the domain around a PaymentPort interface with provider-specific adapters. Domain events (PaymentInitiated, PaymentSettled) flow regardless of provider — swapping providers requires zero changes to business rules.

Key insight: The best abstractions make vendor lock-in a non-issue.

🏢 Multi-Tenant E-Commerce — 10K Concurrent Users, 99.9% Uptime

Schema-per-tenant PostgreSQL strategy with tenant-scoped Redis key namespacing. A TenantResolver middleware reads the subdomain and sets the active search_path before any ORM query. PgBouncer in transaction mode ensures schema affinity without exhausting connections. Sustained 99.9% uptime across six months.

Key insight: Isolation is cheap when you design for it from day one.

Go + Node.js Microservices — Event-Driven Decomposition

Bounded contexts (Order, Inventory, Notification, Analytics) decomposed by business capability. Go handles performance-critical services; Node.js manages event-rich Notification. Services communicate exclusively through a message bus with versioned Avro schemas — no direct HTTP in the happy path. Each service owns its datastore.

Key insight: If your services need to talk synchronously, they're not really separate services.

📱 Offline-First Mobile — Local-First Sync Engine

Local SQLite as the primary source of truth. A background Sync Engine queues mutations with monotonic sequence IDs, flushing to the remote API on connectivity. Conflict resolution uses last-write-wins at the field level with merge fallback for structured lists. The sync engine exposes a status observable driving the UI's connectivity banner.

Key insight: The network is a detail, not a dependency.


🔭 What I'm Exploring Right Now

  • Writing about system design, distributed patterns, and engineering trade-offs ✍️
  • Pushing deeper into Go for high-throughput backend services
  • Building developer tools that enforce architectural boundaries at compile time

💬 Let's Talk About

  • How to decompose a monolith without losing your mind (or your data)
  • Domain modelling that actually survives contact with production
  • The art of making infrastructure invisible to your business logic
  • Why your "microservice" might actually be a distributed monolith

Architecture is not a phase — it is the ongoing discipline of managing complexity so that each new capability costs less than the last. 🚀

Pinned Loading

  1. AskDevs AskDevs Public

    Forked from codewithvoid/AskDevs

    Tweet your technical questions to tech twitter volunteers.

    JavaScript

  2. 30-Days-Of-JavaScript 30-Days-Of-JavaScript Public

    Forked from Asabeneh/30-Days-Of-JavaScript

    30 days of JavaScript programming challenge is a step by step guide to learn JavaScript programming language in 30 days. This challenge may take up to 100 days, follow your own pace.

    JavaScript

  3. 30-Days-Of-React 30-Days-Of-React Public

    Forked from Asabeneh/30-Days-Of-React

    30 Days of React challenge is a step by step guide to learn React in 30 days. It requires HTML, CSS, and JavaScript knowledge. You should be comfortable with JavaScript before you start to React. I…

    JavaScript

  4. first-contributions first-contributions Public

    Forked from firstcontributions/first-contributions

    🚀✨ Help beginners to contribute to open source projects

  5. free-python-books free-python-books Public

    Forked from pamoroso/free-python-books

    Python books free to read online or download

  6. 100-plus-Python-programming-exercises-extended 100-plus-Python-programming-exercises-extended Public

    Forked from darkprinx/break-the-ice-with-python

    100+ python programming exercise problem discussed ,explained and solved in different ways

    Jupyter Notebook