Selected work
-
Current role2025 - today
-
A suite of products for a company in professional training, internal and customer-facing, that share one identity: a management platform for the core business, a central authorization server, a marketplace, ticketing, timesheets. I design the architecture and write most of the code.
- The problem
- The company ran its business on separate tools with separate logins. Every new product meant another user database and another password, and none of the tools talked to each other.
- What I did
- I designed and built the products as one ecosystem with a single identity. The management platform is the largest of them: it models the company’s day-to-day operations end to end, from planning to reporting, and integrates the external services the business already relies on. A separate authorization server handles login for everything and issues OIDC tokens that carry identity only, while each product keeps its own roles and decides who gets in. The marketplace sells with Stripe checkout; ticketing and timesheets run on the same stack and the same login. Decisions are written down as ADRs before they ship.
- Under the hood
- Spring Boot 4 on Java 25, Vaadin 25 with Flow and React views, Spring Security, Spring Authorization Server (Authorization Code flow, per-product access gate on the authorize endpoint), JPA with Flyway on MySQL (78 migrations on the management platform alone), Stripe embedded checkout. Releases are git tags: GitHub Actions on self-hosted runners build the image, push it to GHCR and redeploy with docker compose. Around 1,000 commits across five repositories, top committer on each.
-
- A Playwright scraper in Java, ported from a Python prototype, feeding a MySQL database.
- An Electron desktop client for internal tooling.
- Python scripts that validate Excel and PDF data for an enterprise client’s compliance process.
- A company website in Next.js.
-
-
Previous role2022 - 2025
-
A project management platform: a mobile app, a web app with gantt and timelines, task automations and Microsoft 365 integration. I was the main developer on both clients.
- The problem
- Teams needed one place to plan work from phone and desktop, with the planning views that spreadsheets and chat could not give them.
- What I did
- I built the Flutter app with BLoC state management and the Next.js web app: gantt and timeline charts, task automations, a rich-text editor, PDF export, and sign-in and calendar through Microsoft 365. Server logic runs as Firebase Cloud Functions.
- Under the hood
- Flutter with flutter_bloc and dio, Next.js with React, TipTap, react-pdf, MSAL and Microsoft Graph, Firebase Auth, Firestore and Cloud Functions on Node. About 42,000 lines of Dart and 39,000 of TypeScript, over 1,000 commits as lead author.
-
- A location-based social app for a client under NDA: Expo and Firebase, geohash proximity search, map clustering, subscription-gated chat. About 26,000 lines, 53 commits of mine.
- A company website in Next.js.
-
-
Personal2024 - 2026
-
A native app for planning group trips: vote the destination, propose stays, build the itinerary on map and calendar, split expenses, chat. Built twice, on purpose.
- The problem
- Group trips die in chat threads: nobody decides the destination, expenses get lost, the plan lives in one head. The first version, built by a team of six in 2025, worked, and taught us what the product really needed.
- What I did
- I was top committer on v1 (Angular, Ionic, Express, Prisma on Postgres). Then I wrote a technical plan and rebuilt it alone in 2026 on Expo: destination voting, expense splitting with automatic settlement, itinerary on map and calendar, realtime chat, push notifications. This time the Firestore security rules are tested against the emulator, and design decisions live next to the code.
- Under the hood
- Expo SDK 56 with expo-router and NativeWind, Zustand, react-hook-form and Zod, i18next in Italian and English, react-native-maps. Cloud Functions v2 on Node 20 for voting, expenses, invites and notifications. Firestore rules tested with the emulator, unit tests on the expense split. About 12,900 lines of TypeScript.
-
A music guessing game with printed cards: scan the QR code, the track starts on Spotify, guess title and artist before your friends do.
- The problem
- Music quizzes need a host with a playlist. I wanted a box of cards that runs the game by itself, at a table, with the phones people already have.
- What I did
- I built the app in React Native with Expo: camera scanning, Spotify playback, single and multiplayer scoring. A Python script builds the song list from Spotify and generates the printable cards, painting a radial colour gradient into each QR code so the deck looks like a deck, not a sheet of barcodes.
- Under the hood
- Expo SDK 51, expo-camera and barcode scanning, Zustand, NativeWind, Spotify Web API. Card generator in Python with qrcode and Pillow. Small codebase, whole product: printed cards, camera, streaming API.
-
Skills
In order of how much of my working time they take. Flip the page for the evidence.
-
Languages
- Java
- TypeScript
- Dart
- Python
- SQL
-
Back-end
- Java
- Spring Boot
- Spring Security
- JPA
- MySQL
- Node.js
- Express
- FastAPI
-
Front-end
- Vaadin
- TypeScript
- React
- Next.js
- Vite
- Tailwind
-
Mobile
- Flutter
- React Native
- Expo
-
Cloud
- Firebase
- Cloud Functions
- Firestore
- Docker
- Traefik
- GitHub Actions
- Google Cloud
-
Also
- Python
- Postgres
- Stripe
- Playwright
- Electron
Experience
-
Fullstack developerCompany in professional training
Design and development of fullstack platforms for internal and external use, from first draft to go-live. I make the architecture and stack decisions, integrate external products, and built the centralised single sign-on for the whole application ecosystem.
-
Fullstack developerSoftware house
Web and mobile platforms: software architecture, cloud infrastructure and the full development cycle. Lead author on both clients of a project management product.
-
Web developerDigital agency
Back-end of a custom WooCommerce e-commerce, an interactive map on the Google Maps API, and automation scripts for internal processes. First contact with Web3 and smart contracts.
-
IT systems analystIT services for the banking sector
Application management for banking institutions: batch runs and monitoring, log analysis and incident resolution on Windows, Linux and mainframe hosts, SQL for database operations.
Education
- 2021-2022Digital UniversitasFull-time programme on digital skills, with scholarships from companies and entrepreneurs
- 2018Istituto Industriale Statale Benedetto Castelli, BresciaDiploma in computer science (perito informatico, EQF 4)
About
I’m Federico, a fullstack developer from Brescia, Italy. I’ve been writing software professionally since 2020, and building platforms end to end since 2022: back-end, front-end, mobile, and the cloud underneath.
What I like is the whole loop: understanding what a product must do, choosing a stack that fits, writing it, shipping it, and keeping it honest with documentation and tests. I write decisions down before I write code.
Outside work I build the things I wish existed: a trip planner for groups of friends, a music game on printed cards.
Italian, native. English, B2/C1.
Contact
Want more detail, or my CV? Just ask: email is the fastest way to reach me.