Kaiserslautern, Germany · open to senior roles

I build software that runs in production,
and I explain the decisions behind it.

I'm Arib Yousuf, a senior software engineer with 9+ years of experience in backend and full-stack development. I have worked on banking systems, public-sector platforms and smart-city APIs. Most of my client code is under NDA, so on this site I explain what I built and why I built it that way.

C# / .NET CoreNode.js / TypeScriptReact / Next.jsM.Sc. CS · RPTU
architecture decision records

Client code is under NDA. Decisions aren't.

Each record uses the standard ADR format: context, decision and consequences. Feel free to ask me about any of them in an interview. I can explain them in as much detail as you want.

ADR-001 · bankingstatus: shipped · scale: transaction alerts

Real-time SMS banking connected to a transaction switch

Context

Bank of Punjab wanted to send customers SMS alerts for balance, withdrawals, transfers and other account activity as soon as they happened. The balance in the SMS had to be correct, and we could not add load to the core banking system.

Decision

Listen to events from the IRIS transaction switch instead of polling the database. Each switch event triggers a notification. Message formatting, delivery and account routing are kept as separate parts.

Consequences

Using events meant no constant database polling. Careful handling of partial, reversed and duplicate transactions lowered the chance of sending a wrong balance.

real-time alerts based on transaction events
C#SQL Serverevent-drivenfull write-up →
ADR-002 · public-sectorstatus: shipped · scale: multi-tenant platform

Multi-tenant election management platform

Context

Many organizations needed to run their elections on one platform: onboarding, voter records, election setup and results. Each organization's data had to stay separate from the others.

Decision

Used .NET 6 with Clean Architecture and DDD. Election rules live in the domain layer and do not depend on the UI or the database. Tenant separation is enforced in the domain layer, not only in queries.

Consequences

Each tenant can be customized without copying code. Adding a new organization became a configuration task, not a development task. Domain tests run without any infrastructure.

separate, configurable elections for each tenant
.NET 6Clean ArchitectureDDDmulti-tenant
ADR-003 · smart-citystatus: shipped · scale: three product platforms

NEOM smart-city platform APIs

Context

Three smart-city platforms needed REST backends. Each one needed clear domain boundaries, high availability and the ability to grow on its own. The deadlines were tight.

Decision

Built modular .NET Core services on top of a shared core. Each platform owns its own domain, but they share common code for login, logging and database access instead of writing it three times.

Consequences

Shared login, logging and data-access code meant less duplicate work, while each platform still kept its own clear boundaries.

modular APIs for three smart-city platforms
.NET CoreMSSQLRESTperformance
ADR-004 · commercestatus: shipped · scale: consumer app + CRM

Grocery platform with online payments

Context

A grocery business in Cyprus needed a customer app and a CRM for orders, stock and payments. When something failed, the system had to show it clearly.

Decision

Built the front end with TypeScript and React on top of a safe payment integration. Orders are idempotent, failures have their own clear states, and payment reconciliation was built in from the start.

Consequences

Idempotent orders, clear failure states and reconciliation made payments easier to run and debug, and stopped duplicate orders.

ordering and CRM with reliable payments
TypeScriptReactpayments
ADR-005 · personal · AI toolingstatus: shipped · scale: solo project

An AI coding agent where the server never sees your code

Context

A coding agent in the terminal needs to read code, edit files and run shell commands. If the server runs these tools, every user's private code and shell access go through a third party, which most teams will not accept. Also, a "plan mode" that only relies on prompt instructions is not safe, because the model can ignore it.

Decision

The server only defines the tool schemas and has no tool code. The CLI runs the tools locally, limited to the project folder, and keeps the agent loop going on its own. Plan mode gives the model only read-only tools. Build mode adds write and shell tools. This is enforced by the tool list, not by the prompt.

Consequences

Code and shell access stay on the user's machine. In Plan mode the model cannot edit files because there is no write tool to call. Billing is based on tokens, uses idempotent usage events, and checks the user's balance before calling the model.

agent harness for Anthropic and OpenAI models
TypeScriptBunHonoPrismaagentsfull write-up →
capabilities

My tech stack.

Items in bold are the tools I use every day and know well.

Backend
  • C# / .NET Core
  • Node.js / Express
  • REST API design
  • RabbitMQ / event-driven
  • SignalR / real-time
Frontend
  • TypeScript
  • React / Next.js
  • Vue.js
  • Tailwind CSS
  • Flutter (mobile)
Data & Ops
  • SQL Server / PostgreSQL
  • EF Core / query tuning
  • Docker
  • Azure
  • CI/CD · Git
changelog

9 years of building production software.

I have worked on banking, public-sector, smart-city, healthcare and business systems.

2022 - present · Kaiserslautern
Senior Software Engineer (Working Student, part-time)
Layer Four GmbH

Built Flutter Web apps for German business clients, including a field-service and admin portal and a GIS platform with ArcGIS maps and Azure AD login. Also worked on features for project-management and HR systems built with Next.js and .NET.

2020 - 2021 · remote
Senior Software Engineer
Green Light Labs

Designed .NET Core and SQL Server APIs for three NEOM smart-city platforms. Each platform had its own modules, and they shared common code for login, logging and database access (ADR-003).

2019 - 2020
Software Engineer
Binaro

Built a grocery ordering and payment platform for a client in Cyprus (ADR-004), an immigration case-management system with React and .NET Core, and a real-time survey app.

2018 - 2025 · part-time
Freelance Software Engineer
Independent · incl. Lodestone

Built full projects from start to finish: a multi-tenant election platform (ADR-002), the O-WILL will-planning app for the UAE, and a tool that keeps QuickBooks and Salesforce data in sync both ways.

Jan 2018 - Jul 2019 · Karachi
Software Engineer
M3 Technologies

Built banking and business systems in C#/.NET. This included connecting Bank of Punjab's IRIS transaction switch to a real-time SMS banking service (ADR-001), and an SMS complaint system for an electricity company.

Apr 2017 - Dec 2017 · Karachi
Junior Software Engineer
Curve Technologies

Built and maintained web apps for banking and insurance, including a bank's public website and an insurance policy system, using C#, SQL Server, JavaScript and AJAX.

M.Sc. Computer Science
RPTU Kaiserslautern-Landau, Germany
completed 2026 · focus: intelligent systems
B.Sc. Computer Science
Karachi Institute of Economics & Technology
2017 · GPA 3.5/4.0 · Dean's Honor Student · Teaching Assistant
contact

Let's talk.

I'm looking for senior backend or full-stack roles in Germany, remote or on-site. Email is the fastest way to reach me. I'm happy to go through any of my projects in detail.