03 / Open source
Open source
Research tools, plugins and libraries I have written and released as open source, with over 80,000 npm downloads combined, plus contributions to other projects. Full-stack developer since 2010, from the web to desktop applications.
Searches the PDFs in a Zotero library by meaning rather than by keyword: a question in Italian also finds passages in English or German. Models run locally, so no document leaves the computer, and an MCP server lets any AI assistants query the library.
Born from the AI & Institutions project.
JavaScript / Rust / WebAssembly
A legal problem solved in code: it checks that every dependency carries a compatible licence and stops the CI pipeline as soon as an unapproved one appears, before it reaches production.
Developed as part of the Akiflow project.
TypeScript
A native Electron module that turns windows into macOS panels: floating windows that open over any app without stealing focus. I maintain Akiflow’s version, keeping it current with recent Electron releases.
Developed as part of the Akiflow project.
TypeScript / Objective-C++
Assigns a DOI to every article published with WordPress and registers it with DataCite, with Crossref support in beta. A feature that usually requires a dedicated publishing platform, reduced to a plugin. Listed in the official WordPress.org directory, it is the tool CERIDAP uses to register DOIs for its articles.
Born from the CERIDAP · Journal project.
PHP / WordPress
A typed, up-to-date list of IANA top-level domains, used to recognise links and email addresses in text. I rewrote version 2 in TypeScript, with named exports and tree-shaking.
Developed as part of the Akiflow project.
TypeScript
Keeps a Zotero library up to date with new issues of the journals you follow, pulling metadata and PDFs from OJS and MDPI platforms and via OAI-PMH and Crossref, with no manual entry.
JavaScript / SQLite
A static site generator in TypeScript, written to be read by AI coding agents too: content lives in JSON, each HTML page declares what it shows and a typed function renders the markup, in every language of the site. From the command line an agent gets a map of the site, the manual for the installed version and a check that reports every error with file and line. Version 2.0 went from 26 to 5 dependencies and builds 2.6 times faster. It powers this site.
Born from the BOHR project.
TypeScript / Node.js / Bun
A CLI that turns releasing into a procedure: feature and release branches, semantic versioning and a Keep a Changelog CHANGELOG, with nothing left to memory. It works with GitFlow or a single main branch, has no dependencies and pushes everything in one go. It is built for AI agents too: it never waits for input and, when something is missing, says what to do and which command to run next, including the user’s approval of the changelog.
Born from the BOHR project.
TypeScript / Node.js / Bun
Pre-rendered Angular Universal apps into static HTML before Angular shipped official prerendering. Used for Enoron’s landing pages.
Born from the Enoron project.
TypeScript / Node.js
Contributions to other projects
Contributions and issue reports to projects including yahoo_fin, tspath, rrule, Polylang, Angular, Electron and Lexical. Working across TypeScript, JavaScript, PHP and Python, with projects in Rust, WebAssembly, Swift and Objective-C++.