Sohaib
HomeProjectsAboutVirtual Photography

all projects · 05

Projects

Everything here is real, on GitHub, and written up by hand — the featured ones live on the front page, the rest live here.

Nexus Mods Tracker

2026

A Discord bot that keeps your server updated whenever your favorite mods get a new release.

Keeping track of dozens of Nexus Mods across different games usually means checking mod pages manually and hoping you don't miss an update. Nexus Mods Tracker automates that by watching your favorite mods and posting rich update announcements directly to Discord whenever a new version is released.

The project is split into a Discord bot and a FastAPI backend. Instead of polling every tracked mod individually, the backend uses Nexus Mods' bulk update feeds to efficiently detect changes, stores shared mod data across servers, and sends the bot everything it needs to post version diffs, changelogs, and download and endorsement growth.

  • Tracks Nexus Mods by name with autocomplete or directly from a mod URL
  • Rich Discord announcements with version changes, changelogs, and download and endorsement deltas
  • Efficient polling using Nexus Mods' bulk updated feed instead of checking every tracked mod individually
  • Multi-server architecture with shared mod records, per-server notification channels, and optional role mentions
  • Dockerized microservice architecture with a discord.py bot, FastAPI backend, PostgreSQL, and automated database migrations
Nexus Mods Tracker posting a Discord update announcement showing the new version, changelog, download statistics, and quick action buttons
Python · discord.py · FastAPI · PostgreSQL · SQLAlchemy · Alembic · Docker · GitHub ActionsView source ↗

EasySchema

2026

Turn plain English into production-ready SQL schemas in seconds.

Writing database schemas is repetitive, especially when you're still exploring an idea. EasySchema lets you describe your database in plain English and generates complete SQL schemas, realistic seed data, and an ER diagram without touching a database.

A FastAPI backend uses Groq's LLM under strict Pydantic validation to produce a dialect-neutral schema, while a deterministic compiler generates PostgreSQL, MySQL, or SQLite SQL. The frontend renders syntax-highlighted SQL, an interactive relationship diagram, and keeps a local history of previous generations.

  • Natural language to SQL with support for PostgreSQL, MySQL, and SQLite
  • LLM output validated through Pydantic before deterministic SQL compilation
  • Interactive ER diagram with automatically drawn foreign-key relationships
  • Syntax-highlighted DDL and seed SQL with copy and download support
  • Schema history stored locally with one-click restore and reusable prompt presets
EasySchema's generator interface showing generated SQL tables alongside an interactive entity-relationship diagram
FastAPI · Next.js · TypeScript · Python · Pydantic · Tailwind CSS · Groq APIVisit site ↗View source ↗

ReShade LUT Converter

2026

Turn ReShade PNG LUTs into Photoshop .cube files, right in the browser.

ReShade color grades live in PNG LUTs, but Photoshop's Color Lookup layer wants .cube files — and there's no built-in way across. Most converters are a CLI you have to install first; this is the no-install version: open a page, drop the PNG, download the .cube.

It all runs in the browser with the Canvas API, so a LUT never leaves your machine and the tool works offline. It auto-detects the layout — strip, MultiLUT atlas, or HALD — and previews the look on a sample or your own screenshot before you export.

  • Auto-detects the input layout — ReShade strip, MultiLUT atlas, or HALD CLUT
  • Runs entirely client-side via the Canvas API — nothing is uploaded, works offline
  • Live before/after preview with a strength slider that never touches the exported file
  • Maps each LUT pixel straight to its 3D cube coordinate, normalizing 8-bit values to 0–1 floats — a direct transcription, no resampling or interpolation
  • Framework-free core, cross-checked byte-for-byte across formats in tests
The ReShade LUT Converter interface — a loaded MultiLUT atlas with a grid of LUT thumbnails, and a large before/after preview of an autumn lakeside scene
TypeScript · Canvas API · Vitest · PlaywrightVisit site ↗View source ↗

MeowProof

2026

A Windows tray app that locks your keyboard before the cat does.

Every cat owner who works from home knows the failure mode: you step away, the cat finds the warm keyboard, and you come back to forty browser tabs and half a Slack message. MeowProof exists because that kept happening.

One click — or a hotkey — and the keyboard is locked by a low-level Windows hook, with a soft acrylic blur drawn over every monitor so it's obvious the machine is paw-proofed. The fun part is smart paw detection: it watches typing patterns across four signals (keystroke timing, key randomness, simultaneous presses, hold duration) and locks automatically when the 'typist' is clearly not human.

  • System-wide low-level keyboard hook with a global unlock chord that works even while locked
  • Heuristic cat-vs-human detection over four typing-pattern metrics
  • Per-monitor glassmorphism overlay via Windows compositor acrylic effects
  • Auto-unlocks on sleep or session lock so you can never lock yourself out
  • Ships as a single self-contained .exe — no installer, no runtime to fetch
MeowProof's main window over a pastel clouds wallpaper — a sleeping cat icon, 'Keyboard Unlocked', and a big Lock Keyboard button
C# 12 · .NET 8 · WPF · Win32 hooksVisit site ↗View source ↗

Distributed File System

2026

Private, end-to-end encrypted file sharing across your own group's machines.

This started as my MCA major project and refused to stay an assignment. The pitch is 'WhatsApp groups, but for file storage': a small invite-only group pools the disks they already own instead of renting a cloud bucket from a stranger.

Files are encrypted client-side with AES-256-GCM before they leave the device, split into chunks, and replicated across group members' machines. One member hosts a zero-knowledge coordinator that only ever sees metadata — never file contents, never keys. The README has an 'honest caveats' section, because a security project that doesn't state its limits is lying to you.

  • Client-side AES-256-GCM via the Web Crypto API — the coordinator can't read anything
  • Chunked storage with configurable replication for fault tolerance across nodes
  • Invite codes with expiry presets and one-time-use options for group control
  • Background transfers with progress tracking, previews, and desktop notifications
  • 205 commits of iterating on consistency trade-offs the CAP theorem warned me about
Architecture sketch: a zero-knowledge coordinator linked to four member nodes, each holding replicated encrypted chunks
Electron · React · Node.js · Socket.io · SQLite · Web CryptoVisit site ↗View source ↗
Sohaib Irfan · Kolkata, India
GitHubLinkedInEmail