From 12c9d489ca64cc084ffcbfe42e2039a59a4c52e1 Mon Sep 17 00:00:00 2001 From: Andrea Lisi Date: Fri, 25 Sep 2026 14:13:29 +0200 Subject: [PATCH 1/2] Refine homepage copy in English and Italian --- src/i18n/en.ts | 9 ++++----- src/i18n/it.ts | 9 ++++----- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/src/i18n/en.ts b/src/i18n/en.ts index c6e34d7..137c917 100644 --- a/src/i18n/en.ts +++ b/src/i18n/en.ts @@ -44,7 +44,7 @@ export const en: Copy = { { label: 'Languages', value: 'IT · EN · DE in progress' }, ], intro: - 'I’ve been building web software for over 18 years, with deep experience in frontend engineering. I develop applications, shared libraries and developer tools. I work with teams on architecture, performance and integrations, and implement the solutions we agree on.', + 'I’ve been building web software for over 18 years, mainly in frontend engineering. I develop applications, shared libraries and developer tools. I work with teams on architecture, performance and integrations, and implement the solutions we agree on.', buttons: { github: 'GitHub', linkedin: 'LinkedIn', email: 'Email me', cv: 'Download CV' }, }, @@ -142,7 +142,7 @@ export const en: Copy = { ai: { heading: 'How I use AI in development', summary: - 'I evaluate AI tools on real tasks and prepare the repository for teams to use them: instructions, documentation and shared tooling. When Claude, Cursor or other assistants repeat a mistake, I work on its cause as well as correcting the resulting code.', + 'I test AI assistants on real development tasks. I maintain repository instructions, documentation and shared tools to help them navigate the code. When Claude, Cursor or another assistant repeats a mistake, I investigate the cause and address it alongside the code correction.', moreLabel: 'Read about my workflow', paragraphs: [ 'My AI work also involves the repository that teams share. I evaluate Claude, Cursor and other assistants on real tasks and maintain the instructions, documentation and shared tools they use to navigate the code.', @@ -227,13 +227,12 @@ export const en: Copy = { { name: 'Lumina', kind: 'Game development & web design', - description: - 'A multiplayer fantasy game built around text. I develop the Node.js/MongoDB backend, React client and Cloudflare infrastructure.', + description: 'A personal project: a text-based multiplayer fantasy game.', tags: ['Node.js', 'MongoDB', 'React', 'Cloudflare'], href: 'https://luminamud.com/', linkLabel: 'Explore Lumina', detail: - 'A personal project that brings together interface design, application code and the systems behind the game.', + 'I design the interfaces and develop the React client, Node.js/MongoDB backend and Cloudflare infrastructure.', imageAlt: 'Lumina’s public website: a fantasy landscape with gold typography and navigation into the game’s world.', imageSrc: '/lumina-preview.webp', diff --git a/src/i18n/it.ts b/src/i18n/it.ts index 30394c7..3137da0 100644 --- a/src/i18n/it.ts +++ b/src/i18n/it.ts @@ -45,7 +45,7 @@ export const it: Copy = { { label: 'Lingue', value: 'IT · EN · DE in corso' }, ], intro: - 'Sviluppo software per il web da oltre 18 anni, con una forte esperienza nel frontend. Realizzo applicazioni, librerie condivise e strumenti per sviluppatori. Lavoro con i team su architettura, performance e integrazioni, dalle decisioni tecniche al codice.', + 'Sviluppo software per il web da oltre 18 anni, soprattutto in ambito frontend. Realizzo applicazioni, librerie condivise e strumenti per sviluppatori. Lavoro con i team su architettura, performance e integrazioni, dalle decisioni tecniche al codice.', buttons: { github: 'GitHub', linkedin: 'LinkedIn', email: 'Scrivimi', cv: 'Scarica il CV' }, }, @@ -150,7 +150,7 @@ export const it: Copy = { ai: { heading: 'Come uso l’AI nello sviluppo', summary: - 'Valuto gli strumenti AI su attività reali e preparo il repository per il loro uso nei team: istruzioni, documentazione e strumenti condivisi. Quando Claude, Cursor o altri assistenti ripetono lo stesso errore, intervengo su ciò che lo provoca, oltre a correggere il codice prodotto.', + 'Provo gli assistenti AI su attività reali di sviluppo. Curo le istruzioni del repository, la documentazione e gli strumenti condivisi per aiutarli a orientarsi nel codice. Quando Claude, Cursor o un altro assistente ripete un errore, ne cerco la causa e intervengo anche su quella, oltre a correggere il codice.', moreLabel: 'Come li uso nel lavoro quotidiano', paragraphs: [ 'Il mio lavoro con l’AI riguarda anche il repository su cui lavorano i team. Valuto Claude, Cursor e altri assistenti su attività reali e curo le istruzioni, la documentazione e gli strumenti condivisi che usano per orientarsi nel codice.', @@ -235,13 +235,12 @@ export const it: Copy = { { name: 'Lumina', kind: 'Sviluppo di giochi e web design', - description: - 'Un gioco fantasy multiplayer basato sul testo. Sviluppo il backend Node.js/MongoDB, il client React e l’infrastruttura Cloudflare.', + description: 'Un progetto personale: un gioco fantasy multiplayer basato sul testo.', tags: ['Node.js', 'MongoDB', 'React', 'Cloudflare'], href: 'https://luminamud.com/', linkLabel: 'Esplora Lumina', detail: - 'Un progetto personale in cui lavoro sia al design delle interfacce sia al codice e ai sistemi che fanno funzionare il gioco.', + 'Progetto le interfacce e sviluppo il client React, il backend Node.js/MongoDB e l’infrastruttura Cloudflare.', imageAlt: 'Il sito pubblico di Lumina: un paesaggio fantasy con titoli dorati e la navigazione per esplorare il mondo del gioco.', imageSrc: '/lumina-preview.webp', From 3668bef1db5038137363eb927b2a10d37d5b28c8 Mon Sep 17 00:00:00 2001 From: Andrea Lisi Date: Fri, 25 Sep 2026 14:18:19 +0200 Subject: [PATCH 2/2] Use concise work descriptions across the bilingual portfolio --- src/i18n/en.ts | 58 +++++++++++++++++++++++++------------------------- src/i18n/it.ts | 58 +++++++++++++++++++++++++------------------------- 2 files changed, 58 insertions(+), 58 deletions(-) diff --git a/src/i18n/en.ts b/src/i18n/en.ts index 137c917..732f76f 100644 --- a/src/i18n/en.ts +++ b/src/i18n/en.ts @@ -44,7 +44,7 @@ export const en: Copy = { { label: 'Languages', value: 'IT · EN · DE in progress' }, ], intro: - 'I’ve been building web software for over 18 years, mainly in frontend engineering. I develop applications, shared libraries and developer tools. I work with teams on architecture, performance and integrations, and implement the solutions we agree on.', + 'Over 18 years building web software, mainly in frontend engineering: applications, shared libraries and developer tools. Architecture, performance and integration work with teams, from technical decisions through to implementation.', buttons: { github: 'GitHub', linkedin: 'LinkedIn', email: 'Email me', cv: 'Download CV' }, }, @@ -61,15 +61,15 @@ export const en: Copy = { { tone: 'root', title: 'An eye for the interface', - body: 'I started by designing and building websites. Over the years I’ve also worked on visual identities, print design, backend systems and infrastructure. I work with designers to turn mockups into interfaces that match the design and behave as intended.', + body: 'Web design was my starting point. Then came visual identities, print, backend systems and infrastructure. That background still shapes the work with designers: interfaces faithful to the mockups, in both appearance and behaviour.', }, { title: 'Rules and automated checks', - body: 'I document shared decisions and automate checks where I can. This applies to dependencies, module boundaries and builds. It also saves me from having the same conversation a dozen times.', + body: 'Shared decisions written down; checks automated where possible. Dependencies, module boundaries and builds are part of that work. It also saves me from having the same conversation a dozen times.', }, { - title: 'I work on the code and alongside the teams', - body: 'I write code and debug with developers across the teams, from junior to senior. I regularly work with their managers and with design, security and sales to understand requirements and agree on changes that affect several products.', + title: 'Code and collaboration', + body: 'Development and debugging alongside junior and senior engineers. Regular discussions with their managers and with design, security and sales to clarify requirements and agree on changes across products.', }, ], @@ -142,17 +142,17 @@ export const en: Copy = { ai: { heading: 'How I use AI in development', summary: - 'I test AI assistants on real development tasks. I maintain repository instructions, documentation and shared tools to help them navigate the code. When Claude, Cursor or another assistant repeats a mistake, I investigate the cause and address it alongside the code correction.', + 'Evaluation of Claude, Cursor and other assistants on real development tasks. Repository instructions, documentation and shared tools to help them navigate the code. Recurring mistakes are a starting point for improving that setup, alongside correcting the code.', moreLabel: 'Read about my workflow', paragraphs: [ - 'My AI work also involves the repository that teams share. I evaluate Claude, Cursor and other assistants on real tasks and maintain the instructions, documentation and shared tools they use to navigate the code.', - 'When an assistant overlooks an existing library or loses context between modules, correcting that one response is not enough. I investigate the cause, address what is missing in the repository and check whether the problem recurs. The aim is to make those improvements useful to other teams too.', + 'The work starts with real tasks in a repository shared by several teams: trying Claude, Cursor and other assistants, checking where they struggle, and maintaining the instructions, documentation and tools they use to navigate the code.', + 'A missed library or lost context between modules is a reason to look beyond the individual response. What is missing in the repository? Does the problem recur after the correction? Those checks guide changes that other teams can use too.', ], rulesLead: 'What I work on:', rules: [ - 'Code context. I make module boundaries, conventions and reusable implementations explicit in repository instructions and documentation.', - 'Shared tooling. I assess where assistants run into obstacles and work on repository tools to improve how teams use them.', - 'Verification. I review the diff, run tests and check integration with the project. I remain responsible for the code I adopt and its maintenance.', + 'Code context. Documentation of module boundaries, conventions and existing implementations to reuse.', + 'Shared tooling. Assessment of obstacles in assistant workflows and improvements to repository tools used by teams.', + 'Verification. Diff review, tests and integration checks. Responsibility for the adopted code and its maintenance stays with me.', ], backLabel: 'Back to my work', }, @@ -168,10 +168,10 @@ export const en: Copy = { tags: ['React', 'TypeScript', 'Micro-frontends', '16 projects', '12+ teams', 'Quality gates'], current: true, paragraphs: [ - 'Cross-team decisions. On Tosca Cloud, together with the team’s architect, I was a point of contact for initiatives spanning the monorepo. I worked with developers, engineering managers, principal engineers from other platforms and product stakeholders to define shared solutions.', - 'Platform development. I developed and maintained shared libraries, tools and configurations, fixed cross-project issues and supported adoption across teams. My work focused on the shared platform; product features belonged to their respective teams.', - 'Migrations and design system. I built the infrastructure for updates, coordinated them with teams and carried them out myself when needed. I worked on shared components and themes to resolve inconsistencies between products.', - 'Performance and tooling. I optimized builds and pipelines and modernized development tools. I documented decisions in ADRs, defined monorepo rules and helped teams apply them.', + 'Cross-team decisions. Point of contact alongside the team’s architect for Tosca Cloud initiatives spanning the monorepo. Definition of shared solutions with developers, engineering managers, principal engineers from other platforms and product stakeholders.', + 'Platform development. Development and maintenance of shared libraries, tools and configurations; resolution of cross-project issues and support for adoption across teams. Product features remained with their respective teams.', + 'Migrations and design system. Infrastructure for updates, coordination with teams and hands-on migration work when needed. Updates to shared components and themes to resolve inconsistencies between products.', + 'Performance and tooling. Build and pipeline optimization, development tool updates, and documentation of decisions in ADRs. Definition of monorepo rules and support for teams applying them.', ], }, { @@ -182,10 +182,10 @@ export const en: Copy = { context: 'E-commerce platform for tree planting', tags: ['React', 'Vue', 'GraphQL', 'Storefront migration'], paragraphs: [ - 'As part of the frontend team, I worked on moving the storefront out of the monolith using React, Vue and GraphQL.', - 'I helped rebuild the storefront as the company grew from around 20 to more than 150 people.', - 'I built interfaces for high-traffic campaigns. I worked regularly with the design and design system teams to integrate requests, match the mockups and follow the shared standards.', - 'For my final two years, I built the frontend for the internal back-office tools from scratch. I was the project’s only frontend developer and worked alongside the backend team and the people who used those tools for forestry operations.', + 'Contribution to the storefront migration out of the monolith, as part of the frontend team, using React, Vue and GraphQL.', + 'Storefront redevelopment during the company’s growth from around 20 to more than 150 people.', + 'Interfaces for high-traffic campaigns, with regular input from the design and design system teams to incorporate requests and follow mockups and shared standards.', + 'Development of the internal back-office frontend from scratch during the final two years. Sole frontend developer on the project, working with the backend team and the forestry operations staff using the tools.', ], }, { @@ -196,9 +196,9 @@ export const en: Copy = { context: 'Luxury e-commerce', tags: ['React', 'Webpack', 'E-commerce', 'CMS'], paragraphs: [ - 'I modernized the frontend of a live luxury e-commerce platform, gradually introducing React and a new Webpack setup.', - 'I continued to build new features during the migration without taking the shop offline.', - 'I worked on both the storefront and the internal CMS used for orders and day-to-day shop operations.', + 'Gradual introduction of React and a new Webpack setup to modernize the frontend of a live luxury e-commerce platform.', + 'Delivery of new features throughout the migration, with the shop remaining online.', + 'Development across the storefront and the internal CMS for orders and day-to-day shop operations.', ], }, { @@ -209,10 +209,10 @@ export const en: Copy = { context: 'Web agency and IT services', tags: ['Design', 'Web', 'Backend', 'Infrastructure'], paragraphs: [ - 'I joined as a designer. Over the years I also worked on web development, backend systems and infrastructure installed at client sites.', - 'I designed websites, interfaces, visual identities and print material from scratch for client projects.', - 'I built and maintained both frontend and backend applications.', - 'I installed servers, networks and firewalls on site for client companies, including manufacturers in Tuscany’s leather and fashion district.', + 'A role that started in design and expanded into web development, backend systems and infrastructure at client sites.', + 'Design of websites, interfaces, visual identities and print material from scratch for clients.', + 'Development and maintenance of frontend and backend applications.', + 'On-site installation of servers, networks and firewalls, including for manufacturers in Tuscany’s leather and fashion district.', ], }, ], @@ -232,7 +232,7 @@ export const en: Copy = { href: 'https://luminamud.com/', linkLabel: 'Explore Lumina', detail: - 'I design the interfaces and develop the React client, Node.js/MongoDB backend and Cloudflare infrastructure.', + 'Interface design, React client development, Node.js/MongoDB backend and Cloudflare infrastructure.', imageAlt: 'Lumina’s public website: a fantasy landscape with gold typography and navigation into the game’s world.', imageSrc: '/lumina-preview.webp', @@ -242,9 +242,9 @@ export const en: Copy = { name: 'Deepfield', kind: 'Interface and simulation experiment', description: - 'A space exploration prototype operated through maps, sensors and shipboard panels. I worked on the simulation and interfaces for navigating the galaxy and managing the ship’s systems.', + 'A space exploration prototype operated through maps, sensors and shipboard panels. Simulation and interface development for galaxy navigation and ship systems management.', detail: - 'I stopped development because I did not see a sustainable path to bringing it to market. It remains an experiment combining interaction design, data visualization and software development.', + 'I stopped development because I did not see a sustainable path to bringing it to market. The prototype remains an experiment in interaction design, data visualization and software development.', tags: ['TypeScript', 'PixiJS', 'WebGL', 'Simulation'], gallery: [ { diff --git a/src/i18n/it.ts b/src/i18n/it.ts index 3137da0..5359d04 100644 --- a/src/i18n/it.ts +++ b/src/i18n/it.ts @@ -45,7 +45,7 @@ export const it: Copy = { { label: 'Lingue', value: 'IT · EN · DE in corso' }, ], intro: - 'Sviluppo software per il web da oltre 18 anni, soprattutto in ambito frontend. Realizzo applicazioni, librerie condivise e strumenti per sviluppatori. Lavoro con i team su architettura, performance e integrazioni, dalle decisioni tecniche al codice.', + 'Oltre 18 anni nello sviluppo di software per il web, soprattutto frontend: applicazioni, librerie condivise e strumenti per sviluppatori. Architettura, performance e integrazioni insieme ai team, dalle decisioni tecniche all’implementazione.', buttons: { github: 'GitHub', linkedin: 'LinkedIn', email: 'Scrivimi', cv: 'Scarica il CV' }, }, @@ -62,15 +62,15 @@ export const it: Copy = { { tone: 'root', title: 'Un occhio all’interfaccia', - body: 'Ho iniziato progettando e sviluppando siti web. Negli anni ho lavorato anche su identità visive, grafica per la stampa, sistemi backend e infrastruttura. Collaboro con i designer per tradurre i mockup in interfacce fedeli al progetto e con il comportamento previsto.', + body: 'Il punto di partenza è stato il web design. Poi sono arrivati identità visive, grafica per la stampa, backend e infrastruttura. Un percorso che si ritrova nel lavoro con i designer: interfacce fedeli ai mockup, nell’aspetto e nel comportamento.', }, { title: 'Regole e controlli automatici', - body: 'Documento le decisioni condivise e, quando posso, automatizzo i controlli. Vale per dipendenze, confini tra moduli e build. Mi evita anche di ripetere la stessa conversazione con una decina di persone, una alla volta.', + body: 'Decisioni condivise messe per iscritto e controlli automatici dove possibile. Su dipendenze, confini tra moduli e build. Mi evita anche di ripetere la stessa conversazione con una decina di persone, una alla volta.', }, { - title: 'Lavoro sul codice e con i team', - body: 'Sviluppo e faccio debugging con gli sviluppatori dei team, dagli junior ai senior. Mi confronto regolarmente con i loro manager e con design, security e sales per capire le richieste e concordare le modifiche che coinvolgono più prodotti.', + title: 'Codice e collaborazione', + body: 'Sviluppo e debugging insieme a sviluppatori junior e senior. Confronto regolare con i loro manager e con design, security e sales per chiarire le richieste e concordare le modifiche tra prodotti.', }, ], @@ -150,17 +150,17 @@ export const it: Copy = { ai: { heading: 'Come uso l’AI nello sviluppo', summary: - 'Provo gli assistenti AI su attività reali di sviluppo. Curo le istruzioni del repository, la documentazione e gli strumenti condivisi per aiutarli a orientarsi nel codice. Quando Claude, Cursor o un altro assistente ripete un errore, ne cerco la causa e intervengo anche su quella, oltre a correggere il codice.', + 'Valutazione di Claude, Cursor e altri assistenti su attività reali di sviluppo. Istruzioni del repository, documentazione e strumenti condivisi per orientarli nel codice. Gli errori ricorrenti sono il punto di partenza per migliorare questo contesto, oltre a correggere il codice.', moreLabel: 'Come li uso nel lavoro quotidiano', paragraphs: [ - 'Il mio lavoro con l’AI riguarda anche il repository su cui lavorano i team. Valuto Claude, Cursor e altri assistenti su attività reali e curo le istruzioni, la documentazione e gli strumenti condivisi che usano per orientarsi nel codice.', - 'Se un assistente ignora una libreria esistente o perde il contesto tra moduli, correggere la singola risposta non basta. Cerco la causa e aggiorno ciò che manca nel repository, poi verifico se il problema si ripresenta. L’obiettivo è rendere queste correzioni utili anche agli altri team.', + 'Il lavoro parte da attività reali in un repository condiviso tra più team: prove con Claude, Cursor e altri assistenti, analisi delle difficoltà e manutenzione delle istruzioni, della documentazione e degli strumenti usati per orientarsi nel codice.', + 'Una libreria ignorata o la perdita di contesto tra moduli richiedono uno sguardo oltre la singola risposta. Cosa manca nel repository? Il problema si ripresenta dopo la correzione? Da queste verifiche nascono modifiche utili anche agli altri team.', ], rulesLead: 'Su cosa intervengo:', rules: [ - 'Contesto del codice. Rendo espliciti nelle istruzioni e nella documentazione i confini tra moduli, le convenzioni e le implementazioni da riusare.', - 'Strumenti condivisi. Valuto dove gli assistenti incontrano ostacoli e lavoro sugli strumenti del repository per migliorarne l’uso nei team.', - 'Verifica delle modifiche. Leggo il diff, eseguo i test e controllo l’integrazione nel progetto. Resto responsabile del codice che adotto e della sua manutenzione.', + 'Contesto del codice. Documentazione dei confini tra moduli, delle convenzioni e delle implementazioni esistenti da riusare.', + 'Strumenti condivisi. Analisi degli ostacoli nel lavoro con gli assistenti e miglioramento degli strumenti del repository usati dai team.', + 'Verifica delle modifiche. Revisione del diff, test e controlli di integrazione. La responsabilità del codice adottato e della sua manutenzione resta mia.', ], backLabel: 'Torna al mio lavoro', }, @@ -176,10 +176,10 @@ export const it: Copy = { tags: ['React', 'TypeScript', 'Microfrontend', '16 progetti', '12+ team', 'Quality gates'], current: true, paragraphs: [ - 'Decisioni tra team. Su Tosca Cloud, insieme all’architetto del team, sono stato un riferimento per le iniziative dell’intera monorepo. Ho lavorato con sviluppatori, engineering manager, principal engineer di altre piattaforme e referenti di prodotto per definire le soluzioni condivise.', - 'Sviluppo della piattaforma. Ho sviluppato e mantenuto librerie, strumenti e configurazioni comuni, risolto problemi trasversali e supportato l’adozione nei team. Il mio lavoro riguardava la piattaforma condivisa; le feature di prodotto erano affidate ai rispettivi team.', - 'Migrazioni e design system. Ho preparato l’infrastruttura per gli aggiornamenti, coordinandoli con i team e intervenendo direttamente quando necessario. Ho lavorato su componenti e temi condivisi per correggere le differenze tra prodotti.', - 'Performance e strumenti. Ho ottimizzato build e pipeline e modernizzato gli strumenti di sviluppo. Ho documentato le decisioni negli ADR, definito le regole della monorepo e supportato i team nell’applicarle.', + 'Decisioni tra team. Punto di riferimento insieme all’architetto del team per le iniziative di Tosca Cloud sull’intera monorepo. Definizione di soluzioni condivise con sviluppatori, engineering manager, principal engineer di altre piattaforme e referenti di prodotto.', + 'Sviluppo della piattaforma. Sviluppo e manutenzione di librerie, strumenti e configurazioni condivise; risoluzione di problemi trasversali e supporto all’adozione nei team. Le feature di prodotto restavano ai rispettivi team.', + 'Migrazioni e design system. Infrastruttura per gli aggiornamenti, coordinamento con i team ed esecuzione delle migrazioni quando necessario. Interventi su componenti e temi condivisi per correggere le differenze tra prodotti.', + 'Performance e strumenti. Ottimizzazione di build e pipeline, aggiornamento degli strumenti di sviluppo e documentazione delle decisioni negli ADR. Definizione delle regole della monorepo e supporto ai team nell’applicarle.', ], }, { @@ -190,10 +190,10 @@ export const it: Copy = { context: 'Piattaforma e-commerce per piantare alberi', tags: ['React', 'Vue', 'GraphQL', 'Migrazione storefront'], paragraphs: [ - 'Nel team frontend ho lavorato alla migrazione dello storefront fuori dal monolite, usando React, Vue e GraphQL.', - 'Ho contribuito a ricostruire lo storefront mentre l’azienda cresceva da circa 20 a più di 150 persone.', - 'Ho sviluppato le interfacce per campagne ad alto traffico. Mi confrontavo regolarmente con il team di design e con quello del design system per integrare le richieste e rispettare i mockup e gli standard condivisi.', - 'Negli ultimi due anni ho sviluppato da zero il frontend degli strumenti back-office interni. Ero l’unico frontend developer del progetto e lavoravo insieme al team backend e alle persone che usavano quegli strumenti per le operazioni forestali.', + 'Contributo alla migrazione dello storefront fuori dal monolite, nel team frontend, con React, Vue e GraphQL.', + 'Ricostruzione dello storefront durante la crescita dell’azienda da circa 20 a più di 150 persone.', + 'Interfacce per campagne ad alto traffico, con il confronto regolare con i team di design e design system per integrare le richieste e rispettare mockup e standard condivisi.', + 'Sviluppo da zero del frontend del back-office interno negli ultimi due anni. Unico frontend developer del progetto, insieme al team backend e alle persone delle operazioni forestali che usavano gli strumenti.', ], }, { @@ -204,9 +204,9 @@ export const it: Copy = { context: 'E-commerce di lusso', tags: ['React', 'Webpack', 'E-commerce', 'CMS'], paragraphs: [ - 'Ho modernizzato il frontend di un e-commerce di lusso in produzione, introducendo gradualmente React e una nuova configurazione Webpack.', - 'Durante la migrazione ho continuato a sviluppare nuove funzionalità senza fermare il negozio.', - 'Ho lavorato sia sullo storefront sia sul CMS interno usato per gli ordini e per la gestione quotidiana del negozio.', + 'Introduzione graduale di React e di una nuova configurazione Webpack per modernizzare il frontend di un e-commerce di lusso in produzione.', + 'Rilascio di nuove funzionalità durante la migrazione, con il negozio sempre online.', + 'Sviluppo sullo storefront e sul CMS interno per gli ordini e la gestione quotidiana del negozio.', ], }, { @@ -217,10 +217,10 @@ export const it: Copy = { context: 'Agenzia web e servizi IT', tags: ['Design', 'Web', 'Backend', 'Infrastruttura'], paragraphs: [ - 'Sono entrato come designer. Negli anni ho lavorato anche sullo sviluppo web, sui sistemi backend e sull’infrastruttura installata presso i clienti.', - 'Ho disegnato da zero siti, interfacce, identità visive e materiali stampati per i progetti dei clienti.', - 'Ho costruito e mantenuto applicazioni frontend e backend.', - 'Ho installato server, reti e firewall direttamente nelle aziende dei clienti, comprese le manifatture del distretto toscano della pelle e della moda.', + 'Un ruolo iniziato nel design e ampliato negli anni allo sviluppo web, ai sistemi backend e all’infrastruttura presso i clienti.', + 'Progettazione da zero di siti, interfacce, identità visive e materiali per la stampa per i clienti.', + 'Sviluppo e manutenzione di applicazioni frontend e backend.', + 'Installazione di server, reti e firewall presso i clienti, comprese le manifatture del distretto toscano della pelle e della moda.', ], }, ], @@ -240,7 +240,7 @@ export const it: Copy = { href: 'https://luminamud.com/', linkLabel: 'Esplora Lumina', detail: - 'Progetto le interfacce e sviluppo il client React, il backend Node.js/MongoDB e l’infrastruttura Cloudflare.', + 'Design delle interfacce, sviluppo del client React, backend Node.js/MongoDB e infrastruttura Cloudflare.', imageAlt: 'Il sito pubblico di Lumina: un paesaggio fantasy con titoli dorati e la navigazione per esplorare il mondo del gioco.', imageSrc: '/lumina-preview.webp', @@ -250,9 +250,9 @@ export const it: Copy = { name: 'Deepfield', kind: 'Esperimento di interfacce e simulazione', description: - 'Un prototipo di esplorazione spaziale controllato attraverso mappe, sensori e pannelli di bordo. Ho lavorato sulla simulazione e sulle interfacce per navigare la galassia e gestire i sistemi della nave.', + 'Un prototipo di esplorazione spaziale controllato attraverso mappe, sensori e pannelli di bordo. Sviluppo della simulazione e delle interfacce per navigare la galassia e gestire i sistemi della nave.', detail: - 'Ho interrotto lo sviluppo perché non vedevo un percorso sostenibile per portarlo sul mercato. Resta un esperimento in cui ho unito design delle interazioni, visualizzazione dei dati e sviluppo software.', + 'Ho interrotto lo sviluppo perché non vedevo un percorso sostenibile per portarlo sul mercato. Il prototipo resta un esperimento di design delle interazioni, visualizzazione dei dati e sviluppo software.', tags: ['TypeScript', 'PixiJS', 'WebGL', 'Simulazione'], gallery: [ {