Software developer at JoyPix · open for the right opportunity Doha, Qatar

Firas Lamouchi — full-stack developer & systems architect

I'm the only developer on JoyPix's applications platform in Doha — three web apps, a mobile app, and the infrastructure behind them. Four years working alone taught me to find failures that don't announce themselves, like code that returns 200 and is still wrong. I write each one up below.

Hiring? In short

Full-stack developer in Doha, 4 years in production. Core stack: NestJS, Rust, .NET/C#, Kotlin, TypeScript. Open to new roles, on-site in Doha.

01Who I am

Tunisian, based in Doha, usually the only developer on the project

Right now

Building JoyPix's applications platform in Doha as its only developer. Shipping Ferry on the side, and learning Kotlin for the next project.

How I work

One place to enforce each rule. Deny by default. And I don't call something done until I've used it myself the way the real user would.

→ the full set of habits

Languages

  • ArabicNative
  • FrenchFluent
  • EnglishFluent
  • GermanConversational
02Experience

Five roles, one of them a company I started

  • JoyPixSoftware Developer — sole developer on the platform2026-04 — now
  • JDLFull-Stack Developer (part-time)2026-04 — now
  • RydeSystems Developer / Operations Support2025-11 — 2026-02
  • SiccaDevCo-founder & Technical Lead2024-03 — 2025-08
  • Tunisian CloudIntern2023-06 — 2023-08
  • Tunisie TélécomIntern2023-03 — 2023-03
Full history, what I owned in each, and education
04Stack

What I build with, and why I picked it

The things I actually reach for, grouped by where they sit.

Backend
NestJSTypeScriptNode.jsPrismaPostgreSQLpgBouncerRedisRust.NET / C#
Frontend & mobile
ReactNext.jsTailwind CSSshadcn/uiViteAngularFigmaTanStack QueryZustand
Infrastructure & DevOps
DockerGitHub ActionsPM2CaddynginxTraefikProxmoxCloudflareLinux
Testing & QA
JestVitestPlaywrightStrykerGrafana k6
Security & auth
JWT / joseOAuth 2.0Noise Protocolage / ed25519Qatar PDPPLHelmet / CSPargon2 / bcrypt
The full stack, with why each beat the alternative
05Dev log

Filed by how it failed, not by where it broke

Every bug worth keeping, filed by how it failed rather than where it broke.

  • It could not have worked15
  • It said it worked13
  • Two copies drifted13
  • The safety net had a hole13
  • Only visible by using it11
  • Built, and nothing used it8
Browse the log →73 bugs · 53 notes
06Infrastructure

I run the servers too

The edge, the backups and the recovery are mine — including the box serving this page.

Weekly storage use
−80%
Frontend first load
2× faster
Backup tiers
3 · one offline
Reverse proxies
Caddy · nginx · Traefik
How it's built, and what it survived
07The story

How I got from a browser drum kit to a peer-to-peer daemon

The long version, in eight chapters.

Currently

building

JoyPix — the platform, day to day

My actual job. Three web apps, a mobile app and the infrastructure under them, as the only developer on it. Live at eduqate.qa.

shipping

Ferry — heading for release

The peer-to-peer transfer daemon goes public. Eight Rust crates, a CLI, a VS Code extension and a desktop app, all talking to one local daemon. No server anywhere.

building

OpenDerja_TN

The open corpus for Tunisian Derja — building the contributor surface on top of the backend and the task engine.