← ferjani.dev

Projects

Side projects, libraries and experiments by Khaled Ferjani.

01

Projects

Things I build and keep running.

Dojo

Short daily lessons for software engineers on architecture, DevOps, databases, security and more, in French and English. Works offline, and spaced repetition brings old topics back before you forget them.

Claude Agents Indicator

Shows which Claude Code session is waiting on you, from the Linux panel: a Wingpanel indicator for elementary OS, a tray app for KDE, GNOME and Xfce, and a waybar module. Packaged for Ubuntu, Debian, Fedora and Arch.

tuxmedic

A terminal app that finds what is wrong with a Linux desktop and says it in plain words: crashes, Wi-Fi, sound, screens, battery and 30 checks in all, each with the command that fixes it on your distro. Works on any distro and any terminal size, without root.

Vetixa

Veterinary clinic management system, in production at vetixa.tn

Skills

The Claude Code skills, guardrail hooks and mods I use every day, packaged as plugins you can install one at a time.

SplitShare

Social fitness app: build gym splits, log workouts with personal records tracked for you and suggestions for when to add weight, and share routines with the community. Web, Android and iOS.

02

Libraries

Small pieces published for others to reuse.

svelte-num-otp

OTP input component for Svelte, published on npm

03

Experiments

Weekend builds to try out a framework or an idea.

Canvas playground

2024

Drawing on an HTML canvas with Svelte 5

Astro multi-library todo

2023

One todo list built from seven UI libraries at once (Svelte, React, Vue, Solid, Lit, Preact and Astro), all sharing a single MobX store

Remix HN clone

2023

A Hacker News reader built with Remix

Qwik City + React todo

2022

A todo app mixing Qwik City and React components, with Valtio for shared state

SvelteKit forecast

2022

Weather for your current location or any city, as an installable PWA

Back to ferjani.dev

Koi photos by Martin Kammerer (CC BY-SA 4.0) and Fehlwort (CC BY-SA 3.0), background removed.