MangaReader
A self-hosted manga library in Rust. It syncs chapters from several sources, merges them into one series, and serves a fast reader with accounts and synced progress. Runs on a Raspberry Pi 4.
- 1 + 1
- one Docker container, one SQLite file
BSc Computer Science student, HE-Arc
From the pixel to the register.
I build every layer of the stack: websites, full products, programming languages, a JavaScript engine, and a Windows emulator for Apple Silicon.
My name is Yanis Amani. I'm pursuing a BSc in Computer Science with a major in Software Engineering at HE-Arc in Neuchâtel, Switzerland.
In 2023 I wrote JadeFlow, my first programming language, because I just wanted to understand how languages work. Understanding one layer exposed the next one down, so I kept digging: compilers, virtual machines, a JavaScript engine, then the instructions themselves.
I care about the boring stuff. Good error handling, clean interfaces, code that's still readable six months later. I've broken enough things in production to know that "it works on my machine" is not a testing strategy. These days I'd rather go slow and get it right.
Languages and tools I reach for, strongest first.
What people see first. Website designs for a law firm, a bowling alley and a barber shop.
Website for a law firm. Sober design that lets the content speak.
Website for a Paris bowling alley: pricing, private events, booking.
Website for a barber shop in Le Marais, Paris.
Complete applications: accounts, data, background jobs.
A self-hosted manga library in Rust. It syncs chapters from several sources, merges them into one series, and serves a fast reader with accounts and synced progress. Runs on a Raspberry Pi 4.
A car-parts marketplace for Libya, live at ghaiari.com. React Native mobile app for buyers, Astro web dashboard for sellers and admins. Supabase backend with vehicle compatibility, wallet payments, order management and push notifications.
How code becomes meaning. This is where it started, in 2023, and I never stopped.
My own scripting language and the register-based VM that runs it, with NaN-boxed values, a generational GC, closures, pattern matching and async/await. It has a language server, and a WebAssembly playground you can try in the browser.
What executes that meaning: bytecode, objects, garbage collection, a JIT.
An embeddable JavaScript engine for Rust apps, with no V8 or QuickJS underneath. The runtime is my own: register-based bytecode, NaN-boxed values, hidden classes with inline caches, a mark-sweep GC and a Cranelift JIT. The oxc crate handles parsing.
The bottom. x86-64 instructions rewritten as ARM64 while the program runs.
A user-mode x86-64 emulator that runs 64-bit Windows programs on Apple Silicon macOS. A Cranelift block JIT translates the code, Rust handlers answer the Win32 API, and GUI apps open real Cocoa windows. Includes a Direct3D 9 software renderer.
00 Bottom of the stack
Got a project, an idea, or a low-level problem you want to talk through? I'm around.
[email protected]