Projects
Systems software, security-minded web platforms, and Linux desktop tools I've built.
MedicalBookingHub
github.com/vrdq/MedicalBookingHubI built MedicalBookingHub as a full-stack telemedicine and appointment booking platform to handle patient scheduling, doctor rosters, consultation messaging, and administrative management. It includes bilingual localization (Arabic and English) with native Right-to-Left (RTL) interface support.
On the backend, I used Express 5 and Drizzle ORM on PostgreSQL with database transaction locks to prevent race conditions and double-booking on consultation slots. I also built an in-app consultation messaging system with document validation, role-based access control (RBAC), and transactional email with automated failover across Resend, Brevo API, and SMTP.
Install
git clone https://github.com/vrdq/MedicalBookingHub.git
cd MedicalBookingHub/MedicalBookingBackend && npm install
cd ../MedicalBookingFrontend && npm install
Cairo Crosshair App
github.com/vrdq/crosshair-overlay
Most Linux crosshair tools rely on X11 root window hacks that break under native Wayland, or open standard windows that steal mouse clicks and interrupt games. I wrote cairo in C to render directly on Wayland's overlay layer surface using gtk-layer-shell, enabling input passthrough so clicks and mouse motion pass straight through to the underlying game.
I named it after both the Cairo 2D vector graphics library that powers its subpixel anti-aliased reticles and my home city Cairo, Egypt. The daemon catches SIGUSR1 signals: running cairo reload triggers a signal handler that re-reads config and redraws without restarting the process. I also built cairo-gui, a companion Qt6 configuration utility that matches system themes.
Install
git clone https://github.com/vrdq/crosshair-overlay.git
cd crosshair-overlay
./install.sh
Spoff
github.com/vrdq/spoff
I was frustrated with the official Spotify desktop client using excessive RAM and ignoring Wayland tiling rules, so I built Spoff—a terminal audio player in Python with Textual that streams tracks from YouTube Music while syncing my Spotify playlists. Played tracks cache locally to ~/.local/share/spoff/cache/ for offline listening.
I run mpv as a background subprocess and control playback over a local Unix domain socket. For the visualizer, I route raw PCM audio through a cava FIFO pipe to draw 60 FPS spectrum bars directly in the terminal. I also built in synchronized LRC lyrics seeking and a D-Bus MPRIS 2 interface so hardware media keys, Waybar, and lockscreens work seamlessly. It is published on PyPI and listed on Awesome TUI as a verified maintainer project.
Install
# Install with pipx (any distro)
pipx install spoff
# Build from source
git clone https://github.com/vrdq/spoff.git
cd spoff && ./install.sh
Tierlist Discord Bot
github.com/vrdqCompetitive Minecraft communities maintain verified player skill tiers across several independent tier lists (like VTL, Light, and Lunar). Checking a player's standing previously meant searching through multiple separate spreadsheets and sites.
I built a custom Discord bot that interfaces with tierlist APIs across community TLs, allowing players and staff to query verified tiers and ranking histories directly through Discord commands.
I integrated Mojang's REST API to resolve Minecraft usernames to permanent UUIDs to stop players from spoofing ranks by changing names, and parsed live tier data into clean Discord embeds.
WhitelistLink
github.com/vrdq/WhitelistLinkI built WhitelistLink to automate player onboarding and whitelist management between Discord and Minecraft servers running Paper/Spigot 1.21.1. Instead of staff manually executing console commands and manually distributing roles, the bot handles identity verification, UUID resolution, and role assignment end-to-end.
It interfaces directly with Mojang's REST API to resolve usernames to immutable UUIDs, performs live PvP Tiers checks, and automatically grants configured Discord roles when a player is whitelisted. To keep public chat clean and prevent command spam, I restricted execution to ticket channels (such as channels matching ticket- prefixes) and routed all staff actions (/whitelist, /unwhitelist, /whitelistrelink) to an audit log channel.
The architecture supports dual runtime modes: it compiles as a native Paper server plugin with in-game hot reload (/whitelistlink reload) or runs detached as an independent standalone Discord bot process.
Build & Install
git clone https://github.com/vrdq/WhitelistLink.git
cd WhitelistLink
mvn clean package
# Or use the included build script:
./build.sh
JetBrains Mono Everywhere
github.com/vrdq/jetbrains-web
I wanted a cohesive desktop environment where web browsing shares my system font—JetBrains Mono. Standard userstyles or brute-force font extensions use global * { font-family: ... !important } declarations, which break modern websites by replacing icon glyphs with missing font rectangles, clipping SVG graphics, and distorting monospace code blocks.
I wrote jetbrains-web as an unpacked Manifest V3 extension for Brave and Chromium browsers to enforce typography cleanly without visual breakage. It pairs declarative stylesheet overrides with a dynamic DOM engine:
On the CSS side, it overrides design system font tokens (Tailwind's --tw-font-sans, Bootstrap's --bs-font-sans-serif, Primer, Material) and applies an explicit :not() selector exclusion filter to preserve pre, code, kbd, SVGs, and known icon font classes.
On the script side, it uses a TreeWalker to traverse text nodes directly rather than blanket-styling parent containers. It skips Unicode Private Use Area (PUA) codepoints where custom icon ligatures reside, pierces open Shadow DOM boundaries, and runs a debounced MutationObserver to catch content updates in heavy SPAs without layout thrashing.
Install
git clone https://github.com/vrdq/jetbrains-web.git
# In Brave / Chrome: navigate to chrome://extensions
# Enable Developer Mode -> Load unpacked -> select jetbrains-web
Dotfiles
github.com/vrdq/dotfilesMy personal desktop configuration for Arch Linux and CachyOS, built around a dark monochrome Oxocarbon palette.
I configure Hyprland via Lua with tearing enabled and direct scanout active for full-screen games, bypassing compositor rendering overhead to minimize input latency. My terminal environment uses Kitty with Fish for daily shell use and Bash with ble.sh for syntax highlighting.
I wrote an installer script that backs up existing configurations before symlinking, with an automatic rollback script if needed.
Install
curl -fsSL https://raw.githubusercontent.com/vrdq/dotfiles/main/install.sh | bash