Skip to work
A
Portfolio2026 · v1.0 · 5 projects

AMIRREZAALLAHVERDI

I design and build interface systems. Three production applications and two websites — each shipped with its own visual language. This page is the neutral ground where all five meet.

View the work

01 — index

Everything below is one design system wearing five different coats.

Five products, four palettes.
One system underneath.

My own surface stays monochrome on purpose — black, white and grey, set in IBM Plex Mono so the page reads like a codebase. Colour is never decoration here: it is borrowed, one section at a time, from the product being shown. Scroll into a project and the page takes on its palette; scroll out and it returns to neutral.

05
projects shipped
03
applications
02
websites
06
years building
01TabulasApplication#9B1818
02LaViola.itApplication#441274
03GestionaleWeb application#FFFFFF + #16A34A
04Marigo LabE-commerce B2B#FFFFFF + #005C9D
05LaViola.it WebWebsite#441274

02 — work

Selected work

(05)

Each band below adopts the palette of the product it presents.

Tabulas app icon01Application · iOS & Android

Tabulas

Companion app for the Senato della Repubblica.

Assembly agendas, committee calendars, live sessions and the document archive of the XIX legislature, pulled from open parliamentary data and made readable on a phone. Institutional crimson, a calligraphic mark, and typography that has to survive very long legal text.

  • Swift
  • Kotlin
  • Laravel
  • Open data
  • base
  • accent
  • shell

open case study

Tabulas — Assemblea, ordine del giorno
Tabulas — calendario delle commissioni permanenti
Tabulas — schermata di avvio
LaViola.it app icon02Application · iOS & Android

LaViola.it

Live match centre and news app for Fiorentina supporters.

A real-time second screen for matchday: live commentary, xG and shot maps, formations with player ratings, a fan chat and a home-screen countdown widget. Deep violet throughout, because the club owns that colour — the interface only has to get out of its way.

  • React Native
  • Swift
  • Kotlin
  • Laravel API
  • base
  • accent
  • ground

open case study

LaViola.it — statistiche partita
LaViola.it — formazioni con pagelle
LaViola.it — feed notizie
LaViola.it — widget conto alla rovescia
03Web application · 2026

Gestionale Legale

Case management system for Studio Legale Di Maria Pinò.

Nearly four thousand legal cases in one table: colour-coded workflow states, full-text search across every field, hearings, deadlines, documents and payments. White and green because it is used all day — the colour is reserved for status, so the eye goes straight to what needs chasing.

  • Laravel
  • React
  • MySQL
  • Docker
  • paper
  • accent
  • brand

open case study

gestionale.dmpavvocati.it/pratiche

Lista Pratiche

Gestisci le pratiche legali

+ Nuova Pratica

RICERCA

Cerca per tutti i campi...Tutti i campi

STATO

Tutti
3778pratiche⤓ EsportaRighe per pagina:25 ⌄
#NOME PRATICACLIENTETELEFONOEMAILSTATODATA
1RICHIAMARE
2NON_PROCEDIBILE
3CONTATTI_DA_CHIAMARE
4NON_PROCEDIBILE
5NON_PROCEDIBILE
6ATTENDIAMO_DOCUMENTAZIONE_CLIENTE
7NON_PROCEDIBILE
8NI
9ATTENDIAMO_DOCUMENTAZIONE_CLIENTE
10INVIATA_EMAIL_NO_RISPOSTA_TELEFONO

Interface reproduced in full · all client data replaced with placeholders

04E-commerce B2B · 2026

Marigo Lab

Wholesale catalogue for a medical and laboratory supplier.

Nineteen hundred articles where no two customers see the same price: every account carries its own listino, refreshed daily, layered with offer rules and coupons. The hard part was ordering — so the cart accepts a PDF or Excel straight from the customer's own system and reads the SKUs back out.

  • Laravel
  • React
  • MySQL
  • AI order import
  • paper
  • accent
  • offers

open case study

