Abdulkader Safi

Abdulkader Safi · Full stack software engineer and UI/UX designer · Kuwait

I design the product. Then I build it.

Abdulkader Safi is a full stack software engineer and UI/UX designer from Lebanon. I lead engineering at DSRPT and design web apps, mobile apps and dashboards in Figma, then write the code that ships them.

Abdulkader Safi, arms crossed, smiling
Abdulkader Safi Lead engineer at DSRPT
Case studies published
28
Years writing software
6+
Articles on the blog
143
Build diary entries
96

Selected work

Designed in Figma, shipped in code.

  • TOOLS · WEB APPLICATION In progress

    GitBasedDocs cover

    A private docs site that reads Markdown from one GitHub repo. Write in Obsidian, push, and a few seconds later the pages are live for the people you shared them with. Each project is a folder in the repo, and a reader sees only the projects an admin linked to their account. Anyone else gets the same 404 as a project that does not exist. A webhook starts a delta sync that fetches only changed files, a timed recheck covers a missing webhook, and pages are served from SQLite, so reading never calls GitHub. It renders the Markdown Obsidian and GitHub both know: Shiki code, Mermaid diagrams, KaTeX math and Obsidian callouts, plus wikilinks and image embeds. Next.js 16, React 19, next-auth v4 and Drizzle on SQLite, about 9,200 lines of TypeScript, MIT.

    • Tailwindcss
    • Typescript
    • Nextjs
    • ShadCN
    • React
    • Bun
  • TOOLS · WEB APPLICATION In progress

    MD Kanban cover

    A kanban board where every card is a markdown file on your disk, built so you can watch what an AI coding agent is doing without asking it. Each connected folder is a project, each subfolder groups work, and each task is one `.md` file whose YAML frontmatter holds status, priority, assignee, due date and labels. Dragging a card between columns rewrites the file, and the agent edits the same files from its side. That is the whole design: Jira and Linear keep state behind an API, so an agent needs credentials and a connector before it can move a card, while a folder is something it can already write to. The repo ships the contract twice, as `AGENTS.md` for any agent and as a Claude skill, and tracks its own remaining build as task files inside itself. Vue 3, Vite, TypeScript and Tailwind v4 over the browser File System Access API, about 1,800 lines, MIT.

    • Tailwindcss
    • Javascript
    • Typescript
    • Vue
  • PLUGIN · TOOLS Complete

    AI Writing Rules cover

    A Claude Code plugin that stops Claude writing like an AI. It loads a 270-word ruleset into every session, then runs a checker after every file write that flags the tells by line number and refuses to let the model move on. The rules come from 29 documented patterns, each researched into its own file with a measurable threshold: burstiness under 0.4 where human prose sits at 0.6 to 1.2, more than 20 em dashes per 1,000 words where humans use 3.2 to 10, more than one polished three-item list per 200 words. The checker is 17 regex rules and 3 statistical ones in Python with no dependencies. Tested against a sample with 14 planted tells, it caught all 14, stayed silent on clean prose, and found a real tricolon in the research files themselves.

    • Python
  • WEBSITE · WEB APPLICATION Complete

    Vouch cover

    A hiring platform for Kuwait and the GCC, designed from a blank page around one promise: every job here is real, and every employer answers. 82 screens and 642 prototype links across a 15 page website at two breakpoints, an 18 screen mobile app, and 29 dashboard screens covering job seeker, employer and internal admin. The position comes from the data on ghost jobs rather than from features, and the whole system runs on four variable collections that switch theme and language.

    • Figma

Services

One person from wireframe to deploy.

Prices are starting points. You get a fixed quote once the scope is written down and agreed.

  • UI/UX design

    User flows, Figma prototypes and design systems built on variables, so theme and language switch without redrawing screens.

    • Figma
    • Prototypes
    • Design systems

    Figma first

  • Web development

    Laravel, Next.js, React and Vue apps, from the database schema to a Docker deploy on your own server.

    • Laravel
    • Next.js
    • Filament

    From $1,000 · 4-12 weeks

  • Mobile apps

    iOS and Android apps that share one API with your website and admin dashboard.

    • iOS + Android
    • Offline-ready PWA
    • Appwrite

    From $3,000 · 6-16 weeks

  • Plugins and tools

    Figma, Obsidian, VS Code and WordPress plugins, plus Shopify themes. I publish my own, open source.

    • Figma API
    • TypeScript
    • PHP

    From $3,000 · 2-6 weeks

Writing

Articles with the numbers left in.

