Work
ls -la ~/work
total 20
- -rwxr-xr-x
- open source
- -rwx------
- private, or a company product
- -r--r--r--
- archived, read-only
./day/ # erp work, for the bills
-rwx------papyrus.svcEnterprise-grade PDF rendering as a microservice. Post your data, get a job id, download the PDF.2025-now
Papyrus
PDF generation treated as infrastructure, like a queue or a search index. A client posts a template and its data and gets a job id straight back; the document renders in the background, ready to download or to follow live. The same request twice comes straight back from cache.
Rendering engines are swappable plugins, and templates are HTML and CSS with variants and translations, so a document's design never touches the app that prints it.
It speaks a compliance-aware format for invoices, quotes and delivery notes, built for Moroccan and international e-invoicing standards. Batches come back as a ZIP or one merged PDF.
- stack
- python, fastapi, redis, jinja2, css paged media, docker
- role
- creator and lead developer at BigBang.ma, v3 in active development
closed source. nothing to link yet.
-rwx------invoicestamp.appBeautiful invoices, in seconds. Invoices, quotes, sale orders and delivery notes, from a phone or a browser.2026-now
InvoiceStamp
The simplest way for freelancers and small businesses to create, customize and send professional invoices, on the web, iOS and Android, synced across every device.
Templates take each business's logo, brand colour and signature. Clients and products are saved once and filled in from then on, and the same flow makes quotations, sale orders and delivery notes, in any currency, with local and international tax formats.
- stack
- next.js, typescript, ios, android, tailwind, capacitor
- role
- core developer at BigBang.ma, in a small team
-rwx------pos-modules/Point-of-sale modules for Odoo 16-17, published on the Odoo Apps Store under BigBang.MA.2023-now
Odoo POS modules
Kitchen receipts that carry the waiter and cashier names, access control for restaurant and retail points of sale, and the Azure POS theme.
Small modules with real users: they run on shop counters, so they have to be boring in the best way.
- stack
- python, odoo, javascript, xml
- role
- erp developer at BigBang.ma, since nov 2023
-rwx------qee-nano.erpAn all-in-one cloud ERP for Moroccan small businesses, with training built in.2025
Qee Nano
Qee Nano packages Odoo into something a small shop can actually adopt: hosted, priced for small budgets, and paired with Qee Academy so people learn the tool as they use it.
- stack
- python, odoo, docker
- role
- odoo engineering with the qee.pro team
./night/ # my own things, for the thrills
-rwxr-xr-xodoo-client.tsA type-safe JSON-RPC and XML-RPC client for Odoo 14-19. Zero dependencies, native fetch.2026
@vvhybe/odoo-client
Talks to Odoo from Node.js, Next.js or React with session, password or API-key auth. Pagination is an async generator, so for await walks a whole model without loading it at once.
Retries use exponential backoff and never retry auth errors. Errors are typed, the protocol is swappable, and XML-RPC runs on a tiny built-in serializer instead of a dependency.
- stack
- typescript, node 18+, vitest, json-rpc, xml-rpc
- role
- author, maintainer
-rwxr-xr-xjnaninyoga/A yoga studio's website: bookings, a weekly class calendar and galleries, in three languages.2023-24
Jnanin Yoga
jnaninyoga.com is the studio's public face, designed around its logo and palette: bookings, a weekly class calendar, galleries and testimonials, in English, Arabic and French, built with SEO in mind.
Behind it, a real-time dashboard tracked contact forms, bookings, users and payments, with email notifications.
- stack
- react, firebase, mui, i18next, tailwind
- role
- full-stack developer
-rwxr-xr-xjnaninyoga-command-center.pwaThe studio's back office: schedule, check-ins, a credits wallet per student, health alerts, B2B invoicing.2026
Jnanin Yoga Command Center
An installable, mobile-first admin app for a solo yoga instructor. Students buy credits, not dates: each check-in spends one and a missed class costs nothing. Before anyone is checked in, an active health condition raises an alert, from asthma to a due date.
Google Calendar stays the source of truth for group classes and private sessions, and every new client lands in Google Contacts, so they show up in WhatsApp too. Outdoor events keep track of their participants and guests.
A B2B side serves partner companies: quotes turn into invoices, partially if need be with a backorder for the rest, payments are tracked, and every document prints to PDF.
- stack
- next.js, typescript, supabase, drizzle, shadcn/ui, tanstack table, google apis, pwa
- role
- sole developer
-rwxr-xr-xcactusia.maA Moroccan online shop for cacti and their pots: pick a plant, try it in every pot colour, order.2022-23
Cactusia
My first client project, built with @tchisama. Customers preview each plant in each pot colour before they buy, and prices factor in delivery fees and quantity discounts. The order flow is localized and confirms the cart before anything is sent.
Behind the shop, a real-time Firebase dashboard tracks every order from confirmed to delivered or cancelled, with comments on each one, revenue totals, and the stock of plants and pots.
- stack
- react, firebase, tailwind, mui, zustand, vite
- role
- full-stack developer, with @tchisama
-rwxr-xr-xdome.shA minimalist dotfiles manager in Bash. Two-way sync between $HOME and a git repo.2025
dome
Detects conflicts and hands them to your merge tool, runs pre- and post-sync hooks, maps files per distro in YAML, and keeps per-distro backups.
It manages my own Hyprland setup. v2.0.0 shipped as star-dust.
- stack
- bash, git, yaml
- role
- author
-rwxr-xr-xleorodney.aiAn AI image generator: type a prompt, get an image. For artists, designers, anyone.2023
leorodney
Architected as cloud-native microservices on the MERN stack and Docker: an auth service, a gateway, prompts and a router behind a React and Redux client.
Prompts go to OpenAI's DALL·E, images are hosted on Cloudinary, and users can download and share what they generate. Authentication and access control run throughout.
- stack
- typescript, mern, docker, dall·e, cloudinary
- role
- founder, full-stack developer
-rwxr-xr-xtoothscript.d.tsTypeScript utility types that stay out of your global namespace.2024
-rwxr-xr-xhandyscript.jsEveryday JavaScript helpers: arrays with sort algorithms, matrices, math, strings, JSON.2023-25
./archive/ # school days, read-only
-r--r--r--universal-age/Your age on every planet of the solar system, in English, French and Arabic. Plus a Python CLI.2022
-r--r--r--photolab.jsA photo editor whose filters are written pixel by pixel on canvas. Where dithering this site started.2022
-r--r--r--qr-code-generator/Text in, QR code out, saved to your gallery. React Native and Expo, with a web twin. Most-starred repo.2023
QR code generator
Text in, QR code out, saved to your gallery. React Native and Expo, with a web twin. Most-starred repo.
- stack
- react native, expo, react
-r--r--r--media-library/A full-stack library for books, music and video, in English and Arabic, with an admin dashboard.2023
MediaLibrary
A full-stack library for books, music and video, in English and Arabic, with an admin dashboard.
- stack
- react, scss, express