Skip to content

Directus specialist

I don't just build with Directus.I help build Directus.

Backend architecture, custom extensions, and deployment for businesses building on Directus — from data model to production.

Free 15-min callSee the workMumbai, India · UTC+5:30

Track record

merged pull requests in directus/directus
5merged pull requests in directus/directus
extensions published on the Directus Marketplace
3extensions published on the Directus Marketplace
countries I've shipped work in
10countries I've shipped work in

Some clients are happy to be named; most contracts don't allow it. Either way, here's what the work actually was.

  • ArmeniaArmenian Record ArchiveCultural archiveA submission and review workflow for a public archive of Armenian music. Visitors contribute records; an editor queue lets the team review and approve each one before it becomes public, so the archive stays open to contributions without losing editorial control.2025

What the client never sees

Permissions you can actually test.

The same patient, two logins. On the left the form ends at Preferred Language; on the right it continues into anticoagulant therapy and a penicillin allergy. That is the API refusing the fields, not a hidden div.

  • Field-level rules, so a role is denied a column and not just a form
  • Multi-tenancy as a row filter no application code can forget
  • 108 automated checks that assert what each role must NOT reach
  • Provisioned as reviewable code, not clicked into a browser
See the schema on GitHub
The same patient record shown to a receptionist and to a dentist — the receptionist’s form ends where the clinical fields begin

Most of these started as a bug I hit on client work. I filed the issue, then sent the fix — which is usually faster than waiting, and means the next person never hits it.

Seed Studio collection picker inside the Directus admin

Seed Studio

Schema-aware test data for any Directus project, in one click.

Reads your live schema, detects what each field should contain from its type, interface, name and validation rules, resolves M2O relationships and file references, then writes realistic rows in batches with live progress.

  • 60+ field-name heuristics
  • Per-field overrides with preview
  • Dry run before writing
  • Saved presets per collection
npm downloads, last year
417 npm/yr
GitHub stars
2 stars
Language
TypeScript

npm i directus-extension-seed-studio

No UI — configured by environment

FILE_SCANNER_MODE=tcp
FILE_SCANNER_HOST=clamav
FILE_SCANNER_ON_INFECTED=delete
FILE_SCANNER_ON_SCAN_ERROR=allow

File Scanner

ClamAV malware scanning on every upload.

Directus ships no malware scanning. Any instance taking uploads from untrusted users stores whatever gets pushed at it — and that's a hard blocker for GDPR, ISO 27001 and SOC 2. This hooks the upload pipeline and scans each file before it lands.

  • Delete, quarantine or log-only
  • Audit log as a queryable collection
  • Signed webhooks on infection
  • Never breaks uploads on scanner outage
npm downloads, last year
215 npm/yr
Language
TypeScript

npm i directus-extension-file-scanner

Image URL Preview rendering an external image inside a Directus form

Image URL Preview

Preview any external image URL, in forms and in tables.

Directus previews only files it manages itself. Store image URLs as plain strings — CDN links, third-party API responses — and you see raw text. This ships an interface and a display in one install so both views render the image.

  • Works on any string or text field
  • Loading and error states
  • Click to enlarge
  • Native Directus 11 theming
npm downloads, last year
439 npm/yr
GitHub stars
4 stars
Language
Vue

npm i directus-extension-image-url-preview

Custom CMS without the bloat.

I build scalable, headless backends using Directus, tailored exactly to your project's needs. I've used it to power digital archives, multilingual blogs, e-commerce catalogues, CRMs, internal quality tools and travel sites — public-facing or internal, Directus gives the control to do it right.

What I deliver

Structured collections & relationships
Modelled on your data, not bent to fit a template.
Granular roles & permissions
Secure access for teams or individual users, down to the field.
Flows, webhooks and queues
Automate tasks, notify people, schedule actions.
Transactional & marketing email
Automated and integrated with the provider you already use.
REST & GraphQL integration
A clean API surface for any frontend.
PDF generation & document workflows
Generated from your live data, not pasted together.
Custom endpoints, hooks and actions
Advanced backend behaviour beyond what the UI exposes.
Fully custom admin UI
Interfaces, modules, layouts — or an entirely custom Directus build.
Deployment-ready setups
Docker, NGINX, and cloud or VPS hosting you can hand to anyone.