143 posts on web builds, AI coding tools and self-hosting. Prices, benchmarks and version numbers are checked on the day of writing.

All articles
  1. A folder of markdown files being filtered down to a smaller set by a chainable where, orderBy and limit query, with no database server involved

    Flatmark: query your markdown files like a database

    Flatmark is a Node library that indexes a folder of markdown files and gives you a chainable query API over the frontmatter. Here's what it does, where it beats Velite and Astro content collections, and the four things I'd want fixed before shipping it.

Devlogs

The build diary, bugs included.

96 short entries written while the code is still open. Each one links to its project, so you can read a build from the first commit.

All devlogs

Now building

GitBasedDocs screenshot

GitBasedDocs

A private docs site that reads Markdown from one GitHub repo. Write in Obsidian, push, and a few seconds later the pages are live for the people you shared them with. Each project is a folder in the repo, and a reader sees only the projects an admin linked to their account. Anyone else gets the same 404 as a project that does not exist. A webhook starts a delta sync that fetches only changed files, a timed recheck covers a missing webhook, and pages are served from SQLite, so reading never calls GitHub. It renders the Markdown Obsidian and GitHub both know: Shiki code, Mermaid diagrams, KaTeX math and Obsidian callouts, plus wikilinks and image embeds. Next.js 16, React 19, next-auth v4 and Drizzle on SQLite, about 9,200 lines of TypeScript, MIT.

19 entries so far.

Tailwindcss · Typescript · Nextjs · ShadCN · React · Bun

Read the series
  1. #96

    Search that quotes whatever you type

    GitBasedDocs search moved from LIKE over every page body to SQLite FTS5 kept in step by triggers. Word prefixes and accent folding came with the tokenizer. The real work was quoting input, choosing a stable order, and a backup detail about rowids.

    GitBasedDocs
  2. #95

    Backlinks that use the renderer's own link rules

    GitBasedDocs pages now show which pages link to them, resolve Obsidian aliases, open embedded PDFs and list recent changes. The backlinks reuse the functions that turn links into hrefs, so a page appears under Linked from exactly when its link works.

    GitBasedDocs
  3. #94

    Backups behind one flag in docker compose

    GitBasedDocs now has a Dockerfile, a compose file and backups you turn on with BACKUP_ENABLED. Each archive is a VACUUM INTO copy plus the asset files, and the copy is edited before it is packed so a restored app catches up on its own.

    GitBasedDocs
  4. #93

    My login rate limit was a lockout button

    Five tries per email in fifteen minutes stopped password guessing, and it also let anyone lock a person out with five wrong guesses. The other key read a header the client writes. The same review found that changing your password left your other devices signed in.

    GitBasedDocs

About

From the support desk to lead engineer.

I'm from Lebanon and lead engineering at DSRPT, with clients in Kuwait and Australia. Before any code I supervised customer care at Ooredoo for two years, taking the calls when a screen confused someone. I moved into software in 2020 and still design the screen before I build it.

Download CV ↓
  1. → now

    Lead Software Engineer

    DSRPT

    On site
  2. →

    Full Stack Developer

    QUAD Digital Media

    Hybrid
  3. →

    Full Stack Developer

    Verozone Solution EG

    Remote
  4. →

    Customer Care Supervisor

    Ooredoo

    On site

FAQ

What clients ask before they hire me.

Straight answers, with prices. Your question isn't here? Email safi.abdulkader@gmail.com.

What does a full stack software engineer do?

Builds both halves of an app: the screens people use, and the server, database and API behind them. I also design those screens in Figma first, so one person owns the product from wireframe to deploy.

How much does a website or mobile app cost?

Web builds start at $1,000 and take 4 to 12 weeks. Mobile apps start at $3,000 and take 6 to 16 weeks. Figma, Obsidian, VS Code and WordPress plugins start at $3,000. You get a fixed quote once the scope is agreed.

Can you design the app and build it?

Yes, that is the normal way I work. Flows and screens in Figma first, then the same person writes the code, so nothing is lost in a handover.

Do you work with clients outside Kuwait?

Yes. I am in Kuwait and currently work with clients in Kuwait, Australia and Lebanon. Everything runs over email and calls, so the time zone is a scheduling question, not a blocker.

Which tech stack do you use?

Laravel and Filament on the server, Next.js, React or Vue on the front end, React Native or Flutter for mobile, Tailwind for styling, and Docker on your own server. If your team already runs something else, I work in that.

Work with me

Got a product in your head? Let's put it on a screen.

Tell me what you're building, who it's for and when it has to be live. I'll reply with questions first, then a fixed quote.

Start a project