Software engineer · working in the field since 2013

I build business systems
and developer tools.

I work from the domain model and data logic through to the final interface, with a core focus on .NET, desktop applications, and backend systems that must remain clear and maintainable.

Track
2013 — Present
Building software products and systems across desktop and web.
Core experience
C# / .NET
Focus
Desktop + Backend

01 / Selected work

Projects that show
the problems I build for.

What was built and why—without outcomes or metrics that cannot be substantiated.

.NET product · In development ROOMSHARP

A data layer generated
at build time.

RoomSharp is a Room-style ORM for .NET. It analyzes entities and DAO interfaces to generate type-safe data access while keeping SQL and the database provider visible.

4 providersSQLite, SQL Server, PostgreSQL, and MySQL
Build timeSource generation instead of reflection in generated DAO paths
Companion toolsMigrations, CLI, dependency injection, and query extensions

The source is not publicly available yet. Its public release is planned for version 1.0.

GENERATION PATH

INPUTEntities
+ DAO Interfaces
BUILD TIMESource
Generator
OUTPUTType-safe
Data Access
  • SQLite
  • SQL Server
  • PostgreSQL
  • MySQL
Generated at compile time
Private desktop productACCOUNTS MANAGER LITE

Accounting software for everyday work.

A desktop application for accounts, entries, and reporting. It is built around data integrity and efficient recurring operations—not the number of screens it can advertise.

C# / .NETDesktopDapperEncrypted Backup
Problem

Manage accounts, transactions, and reports locally, with a real need for archiving and recovery.

What was built

Accounts and entries, monthly and grouped reports, archiving, permissions, and encrypted backups.

Key decisions

Desktop for local work, direct and explicit data access, and a recovery path that does not rely on human memory.

02 / Public libraries

Small problems deserve
clear solutions.

Public libraries and design explorations across .NET and Kotlin.

More repositories on GitHub

03 / How I decide

Constraints first.
Technology second.

Three examples that connect engineering judgment to actual work instead of generic principles.

01

Data integrity belongs in the domain model.

In accounting systems, balance, archiving, and audit rules are not validation to add later; they are boundaries to build around.

ACCOUNTING
02

Move work to build time when possible.

In RoomSharp, DAO generation makes more mistakes discoverable earlier and reduces dynamic work at runtime.

ROOMSHARP
03

The platform follows the product boundary.

I choose desktop when files, offline work, and system integration are central—and web when access and distribution matter more.

PLATFORM

04 / About

I work where systems engineering
meets product experience.

I am Safwan Abdulghani, a software engineer working in the field since 2013. My core experience is in C# and .NET, supported by hands-on work across other languages and platforms when the project requires them.

I prefer problems that require domain understanding, explicit data boundaries, and an interface that reduces complexity instead of passing it on to the user. I work from Riyadh or remotely.

Areas

Business systems
Desktop applications
Backend services
Developer tools

Technologies

C# / .NET
TypeScript
Kotlin
Rust & C++

05 / Contact

Start with the problem,
before choosing the technology.

For a product, internal system, or developer tool, send a short outline of the problem and its main constraints.

info@safwan.pro GitHub / safwa1 ↗