marigolab.it/prodotti-consumabili
Marigo Lab⤒ Carica ordine
Abbiamo trovato 1911 articoli per te!
CodiceNomeConfezioneLineaProd.PrezzoQuantitàCarrelloPref.
25 testTR1
1 pz.DPI1
1DPISA1
20 testTR1
2 stikBAT1
2 vialBAT1
2 stikBAT1
Carica ordine da PDF / Excel

Come funziona

Carica l’ordine dal tuo gestionale. L’IA riconosce codici articolo (SKU) e quantità; i prezzi, le offerte e i coupon vengono applicati dal carrello in base al tuo listino.

  • Formati: PDF, XLSX, XLS, CSV
  • Limiti: max 30 pagine / 500 righe
  • File conservato 30 giorni per verifica ordine
Trascina qui il file oppureScegli file dal computer
Annulla⤓ Leggi l’ordine

order-import v2026-09-10.13

Codes, names and prices redacted · every account sees its own listino

LaViola.it05Website · 2026

LaViola.it — Web

The Fiorentina supporters' newsroom the app is built on.

Editorial, rassegna stampa and a live match centre with minute-by-minute commentary and a fan chat that fills up on matchday. Laravel on Google Cloud, sized for the traffic spikes that arrive the moment a goal goes in. Same violet as the app — used as ground here rather than interface.

  • Laravel
  • Google Cloud
  • MySQL
  • Redis cache
  • base
  • light
  • ground

open case study

laviola.it
laviola.it — home
laviola.it/partite/venezia-fiorentina
laviola.it — diretta e chat dei tifosi
laviola.it/rassegna-stampa/franchino
laviola.it — articolo

03 — stack

One stack, five products,
front to back.

The design file and the repositories share one token set. Colours, spacing and type below are the same values that ship.

frontend
Next.js · React · TypeScript · Tailwind CSS
web
mobile
React Native · Swift · Kotlin
ios + android
backend
Laravel (PHP) · Node.js · Python
api + services
data
SQL (PostgreSQL, MySQL) · NoSQL (MongoDB, Redis)
persistence
infrastructure
Google Cloud Platform · Docker · CI/CD
delivery
3d + motion
react-three-fiber · GSAP ScrollTrigger · Lenis
this page
type
IBM Plex Mono (ui, body, code) · Bytesized (display)
next/font

display — bytesized

ABCDEFG 0123

Hero only. One weight, set enormous, tracked tight.

everything else — ibm plex mono

Aa Bb Cc 0123 {};

Light 300 · Regular 400 · Medium 500 · SemiBold 600

04 — interaction

Six behaviours that
do the talking.

Every effect below has a defined trigger, a duration and a reduced-motion fallback, so the build has no ambiguity to resolve.

01

Orbit + inertia

The hero wireframe follows the pointer with damped rotation and keeps spinning for ~1.2s after release.

r3f · OrbitControls, damping 0.06

02

Scroll-linked colour

A single --accent custom property is interpolated between project bands as they enter the viewport.

rAF lerp → CSS var, ~600ms

03

Magnetic cursor

Buttons and links translate up to 8px toward the pointer inside a 120px radius, then spring back.

pointermove · spring 260/22

04

Card tilt

Project mocks take a 3D rotation from pointer position — max 6° on each axis, with a moving specular edge.

perspective 1200px · rotate3d

05

Glyph scramble

Monospace headings shuffle through random glyphs on hover and resolve left to right in 480ms.

requestAnimationFrame · fixed advance

06

Grain + scanline

Animated film grain and faint horizontal scanlines sit over the whole page at low opacity.

canvas 8fps · blend soft-light

05 — contact

SAY HELLO

Open to product design and design-engineering work — contract or full time. If you have something that needs both halves of the job, I would like to hear about it.

currently available

next opening
September 2026
timezone
CET · UTC+1
reply within
24 hours
based in
Italy · remote

opens a pre-written message — copy it or send from your mail app