If you're already using Directus, or weighing it for your next project, let's talk about building something flexible and future-proof.

Free 15-min call
  • Ahmad was communicative, patient, and did a good job of showing his work. He provided 2 options and related guidance and then implemented the one we chose. He made videos, took screenshots and hopped on calls to show and review his work and ensure he was on the right track.

  • Some people are good at communication and some are good at development. Ahmad has both: his expertise and communication skills helped understand issues and select the best option to fix them. I can highly recommend!

    Bernhard Herbst

    Consultancy engagement

  • Ahmad is an exceptionally talented individual in the field of web development. His perspective on various topics and problem-solving skills are highly professional. Additionally, he is a very reliable person. I am happy to have met him.

    Fatma Can Yörükoğlu

    Code and architecture review

Remote by default, across ten countries.

Most of my work is with businesses and agencies who need a backend specialist rather than another generalist. I work from Mumbai, India and overlap comfortably with European and US mornings.

World map marking client countries: Armenia, France, Germany, Mexico, Netherlands, Portugal, Thailand, Turkey, UAE, United States.

Mostly about whether Directus is the right tool at all — which is usually the real question.

When is Directus a better choice than a traditional CMS?

When your content isn't shaped like blog posts. Directus sits on top of a real SQL database and exposes whatever you model — products with variants, bookings with rules, an archive with its own taxonomy — over REST and GraphQL. Traditional platforms make you bend that into pages and posts, then fight the parts that don't fit. If you already know your data model, Directus lets you build it directly.

Can Directus handle a multilingual site properly?

Yes, and it's one of the better reasons to pick it. Translations are part of the data model rather than a plugin, so a new language is configuration rather than a migration. Media can be linked per translation too, so a Japanese page can serve different imagery from the English one. I've shipped a storefront running seven languages including right-to-left Arabic on this model.

Is Directus production-ready for e-commerce and business systems?

It is, provided the permissions model is built properly. Directus separates roles from policies and supports field-level read and write rules, which is what lets several teams share one instance safely. The failure mode I see most often isn't Directus — it's four people sharing one admin account because nobody modelled access at the start.

What happens when I need something Directus doesn't do out of the box?

You extend it. Custom endpoints, hooks and actions cover backend behaviour; custom interfaces, modules, layouts and displays cover the admin UI. I've published three extensions to the Directus Marketplace and have five pull requests merged into the Directus core itself, so when something needs changing at the framework level I can usually do it rather than work around it.

Can Directus be self-hosted, or am I locked into their cloud?

Self-hosting is fully supported and is what I usually recommend when you care about data residency or want to run alongside existing infrastructure. I deploy with Docker and NGINX to any cloud or VPS, and hand over a setup your own team can run. Directus Cloud is a fine option too — the tradeoff is that some extensions, mine included, need a daemon or filesystem access that managed hosting doesn't allow.

Do you take over existing Directus projects?

Often, yes. Typical starting points are a schema that's grown past what it was designed for, a permissions model nobody trusts, or a build that works but nobody can deploy. A short call is usually enough to tell whether the fix is small or whether the data model needs rework — and I'll say which it is plainly.

How do engagements usually work?

Three shapes, most of the time. A short audit of an existing instance with written findings; a scoped build where I own the backend from data model to deployment; or ongoing work alongside your team. The free fifteen-minute call exists to work out which one you actually need — including telling you when it's none of them.

Ahmad Khan, Directus specialist

Work with me

Fifteen minutes, no pitch.

Tell me what you're modelling and I'll tell you whether Directus is the right call — including when it isn't. If it is, you'll leave with a rough shape for the schema.

UTC+5:30 · replies within a day

Tell me what you're building.

A sentence about the data you're modelling is plenty to start. I reply within a day, and I'll say so plainly if it isn't a good fit.

Based in
Mumbai, India

Goes straight to my inbox. Never shared.