Projects
A list of all the projects I've worked on, split into work, university and personal projects.
Small projects and random experiments aren't listed here, you can (maybe) find them on my GitHub anyway.
Gayadeed
Describing the Gaya project in words is not easy at all. It's a piece of software born from InfoCert (a company that offers digital signature services) whose goal is to automate document signing procedures (legal, eIDAS) as much as possible through a web and mobile app (InfoCert only brought their APIs to the table, horrendous SOAP garbage). I designed and built the backend of the platform, which issued Qualified Electronic Signatures (QES, eIDAS) for more than 50,000 users, wrapping the certification authority's legacy SOAP APIs behind a service layer written in Go (integrating MTOM on those endpoints even cost me a patch to gowsdl, later accepted upstream). The architecture is multi-tenant, with each customer isolated in its own dedicated PostgreSQL schema, and each of them processes thousands of legally valid signatures every week. The customers interested in the project were all different, each one sitting on its own "vertical": real estate agencies (for rental and sale contracts, main customer: FIAIP), lawyers (for anti-money laundering procedures and formal verification, main customer: Giuffrè Francis Lefebvre), accountants (the Milan Order of Chartered Accountants, for which we digitalized the whole enrollment process of trainees into the professional register, together with Oracle, from compliant document generation to the qualified signature and long-term archiving). To comply with GDPR and eIDAS we implemented ten-year encrypted document retention with EU data residency, deployed directly in the customer's data centers in Milan. Over the years we built anything and everything, working with a huge number of companies. This project helped me understand how impossible it is to build a platform that makes everyone happy. Better to build focused, intentional software than to bend unrelated processes into the same shape for no reason. It taught me a lot. I also realized that in Italy the software development industry is largely useless fluff. All in all, I treasure the experience.
Year: 2021 - 2024
Category: Work
Tech Stack: Java + Go + Rust + Python (BE), Vue + React + Angular (FE), PostgreSQL, Kubernetes
Vectis - Self-sovereign wallet on Cosmos
Vectis is a self-sovereign smart contract wallet for the Cosmos ecosystem, built together with NymLab and launched on the Juno mainnet with about 10,000 users. I built the client as a browser extension in React and TypeScript, and I was one of the three engineers who wrote the smart contracts in Rust (CosmWasm), including the guardian-based custody: designated parties can freeze the assets and hold the authority to recover the keys. All the cryptographic material stays on the client, with encrypted local storage and hardware wallet support; content script isolation and permission scoping weren't "best practices" but core security requirements, since a bug there means losing users' funds. It's the project where I really learned what it means to write code where there is no rollback.
Year: 2022 - 2023
Category: Work
Tech Stack: Rust + CosmWasm (Smart Contracts), React + TypeScript (Browser extension)
Fondazione Pugliese per le Neurodiversità - Backoffice and mobile app
The Fondazione Pugliese per le Neurodiversità is a non-profit organization based in Andria that supports people with certified neurodivergence, autism spectrum disorders in particular, and that opened the multi-purpose autism center "FPN 0-99 anni". For the Foundation we built the system that ties together the people being supported and the people supporting them: a web backoffice for personal records, care plans, the activity calendar and staff management, plus a mobile app used by three different kinds of users. Caregivers (healthcare assistants, educators, speech therapists, psychologists and psychiatrists) and tutors use the system directly in the field, without going through a PC; families have their own access, with notifications for upcoming appointments and activities. Today the system covers 30 supported people, 17 caregivers and 36 tutors. It's one of those projects where the domain matters more than the technology: modeling a care plan badly means making life harder for the people who work with people, not just shipping a bug. The project has been delivered and we currently maintain it.
Year: 2025
Category: Work
Tech Stack: Fastify + TypeScript (BE), Angular (FE), Flutter (App)
Sinistra Italiana membership
A complete membership system for Sinistra Italiana (an Italian political party): new member registration, card renewals and membership fee payments, integrating the Numia gateway to accept credit and debit cards, PayPal and bank transfers. Since it went live it has processed almost 10,000 members. The interesting part of a membership system isn't the sign-up form, it's everything around it: the intermediate states of a payment, reconciling the fee that was paid with a membership card that is actually valid, and the fact that the data of a party member falls under the special categories of personal data in the GDPR, so it must be handled with more care than usual.
Year: 2025 - 2026
Category: Work
Tech Stack: Fastify + TypeScript (BE), Svelte (FE)
Eternal Fall
A game made at the Global Game Jam in Milan, on site at the Event Horizon Game School Academy, together with friends from the Game Maker Italia community, which I've been part of since 2013 and which I'm very fond of: 48 hours of development on the theme "roots", which gave birth to a golden tree with roots that reach the center of the Earth and that has been terrorizing humanity for fifty years. Later published on GX.Games. Doing a jam in person is a completely different experience from doing it remotely: you argue better and decide a lot faster.
Year: 2023
Category: Personal
Tech Stack: GameMaker Language (GML)
Roller Blaze
A mobile game developed for the Opera GX Mobile Game Jam 2022 under the name Flipped Ones Studio, which is really just the two of us: me on code and WillShire on art. The premise: an alien civilization invades your city and you push it back zooming around on rollerblades. Published on GX.Games, it passed 100,000 unique plays and won one of the two $2,000 cash prizes awarded to the most played entries of the jam (out of more than 300 participants). Making a game for a mobile jam teaches you something you never learn in backend: if it isn't clear what you have to do within the first ten seconds, the user closes the game and never comes back.
Year: 2022
Category: Personal
Tech Stack: GameMaker Language (GML)
Sottosopra
Sottosopra is a mobile app that tells citizens about road closures caused by roadworks, and more. Basically it connects the public administration with citizens directly, without going through social media or other more restrictive platforms.
Year: 2021
Category: Work
Tech Stack: Go (BE), Flutter (App), React (FE)
Stocco - ERP and warehouse management
Web-based software focused on warehouse management and scheduled shipments. Features (roughly): Automatic sync of warehouse inventory and orders. Creation of quotes, invoices and delivery notes. Integration with Fatture in Cloud to import self-invoices and issue electronic invoices (this is where fatture-in-node, the open source SDK I published, came from). E-commerce integration. Shipment management with a delivery calendar. More advanced accounting features were also implemented later on. The software provides always up-to-date and accurate KPIs for every business area, from logistics to accounting.
Year: 2021
Category: Work
Tech Stack: Angular 10 (FE), Node.js + TypeScript (BE)
Darlene - Interactive procedural configuration for the Elliot framework
Darlene is essentially a JSON metalanguage that declaratively describes the structure of an interface, plus a dynamic UI generator that builds always-valid forms for the Elliot framework out of that schema. The Elliot framework was developed by SisInfLab at the Politecnico di Bari to improve the reproducibility of recommender system benchmarking experiments: the goal was to let researchers (often non-technical ones) produce correct configurations without writing YAML by hand, and without hardcoding a form for every experiment. The interesting part was keeping rendering fast with component trees generated at runtime, working with React's reconciliation algorithm instead of against it. This project is my bachelor's thesis.
Year: 2021
Category: University
Tech Stack: React + TypeScript (FE)
Blank Art Network
We worked with the Blank Art Network team to implement some special features around the (back then popular) NFT marketplaces. In this context I learned pretty much everything I know about Web3 and NFTs, finally establishing, methodically and formally, that they were, are and always will be a huge load of bullshit. The only important thing about this project is that it got us into a partnership with NymLab, and therefore working on Vectis.
Year: 2021
Category: Work
Tech Stack: Solidity (Smart Contracts), Rust (BE)
PosteWay - REST API gateway for Poste Italiane
Web-based software that acts as a gateway between the APIs of Poste Italiane (the Italian postal service, SOAP-based) and the customers who want to integrate Poste Italiane services into their own software. It offers a simple and intuitive REST interface to the features of the Poste Italiane APIs, like creating shipments, tracking shipments, managing labels and much more. The software also handles user authentication and authorization, making sure only authorized users can access its features. The real fun was finding out that the production behavior of Poste's SOAP services diverged from the published WSDL: I had to reverse engineer the real contracts by watching the system's responses, without any support from the provider. That work also gave birth to sapo, the open source generator I publish on GitHub. The project was developed together with GSPoste, which offers this service to its customers (mostly condominium administrators) as added value, alongside other management software.
Year: 2020
Category: Work
Tech Stack: Node.js + TypeScript (BE)
EnoLog - Wine cellar monitoring
Mobile app for monitoring wine cellars. It tracks the environmental conditions of the cellar in real time, like temperature, humidity, CO2 level and pressure, through IoT sensors. The software was developed together with Elmod Srl, for a university exam (Software Engineering).
Year: 2020
Category: University
Tech Stack: React (FE), Node.js + TypeScript (BE), Flutter (App)
Neuvò - Anonymous citizen reports
Developed for the Municipality of Andria, Neuvò is the app that lets citizens send reports to their Municipality, completely anonymously, about violations like illegal waste dumping or asbestos. Municipality staff can see the reports through a web portal and rate them from 1 to 5 stars. Citizens get immediate feedback when their report is picked up and rated, which encourages them to keep using the app.
Year: 2019
Category: Work
Tech Stack: React (Backoffice), Flutter (App), Node.js + TypeScript (BE)
ClickCGIL - App for CGIL Puglia
Developed for CGIL Puglia (the regional branch of Italy's largest trade union), ClickCGIL is the app that lets users find the nearest CGIL office and book the many services offered by the CAF (its tax assistance center). Users can also digitalize their yearly CGIL membership card and use it straight from the app to access additional members-only services.
Year: 2019
Category: Work
Tech Stack: Angular 5 (Backoffice), Flutter (App), Java Spring (BE)
NoiXTe - Gruppo Megamark
Gruppo Megamark owns very well known supermarket chains in southern Italy like Dok, Famila, IperFamila and A&O. For this customer we developed digital gaming activities as part of wider marketing campaigns. Depending on the time of year and the holidays on the calendar, we build games like "the advent calendar" or the "wheel of fortune", played by thousands of users. These prize games were designed to work perfectly both on PC and on mobile devices, and their end goal is customer loyalty. Every game comes with an admin platform that collects the data and shows the plays and the prizes won. All the gaming activities integrate perfectly with the company's internal systems for reporting the results.
Year: 2019
Category: Work
Tech Stack: Vanilla JavaScript (Web portal), React (Backoffice), Node.js (BE)
EtikONE - Quote management for label rolls
Web-based software for managing quotes for rolls of custom adhesive labels. It calculates the price of a roll of labels based on several parameters, like the label size, the number of labels per roll, the material, the number of colors and much more. The software was developed together with Rotolificio Pugliese, a company that produces custom adhesive labels. This project started as a translation of a huge Excel file previously used to manage absolutely everything (including a database living inside the Excel file itself).
Year: 2018
Category: Work
Tech Stack: Angular 5 (FE), Node.js + TypeScript (BE)
AppLab 2.0 - Adhesive label editor
Web-based software for creating custom adhesive labels and printing them on A4 sheets, based on the templates offered by Rotolificio Pugliese. You can create labels with text (even curved, with shadows and outlines), images (uploaded straight from your PC), barcodes, QR codes and much more. There's also a mail merge system: import a CSV or Excel file with the data and you get a label for every row. The software was developed together with Rotolificio Pugliese, a company that produces custom adhesive labels. This was my very first project at Overzoom.
Year: 2017
Category: Work
Tech Stack: React (FE), Node.js (BE)
Vitruvia
A multicheat for CS:GO written entirely in C++ (more than 50,000 lines) with its own manual mapping injector and a SaaS-style subscription control system. Vitruvia Club was a real paid product, with about 30 paying customers, but distributed by invitation only: no website, no ads, all word of mouth. After I abandoned the project I made it open source (without the injector, for legal reasons). It implements a ton of features, including: Aimbot, Triggerbot, Visuals (ESP, Glow, etc...), Skinchanger, Bhop, classic and custom Anti-Aims, a custom Resolver for HvH and much more. The hardest part wasn't writing the features, it was reverse engineering the game engine: memory layout, netcode and rendering pipeline rebuilt from stripped binaries, with no sources and no documentation, using inline x86 Assembly for vtable dispatch and thunks over the calling conventions of internal functions. I consider it my "magnum opus" in C++ programming, since it's the most complex and complete project I've ever built. Before this project I had already written other cheats with fewer features (honorable mentions: TitaniumHook and ColumbineHook)
Year: 2017
Category: Personal
Tech Stack: C++, ASM x86
Serious Zeb
A 2D platform beat 'em up dedicated to Zeb89 (an Italian YouTuber). The game was developed in Game Maker together with 2 other friends (Pellegrino and Doom13), and released as an early demo in 2015. The game was fairly successful, but the project didn't go any further for several reasons, including Zeb89 himself, who for some reason didn't look kindly on the game.
Year: 2015
Category: Personal
Tech Stack: Game Maker Language (GML)
ROM hacks for Pokémon Ruby/Sapphire/Emerald
My very first steps in programming happened around 2008, when I started modding Pokémon games for the GameBoy Advance, after playing Pokémon Emerald for an infinite number of hours. I started writing Assembly routines to modify the game in all sorts of ways, and using external programs (like Advance Map, so much nostalgia) to edit the maps. After learning the basics thanks to some online forums, I started writing more complex ROM hacks, with actual storylines. Maybe some of them can still be found online, I really hope not. Once I discovered C, a whole new world opened up to me, and my life changed forever.
Year: 2010
Category: Personal
Tech Stack: GBA ASM (THUMB dialect), C
Open Source
Stuff I published or contributed to, almost always born from a real problem I ran into at work.
Upstream contributions
Contribution accepted upstream: it relaxes the MTOMDecoder validation, so it can handle binary attachments from production SOAP endpoints that don't follow the standard. Born while integrating MTOM on a SOAP endpoint during my work on Gayadeed.
- D3vl0per/Twitch-watcherJavaScript
Two patches accepted on a Twitch automation bot: configurable navigation timeouts and a fix for a Puppeteer crash. The code also ended up in the projects that were born from it.
Projects and libraries
A guide to start writing internal cheats for CS:GO, written between 2016 and 2018. It is my most starred repository: apparently explaining how a game works from the inside interests people more than the code itself.
- double-sdkC++
An SDK to write CS:GO cheats without starting from scratch every time. Together with simple-bunnyhop, edgelibrary-csgo and titaniumhook-menu it is part of the 2016 trail of C++ projects that later led to Vitruvia.
An album downloader for cyberdrop.me written in Go, the first project where I used Go for something real instead of just practice.
- ezskinz-newC++
Source code of a CS:GO skinchanger, obsolete by now but still forked by people who want to understand how to intercept the creation of game entities.
- fatture-in-nodeTypeScript
A fully typed SDK for the Fatture in Cloud APIs (an Italian invoicing service), published on npm, extracted from the electronic invoicing work I did on Stocco.
- sapoGo
A generator that produces typed TypeScript interfaces from SOAP WSDL definitions. Written so I never have to rewrite SOAP service types by hand for every integration again.
A Go client for the APIs of Jumio, the KYC and identity verification provider I integrated in a regulated context.
- pokefusion-apiJavaScript
A library that generates random Pokémon fusions and returns them as JSON, snatching the data from an old PHP website that had no API whatsoever.
- whos-that-pokemonJavaScript
A Discord bot that asks "Who's that Pokémon?" questions in a server. Born to make a group of friends stop arguing, with mixed results.
- yoyo-ma e yoyoma-telegramC#, JavaScript
A bot born in C# with DSharpPlus to learn the language, then rewritten for Telegram: it's my longest-lived personal project, I still work on it.
- lost-wifiGameMaker Language (GML)
My entry for the Opera GX game jam on the theme "no internet": a spaceship lost in deep space that has to survive and, above all, keep the Wi-Fi alive.
- codekatabattleTypeScript, Java, Alloy
A platform where students battle each other with code katas, the project for the Software Engineering 2 course at Politecnico di Milano: requirements and design document (with formal modeling in Alloy) plus implementation and testing. I'm the main contributor of the repository, with about 55% of the commits.
- production-optimiserJava + Spring, TypeScript
The project for the Distributed Software Development course at Politecnico di Milano: a Spring backend that calls production optimization models, with results stored in JSONB columns and coverage through JaCoCo.
A Node client and server that sync a key press across multiple machines over WebSocket: it was born to start the episode at the exact same moment and watch anime with my friends without the usual spoken countdown. I wrote an article about it on The Startup in 2019.
A small Go tool to download videos from Facebook.
My Advent of Code solutions, mostly in C++, with the typical consistency of someone who starts on December 1st full of enthusiasm.
- appunti-reti-di-tlcLaTeX
My LaTeX notes for the Telecommunication Networks course at Politecnico di Bari (in Italian), left public because someone will need them more than I do.