# Muhammad Talib Ibrahim

> Muhammad Talib Ibrahim, full-stack developer in Lahore. Scalable web apps, real-time systems and AI-powered tools with the MERN stack and Next.js.

I'm a full-stack developer studying Computer Science at UMT in Lahore. I specialize in the MERN stack and Next.js, and I build everything from food review platforms to AI-powered codebase assistants, with a soft spot for real-time systems.

I also co-founded Radix Systems, where I built LedgerERP for Pakistan Transmission Drive System. Before that I spent a summer at Mindstorm Studios scripting portals, obstacles and drag-and-release physics in C#.

- Role: Full-stack developer
- Location: Lahore, Pakistan
- Email: talibibrahim04@gmail.com
- Contact form: https://www.muhammad-talib.dev/#contact
- GitHub: https://github.com/TalibIbrahim
- LinkedIn: https://www.linkedin.com/in/muhammad-talib-ibrahim

## Pages

- [Home](https://www.muhammad-talib.dev/): about, selected work, stack, experience and contact
- [All projects](https://www.muhammad-talib.dev/work): every project with its stack, year and links
- [Recruiter mode](https://www.muhammad-talib.dev/recruiter): projects, experience, education and stack on one page

## Projects

### Byters

Food review platform. A full-stack review platform where users rate restaurants, write reviews, and manage dynamic profiles with secure authentication.

- Role: Lead developer, team of 3
- Year: 2024
- Stack: Next.js, MongoDB, Redux, Tailwind CSS, Vercel
- Case study: https://www.muhammad-talib.dev/work/byters
- Live: https://www.byters.site/

- Implemented AI-powered restaurant discovery using vector embeddings.
- Engineered a group decision feature to facilitate collaborative choices.
- About 40 users, grown organically through Reddit (self-reported)
- 120+ restaurants listed (self-reported)
- 100+ reviews written (self-reported)

### The problem

In Pakistan, finding somewhere to eat mostly means Facebook food groups, Instagram reels shaped by free tastings and paid promotion, and Google Maps listings with thin ratings. Diners trust the hype and get a bad meal. Byters gives them structured reviews from real diners instead.

### The hard call

Once a restaurant has at least five reviews, Byters writes an AI summary of what people recommend and what they say to avoid. Feeding the model the latest reviews would mostly repeat the loudest mood, so it gets a fixed mix: 10 recent positive reviews (4 stars and up), 5 mixed and 5 negative. That keeps a well-loved place's real weak spots in the summary.

### What I built

We were a team of three and I led it. Reviews are rated on taste, service, ambience and value, with dish tags and photos. Search understands queries like "crispy burger in gulberg". I also built Where to Eat with a teammate: restaurant suggestions for one person or a group, using vector embeddings.

### Outcome

### Lumos

Smart-light desktop app. A Windows desktop app that controls Tuya and Smart Life Wi-Fi lights directly over the local network, with no cloud at runtime, and publishes them to Apple HomeKit. Effects follow the screen, music, album art and game events.

- Role: Solo
- Year: 2026
- Stack: Electron, React, TypeScript, Tailwind CSS, HAP-NodeJS, TuyAPI, C#
- Case study: https://www.muhammad-talib.dev/work/lumos
- Code: https://github.com/TalibIbrahim/Lumos

- Sends commands to the bulbs over the local network with the Tuya protocol, so a command reaches a light in tens of milliseconds and nothing goes through a server.
- Publishes the lights as an Apple HomeKit bridge for Siri, the Home app and automations.
- Screen Sync, music and album colour effects, plus game effects for Rocket League, Counter-Strike 2 and League of Legends.
- A small native C# helper reads the Windows media session, album art thumbnail and output level for the effects; track titles never leave it, only a hash.
- About 0.01% CPU when hidden in the tray; the install archive went from 55 MB to 15 MB.
- Ships as a Windows installer that checks GitHub Releases for updates.
- I use it every day. (self-reported)

### The problem

Tuya and Smart Life Wi-Fi bulbs are cheap and everywhere, but you control them through the vendor's phone app, and every command goes through Tuya's cloud. There is no Apple Home support, no proper Windows app and nothing that reacts to what's on screen.

### The hard call

I chose local LAN control over the cloud API. Commands go straight to the bulb over the home network: no server in the path, and a light answers in about 30 to 100 ms. The cost is setup. Each bulb's local key has to be pulled once through a Tuya developer project and TinyTuya. A bulb also accepts only one local controller at a time.

### What I built

A Windows desktop app with rooms, scenes, automations, a HomeKit bridge so Siri can control the lights, and effects that follow the screen, music, album art and game events. A flash limiter protects people with photosensitivity, and an optional Bulb protection mode caps commands per second.

### Outcome

It ships as a Windows installer on GitHub Releases, now at version 2.1.9, and checks for its own updates. Hidden in the tray it uses about 0.01% CPU.

### Orbit

Self-hosted dashboard. A self-hosted storage and server dashboard, delivered as a mobile-first PWA, that keeps an Immich photo library replicated with Syncthing and shows usage, replication health, backups and failover in one place.

- Role: Solo
- Year: 2026
- Stack: Next.js, TypeScript, Node.js, SQLite, Syncthing, Docker, Tailscale
- Case study: https://www.muhammad-talib.dev/work/orbit
- Code: https://github.com/TalibIbrahim/Orbit

- A hub polls an agent on every device every 60 seconds and caches the last good answer in SQLite, so an offline device shows when it was last seen.
- Checks every phone upload against the files on each copy before it calls the phone safe to free up.
- One button starts Immich on an Oracle Cloud standby from the newest database dump.
- Nothing is exposed publicly: the hub, the agents and Immich bind to Tailscale.

### The problem

Immich is a good self-hosted photo app, but its own docs say it is not a backup. People who want three copies, one of them offsite, end up wiring Syncthing, cron jobs and manual checks together. The worst moment is deleting photos from a phone without knowing they are really safe.

### The hard call

Checking that a copy is good means hashing files, and hashing a whole library every time would bury the disks in I/O. Orbit hashes recent uploads plus a random 2% of older files, and checks size and database freshness on every copy. The phone only reads "safe to offload" once all of that passes.

### What I built

A hub that polls an agent on each device every 60 seconds and caches the last good answer in SQLite, so an offline device shows "last seen", not an error. Everything binds to Tailscale with no public ports. Database dumps run nightly to every copy, and one button promotes an Oracle Cloud Always Free standby.

### Outcome

Checked against Immich v3.3.0 and Syncthing v2.1.6. It has an agent test suite and a written restore-test checklist, and it updates itself nightly. I run it on my own photo library. The screenshots use demo data.

### QuickDrop

P2P file sharing. Privacy-first file sharing with peer-to-peer transfer using WebRTC, featuring auto-deletion, lossless uploads, and QR code device pairing.

- Role: Solo
- Year: 2025
- Stack: React.js, MongoDB, Cloudinary, Socket.IO, PeerJS
- Case study: https://www.muhammad-talib.dev/work/quickdrop
- Live: https://quickdrop-file.vercel.app/
- Code: https://github.com/TalibIbrahim/quickdrop

- Built P2P file sharing architecture utilizing TURN/open relay servers.
- Implemented strict auto-deletion logic to ensure user privacy and security.

### The problem

Sending a file from one device to another usually means signing into something, and the file stays on a server long after it has been downloaded. QuickDrop needs no account, and files don't stick around.

### The hard call

Peer-to-peer transfer needs a signalling server to introduce the two devices. The easy route is a free public one, but some local ISPs seemed to block public WebRTC signalling servers, and connections failed. So I run my own on Render: a PeerJS server plus Socket.IO, which also groups devices by public IP so Local Radar can find phones on the same Wi-Fi. When a direct connection still can't be made, TURN relay servers carry the transfer.

### What I built

Two modes. Cloud Upload shares files with a six-character code or a QR code, and deletes them from Cloudinary and the database after five minutes. P2P transfer connects two devices anywhere by room code, or nearby with Local Radar. Files are sent in chunks with no compression, and several files download as one ZIP.

### Outcome

It's live at quickdrop-file.vercel.app, with a cron job enforcing the five-minute expiry.

### JARVIS

Desktop assistant. A Windows app for controlling the PC with hand gestures tracked from the webcam by MediaPipe, with a voice assistant and a Dynamic Island overlay that shows media, calendar, weather and hardware cards.

- Role: Solo
- Year: 2026
- Stack: Python, MediaPipe, OpenCV, PySide6, openWakeWord, Groq API, WinRT
- Case study: https://www.muhammad-talib.dev/work/jarvis
- Code: https://github.com/TalibIbrahim/JARVIS

- Hand tracking runs locally with MediaPipe; speech recognition and the assistant use the Groq API.
- The Dynamic Island is native PySide6 at 60 FPS, click-through when idle, and never takes focus.
- Gestures include one-handed zoom, a listen gesture and fast flicks to switch windows.
- Crashed or stalled camera and voice workers restart on their own.

### The problem

I use Siri a lot, and I wanted the same kind of assistant on my PC and laptop for small things: turn the volume down, raise the brightness, open an app, set a reminder or an alarm. I also wanted to work the laptop from across the room at night with my hand, without getting up.

### The hard call

Where the work runs. Hand tracking, the wake word and intent matching all run on the machine. MediaPipe tracks the hand and openWakeWord listens locally. A local intent engine decides most commands in under a millisecond, and maths runs locally too. Only speech-to-text and AI replies go to Groq, and a privacy log records every cloud request. So the cursor never waits on the network, and with no internet the island says speech is unavailable while gestures keep working.

### What I built

Gesture control with one-handed zoom, a listen gesture and flicks to switch windows. A voice pipeline with Silero speech detection and ducking of other apps' audio. A native PySide6 Dynamic Island at 60 FPS that is click-through and never takes focus. Crashed workers restart on their own.

### Outcome

Version 2.6.0 is on GitHub Releases, with over 1,000 tests, including pixel-exact checks of every island page. Memory levels off around 150 MB.

### Peekaboo

3D web experiment. A browser app that tracks your head through the webcam and recomputes an off-axis projection every frame, so the screen behaves like a window into four interactive 3D scenes.

- Role: Solo
- Year: 2026
- Stack: JavaScript, Three.js, MediaPipe, WebGL, GLSL
- Case study: https://www.muhammad-talib.dev/work/peekaboo
- Live: https://talibibrahim.github.io/peekaboo-3d-parallax-window/
- Code: https://github.com/TalibIbrahim/peekaboo-3d-parallax-window

- An off-axis (asymmetric frustum) projection locks the view to the four edges of the physical display.
- GPGPU boids drive a school of 576 to 2,304 fish that scatter when you lean in.
- Starfall runs a curl-noise river of 147,000 to 590,000 particles.
- An auto quality tier drops a level when the frame rate falls below 48 FPS.

### Context

Peekaboo turns a monitor into a window. It tracks your head through the webcam and moves the view the way a real window would: lean left and you see further behind the right side of things.

### What I built

- An off-axis (asymmetric frustum) projection, recalculated every frame, that locks the view to the edges of the physical screen.
- Four scenes: a reef where a GPGPU fish school scatters when you lean in, a floating diorama with a robot that turns to look at you, a particle river around a gas giant, and a calibration room.

### Stack notes

Plain JavaScript with Three.js, MediaPipe face tracking and custom GLSL shaders, running on GitHub Pages.

### GitChat

AI codebase assistant. A RAG-powered assistant that streams AI reasoning from local LLMs, with MongoDB Atlas Vector Search for semantic retrieval of GitHub repositories.

- Role: Solo
- Year: 2026
- Stack: Next.js, Vercel AI SDK, LangChain, MongoDB, Ollama
- Case study: https://www.muhammad-talib.dev/work/gitchat
- Code: https://github.com/TalibIbrahim/GitChat

- Constructed a RAG pipeline utilizing semantic retrieval and document chunking.
- Integrated the Vercel AI SDK and LangChain to interface with local Ollama models.

### Context

GitChat is an AI codebase assistant for interactive repository analysis. Point it at a GitHub repository and ask questions about the code.

### What I built

- A RAG pipeline built on semantic retrieval and document chunking.
- MongoDB Atlas Vector Search for semantic retrieval of GitHub repositories.
- Streaming of AI reasoning from local LLMs.

### Stack notes

Built with Next.js. The Vercel AI SDK and LangChain interface with local Ollama models, and MongoDB stores the vectors for retrieval.

### Beacon

Server dashboard. A password-protected control panel for a friends-only Minecraft server on an Oracle Cloud VM: see whether it is up, copy the join address, start or stop the VM and download the world save. It runs on Cloudflare's free tier.

- Role: Solo
- Year: 2026
- Stack: React, Vite, Tailwind CSS, Cloudflare Workers, Cloudflare D1, Cloudflare KV, Oracle Cloud
- Case study: https://www.muhammad-talib.dev/work/beacon
- Live: https://beacon.talibibrahim04.workers.dev/
- Code: https://github.com/TalibIbrahim/Beacon

- Signs Oracle Cloud API requests from a Cloudflare Worker with Web Crypto alone, without Node APIs or crypto packages.
- A PBKDF2 password hash checked in constant time, HMAC-signed session cookies, CSRF checks, a strict CSP and brute-force lockouts.
- An always-on ARM VM backs the world up every 30 minutes, and a cron Worker stops the server after 30 minutes with nobody online.
- Splits storage between KV and D1 to stay inside free-tier write limits.

### Context

Beacon is a small control panel for a friends-only Minecraft server on an Oracle Cloud VM. It answers "can we play right now?" and lets anyone with the shared password start the server, copy the join address or download the world.

### What I built

- Status, a four-step boot track, players online, start and stop.
- Backups every 30 minutes from an always-on ARM VM, restores, and an auto-stop after 30 idle minutes.
- A PBKDF2 password hash, HMAC-signed cookies, CSRF checks, a strict CSP and rate-limited sign-in.

### Stack notes

React and Vite on Cloudflare Pages Functions with Web Crypto only, split across KV and D1 to stay inside free-tier limits. The screenshots use made-up data.

### Splitr

Mobile bill splitter. A mobile app for splitting restaurant bills: scan the receipt on the device, assign items to people, and get per-person totals that account for discounts, tax and service charges. Local-only and single-user, in beta.

- Role: Solo
- Year: 2026
- Stack: React Native, Expo, TypeScript, Zustand, ML Kit, Zod, Turborepo
- Case study: https://www.muhammad-talib.dev/work/splitr
- Code: https://github.com/TalibIbrahim/Splitr

- Reads receipts on the device with ML Kit OCR, with no server and no API keys.
- A receipt parser for Pakistani receipts, tested against transcribed real receipts.
- A directory of 39 Lahore card dining offers taken from official bank sources.
- CI builds an Android APK and an unsigned iOS IPA into GitHub Releases.

### Context

Restaurant bills are harder to split than a total: people order different things, share dishes, and get card discounts and tax on different bases. Splitr follows the receipt's own calculation instead of one formula.

### What I built

- Receipt scanning on the phone with ML Kit OCR, and a parser for Pakistani receipts tested against real ones.
- Item assignment with shared dishes, then per-person totals with discounts, tax and service charges, shared as text.
- A directory of 39 Lahore card dining offers from official bank sources.

### Stack notes

Expo and React Native in a Turborepo monorepo, with the calculation engine and parser as tested packages. Local-only, single-user and in beta.

### LedgerERP

Inventory desktop app. A desktop inventory and ledger app for Windows and macOS, built through Radix Systems for Pakistan Transmission Drive System, a transmission company in Lahore. It keeps data in a local database and syncs it to MongoDB in the cloud.

- Role: Solo
- Year: 2026
- Stack: Electron, React, TypeScript, Vite, Tailwind CSS, NeDB, MongoDB
- Case study: https://www.muhammad-talib.dev/work/ledgererp
- Code: https://github.com/TalibIbrahim/Inventory-Ledger-Management-System
- Client: https://paktransdrive.com/

- Purchase and sales vouchers with drafts, search, keyboard shortcuts and stock validation.
- Customer accounts, a credit ledger, payment tracking and monthly sales reports.
- Local-first data with cloud sync to MongoDB, plus Trash and backups.
- Ships as a Windows installer and a macOS DMG, with auto-updates published by a GitHub Actions release workflow.
- Still maintained: I ship updates to the client. (self-reported)

### Context

LedgerERP is an inventory and ledger desktop app I built through Radix Systems. It runs on Windows and macOS.

### Today

### What I built

- Purchase and sales vouchers with drafts, search, keyboard shortcuts and stock validation.
- Customer accounts, a credit ledger, payment tracking and monthly sales reports.
- Local storage with cloud sync to MongoDB, plus Trash and backups.

### Stack notes

Electron, React and TypeScript with Vite and Tailwind CSS. Data lives in a local NeDB store and syncs to MongoDB. A GitHub Actions workflow builds the Windows installer and the macOS DMG and publishes the auto-updates.

### Solara

Weather app. A simple glass UI weather app featuring current as well as daily weather using the Open-Meteo API.

- Role: Solo
- Year: 2024
- Stack: React.js, Open-Meteo API, CSS
- Case study: https://www.muhammad-talib.dev/work/solara
- Live: https://talibibrahim.github.io/Solara/
- Code: https://github.com/TalibIbrahim/Solara

- Implemented glass UI components for a modern aesthetic.
- Integrated the Open-Meteo API for real-time weather data fetching.

### Context

Solara is a simple glass UI weather app that shows current as well as daily weather.

### What I built

- Glass UI components for a modern look.
- An integration with the Open-Meteo API for real-time weather data fetching.

### Stack notes

Built with React.js and plain CSS, with weather data from the Open-Meteo API.

### SlingKick

2D puzzle game. A 2D slingshot mechanic puzzle game made for the Mindstorm Studios game jam.

- Role: Solo
- Year: 2024
- Stack: Unity, C#, 2D Physics
- Case study: https://www.muhammad-talib.dev/work/slingkick

- Engineered custom 2D slingshot physics using Unity.
- Developed within a high-pressure game jam environment.

### Context

SlingKick is a 2D slingshot mechanic puzzle game made for the Mindstorm Studios game jam.

### What I built

- Custom 2D slingshot physics in Unity.
- Development within a high-pressure game jam environment.

### Stack notes

Built in Unity with C#, using 2D physics.

## Experience

- Co-founder, Radix Systems (Lahore, Pakistan), Apr 2026 to Oct 2026
  - Co-founded Radix Systems and built LedgerERP, an inventory and ledger desktop app, for Pakistan Transmission Drive System.
  - Shipped LedgerERP as a Windows installer and a macOS DMG, with auto-updates published by a GitHub Actions release workflow. I still ship updates to the client.
- Core web development team member, Google Developer Group (GDGoC) UMT (Lahore, Pakistan), Nov 2024 to Aug 2025
  - Built user authentication for the chapter's official blog.
  - Ran workshops for university students on modern web development and React.js.
- Game development intern, Mindstorm Studios (Lahore, Pakistan), Jun 2024 to Aug 2024
  - Developed a physics-based puzzle game featuring custom drag-and-release mechanics, portals, and dynamic environmental obstacles.
  - Scripted the portals, obstacles and drag-and-release physics in C#.

## Education

- BS Computer Science, University of Management & Technology (UMT), Oct 2023 to July 2027 (expected), GPA 3.6/4.0

## Stack

- Languages: JavaScript, TypeScript, C++, C#, HTML, CSS
- Frameworks: Next.js, React.js, Node.js, Express.js, Tailwind CSS, Bootstrap
- Backend & tools: Socket.IO, PeerJS, Cloudinary, LangChain, RAG pipelines, Vector search, LLM APIs, Git, GitHub, Postman, Vercel, WordPress, Unity, Arduino Uno
- Databases: MongoDB, MySQL, Firebase, Redis

## Certifications

- The Web Developer Bootcamp 2020
- Summer Game Jam 2024
- React, NodeJS, Express & MongoDB: The MERN Fullstack Guide
- React: The Complete Guide 2024 by Maximilian Schwarzmüller
- Google AI Fundamentals
