Riccardo Ferri
Developer / Piacenza, Italy

Riccardo Ferri.Full Stack Developer

Interfaces people can use.
Services that work together.

I build web applications, connect services and data, and automate repetitive tasks. I work with JavaScript, TypeScript, Node.js and Python, from the interface to application logic.

I’m looking for an opportunity in a development team. I’m also a VAT-registered freelancer, available for new projects.

Have a project? Explore my services ↗
Team opportunities and freelance collaborationsRemote · Hybrid · On-site
Web developmentService integrationProcess automationTeam and freelance experience

A website for sport.
A system for events.

CESO — Comitato Eventi Sportivi Oltrepò.
Built in 2025. Developed further in 2026.

CESO homepage proposal: the heading L’Oltrepò in movimento, navigation and three images of sports events.CESO / sito-astroRead the case study ↗

I built the new website in 2025, integrating the previous domain, and continued its development in 2026 with functional improvements and a proposed visual redesign that also revisits part of the architecture. From the calendar to individual editions, the project combines event pages, bilingual content and reusable components.

AstroSvelteTypeScriptSSGIT / EN

Compare both versions online.

Explore the current website and the 2026 redesign proposal. Links open in new tabs.

Explore the project: background, decisions and before/after

Inside the project

From content to a
reusable structure.

Redesign available as a preview
The website was built in 2025. The 2026 proposal is available on the preview subdomain; the screenshots below document the case study revisions.

Before

The previous website

eventisportivioltrepo.it was managed by another company. This was before my involvement.

2025

Building the new website

Development of comitatoeventisportivioltrepo.it and integration of the previous domain, eventisportivioltrepo.it.

2026

Development and redesign

Functional improvements, a new visual design and changes to part of the architecture to support further development.

The problem to solve

A sports events website needs to bring together upcoming dates, schedules, previous editions, photos and results. Each event has different information and materials.

My contribution

I built the website in 2025 and integrated the previous domain. In 2026 I worked on functionality and a redesign proposal, including changes to part of the event page architecture.

Technical choices

Components for galleries, documents, results and links between editions. Build-time validation, dedicated tests and guides for updating content.

A concrete example / 2026 proposal

Add an edition without rebuilding its page.

Try the edge cases ↗
  1. 01
    Gather the materials

    The event brief separates required, optional and unconfirmed information: dates, locations, copy, images and documents.

  2. 02
    Compose from data

    The catalogue feeds a shared layout. Schedules, routes and documents appear when available; IT and EN share the same assets.

  3. 03
    Check references

    A reference to a previous edition that does not exist stops the build. If its cover image is missing, the link remains available as a text card.

Verifiable result: the previous edition’s title, year and cover image are resolved from the catalogue, without copying them into the new page. Components, guides and tests support this approach.

Workflow documented in redesign revision bdc120c. The portfolio lab uses fictional examples to illustrate the rules; it does not run the client’s repository.

The previous website in the web archive

This capture from 24 May 2022 shows a landing page on the old domain, before my involvement. It is historical evidence and does not necessarily represent the last version before 2025.

Wayback Machine, 24 May 2022: the previous website’s landing page, with a Freccia dei Vini poster and a link to the event.
Open the 2022 capture on Wayback Machine ↗

There are also captures from 2024, but several images and parts of the styling do not load correctly in the archive. They are therefore not used for a visual comparison with the new website. The previous website was managed by another company.

The 2026 redesign, before and after

Two versions from 2026, with different visual hierarchies.

01 Previous version
CESO homepage before the redesign, desktop view.
02 Redesign proposal
CESO homepage redesign proposal, desktop view.

The redesign separates the main message from supporting copy, brings navigation together and highlights access to upcoming events. On mobile, a dedicated composition preserves this hierarchy.

A comparison of versions from 2026, rather than the original 2025 launch. Real screenshots from 25 September 2026: previous version c9a7594, redesign bdc120c. The links above open the updated live versions. Historical captures may differ; some assets were shared between the two versions. These images demonstrate interface choices, not measured improvements in traffic or conversion.

Architecture and maintenance

Data and content

An event catalogue and editorial configurations feed the layouts. The link to the previous edition resolves its title, year and cover image from the same catalogue.

Build-time checks

Unknown editions, self-references and invalid dates produce an explicit error. A missing cover image is handled with a text card.

Project continuity

Operational guides and templates for gathering materials accompany the components. The repository includes dedicated tests for the main event page features.

Private repository · Presentation of the work and technical decisionsLet’s talk

Services that communicate.
Tasks made simpler.

Integrations for real workflows and personal projects for experimentation.

Backend & integrations

Webhook server

A server that receives events and coordinates updates to Notion, Google Calendar and email notifications. Scheduled tasks and a processing queue organise work across services.

  • Node.js
  • Express
  • Notion API
  • Google Calendar
Try an event workflow

Personal project · Automation

Università Helpbot

Python tools to automate browser operations, collect and organise data in JSON, and create flashcards. A personal project exploring automation for study-related tasks.

  • Python
  • Selenium
  • JSON
Inside the automation
three-globe exercise: a blue Earth with an atmosphere and stars, rendered in the browser.

Personal playground

Three.js, WebGL and JavaScript games

3D graphics, shaders and browser games: from fighting games to tower defense, from platformers to multiplayer with Socket.IO. Tutorial-based learning projects with my own adaptations.

The developer side

From a task to simplify
to a concrete project.

Three areas where I can help, with examples of work to explore.

01 / WEB

Websites and applications

A website to build or develop further, content to organise, or an interface to make clearer.

What I can build
Responsive pages, reusable components and multilingual content management.
The CESO case study ↗
02 / API

Connected services

Information to transfer between tools, calendars and systems that currently need manual intervention.

What I can build
APIs, webhooks and service integrations, with error handling and operation logs.
The webhook server demo ↗
03 / AUTOMATION

Fewer repetitive steps

Data to collect, organise or transform for everyday work.

What I can build
Python or Node.js scripts and browser automation, taking the tools’ limitations into account.
A Python example ↗

Start with the process you want to improve.

Tell me what you do today, which tools you use and what outcome you want. We can define the scope, priorities and how to work together.

Tell me about your project ↗

Connect systems.
Build solutions.

From web applications to automated processes, I work on integrating interfaces, logic and data.

Download CV (Italian)

2022 — present

Full Stack Developer

Freelance · VAT-registered

Web applications, REST APIs with Express and MongoDB, webhooks and Notion integrations. Automation for recruiting and data management, LLM workflows and websites with Astro and Svelte.

June 2019 — June 2021

Front-End Developer

Wedoit · Pavia

A course delivery platform using the MERN stack, with accounts and roles, alongside a React Native mobile version.

My contribution to the team

  • Frontend architecture and reusable components, with limited reliance on external packages.
  • Development of the web frontend and mobile version.
  • Support for backend development and database architecture design.

2013 — 2018

Technical diploma in IT

ISII Marconi · Piacenza

Advanced English.

Frontend

React, Svelte, Astro
HTML, CSS, TypeScript

Backend & data

Node.js, Express, REST API
MongoDB, MySQL, PostgreSQL

Automation

Python, webhook, API
Notion, LLM, OpenCV

Other skills

C#, SQL, Git
Django in personal projects

A team to join.
A project to build.

Available for new freelance projects
and opportunities in a team.
Remote, hybrid or on-site.