On this page I have collected the projects I develop alongside my professional work: some are products I use every day or tools born from a specific need, others are experiments or passion projects.
Products and tools
- Nostromo: a system for managing fleets of MikroTik routers across multiple companies, with device registration, real-time monitoring, configuration snapshots and backups, and an SSH terminal in the browser. A single Rust executable with the React interface built in, on SQLite or PostgreSQL.
- Chemistry: a multi-site headless CMS in Rust, with one SQLite database per site and the admin panel built into the executable.
- Quickshare: verifiable file transfer from phone to computer, with nothing to install on the phone, a SHA-256 hash computed on both sides, and a sealed log. Built for evidence acquisition in digital forensics work.
- Taxman: invoice management for freelancers under the flat-rate tax regime, written in TypeScript and React, with a local-first approach and optional synchronization with a remote server based on asymmetric cryptography.
- Finny: a finance and investment tracker for desktop and mobile, written with Tauri and Rust.
- Luthium: software for managing and tracking your collection of musical instruments, written with Tauri and Rust.
Linux applications
- Silverscreen: a native Jellyfin client for Linux, in Rust and GTK4, with mpv-based playback and HDR support.
- Wave: a native Subsonic and Navidrome client for Linux and Android, in Rust and GTK4, with gapless playback and encrypted sync across devices.
Open source libraries
- informal: local state and form management, UI-independent, with bindings for React.
- smart-table: a table component for React.
Reverse engineering
- Dizzy: a reimplementation of Fantastic Adventures of Dizzy (Codemasters, 1994) in C++20, SDL3, and Lua, reconstructed from the original DOS executable.
- Ultima Underworld: a reconstruction of the engine of the 1992 game, starting from the DOS version.
Experiments
- Sudoku: a Sudoku generator, also playable directly in the browser.