Lorenzo Siena's
portfolio

Work in progress 👨🏻‍💻

HRMS — Django with Python

Screenshot HRMS

Un gestionale per le Risorse Umane sviluppato in Django

Un'applicazione web per la gestione efficiente del personale in piccole e medie imprese.
Il sistema centralizza e automatizza processi HR chiave, tra cui la gestione dei dipendenti, il monitoraggio delle presenze, la gestione delle ferie e l'elaborazione delle buste paga.
Ha un login, un sistema di registrazione, autenticazione e offre inoltre funzionalità avanzate come la generazione di report sulle performance e un sistema di notifiche per le comunicazioni aziendali.

Tecnologie utilizzate:

  • Backend: Django
  • Frontend: HTML, CSS, JavaScript e Bootstrap
  • Database: SQLite
  • Autenticazione: Django Authentication

Caratteristiche Principali:

  • Gestione completa dei dipendenti.
  • Sistema di richiesta e accettazione per presenze e ferie.
  • Gestione delle buste paga con accesso riservato.
  • Generazione di report e statistiche dettagliate.
Vai al progetto

A simple Wikipedia RAG Application

Wikipedia RAG Application

Applicazione web con Streamlit e LlamaIndex

Una semplice applicazione web creata con Streamlit che dimostra il funzionamento del RAG (Retrieval Augmented Generation). L'app utilizza LlamaIndex per caricare e interrogare contenuti da pagine di Wikipedia relative all'Intelligenza Artificiale e al Machine Learning, fornendo risposte basate sul contesto recuperato.

Tecnologie utilizzate:

  • Streamlit: Per l'interfaccia utente interattiva.
  • LlamaIndex: Framework per la costruzione di applicazioni LLM con dati esterni (Wikipedia).
  • OpenAI: Per modelli di embedding e modello linguistico (LLM).
  • WikipediaReader: Lettore dati di LlamaIndex per contenuti Wikipedia.
  • python-dotenv: Gestione variabili d'ambiente.
Vai al progetto

CyberShop — Java for Android

Screenshot CyberShop

App di gestione aziendale a tema cyberpunk

Cybershop è un'app di gestione aziendale fittizia ambientata nell’anno 2079. Il suo scopo è vendere protesi cibernetiche da visualizzare nell’app attraverso la realtà aumentata o in 3D sotto forma di file STL, un formato CAD, che una volta acquistato può essere stampato a casa utilizzando una stampante 3D abilitata per la stampa di impianti e circuiti elettronici biocompatibili.

Il progetto e la demo sono stati realizzati per la materia Programmazione Mobile.

Tecnologie e Servizi Utilizzati:

Le immagini e i testi sono stati generati con Scribble Diffusion e ChatGPT. La demo è funzionale e responsive.

Repository e presentazione disponibili in PDF.

Vai al pdf Vai al progetto

Hack e Reverse Engineering di un Launchpad MK1

Hack e Reverse Engineering di un Launchpad MK1

Controllo LED via Python e MIDI

Il progetto nasce dalla curiosità di esplorare i limiti del protocollo USB e MIDI su un Novation Launchpad MK1. brInizialmente, tramite fuzzing con PyUSB e pacchetti random, sono riuscito ad accendere i LED del dispositivo, nonostante non fosse supportato su Linux.

Successivamente ho approfondito il funzionamento interno: il Launchpad è una griglia 9x9 di tasti illuminabili (3 livelli di rosso e 3 di verde, combinabili in giallo), che risponde a comandi MIDI. Ho sviluppato tre script Python per descrivere la matrice, controllarne i LED e inviare comandi sistematici, usando un wrapper che sfrutta amidi come sottoprocesso.

Oltre al controllo delle luci, lo script riceve e stampa gli eventi MIDI dei tasti premuti, trasformando il Launchpad in un’interfaccia interattiva.

In questo modo ho potuto accendere, spegnere e colorare i LED a piacimento, senza driver ufficiali, arrivando persino a creare effetti visivi con pacchetti random e sequenze di spegnimento istantanee.

Vai al video Vai al progetto su GitHub Vai all'update su LinkedIn

Server-ino — Bash script

Server-ino

Mini interfaccia grafica per LAMPP

Una minuscola interfaccia grafica per LAMPP, scritta in Bash e tput (mini libreria grafica). Ha lo scopo di avviare un server locale senza usare la riga di comando.

Vai al progetto

Johnny The CyberCar Assistant (Thesis)

Logo Johnny The CyberCar Assistant

An AI Agent for automotive, RAG enabled, with voice commands, hosted locally.

Johnny The CyberCar Assistant è un proof of concept (PoC) di un agente AI in RAG completamente locale innestato su un Opel Corsa B del 1997, frutto della mia tesi triennale in ingegneria informatica all'Università di Catania.

Architettura del progetto

Il progetto è composto da 3 sistemi:

Descrizione e Funzionalità

Ispirato a KITT di Supercar (aka Knight Rider) , Johnny rende l'auto smart: grazie a un ESP32 collegato al CAN BUS e con modem 4g abilita in Edge un interfaccia vocale, memoria a lungo termine e controllo intelligente (via Porta OBD-II).
Tutto il resto del sistema AI viene eseguito da remoto su un server con GPU consumer (GTX 1080TI).

L'assistente è invocato dalla keyword "Hey Johnny!", dopo di che é possibile attraverso comandi vocali agire in locale sui dispositivi dell'auto (come alzare i finestrini) o parlare voice2voice in remoto col Chatbot, che risponde con il contesto dei dati della macchina (posizione GPS, velocità, temperatura, etc), senza mai staccare le mani dal volante
Il database vettoriale Qdrant gestisce la memoria a breve/lungo termine dell'assistente, abilitando una vera esperienza RAG (Retrieval-Augmented Generation).

Tutti i servizi sono orchestrati con Docker Compose.

Pipeline Audio

🎤 Voce utente

❓ Se il comando è locale → esegue azione locale ⚙️
Altrimenti:

🐱 contatta johnny il chatbot remoto

🌐 Cloudflared (autenticazione)

📝 WhisperAI (Voice2Text su GPU)

🧠 LLaMA3 (Ollama, inferenza su GPU)

🔊 Text2Speech (risposta vocale)

❓ Loop: finché non rileva “stop”, torna a johnny 🐱

Esempi di utilizzo

N.B. Il Progetto é completamente open-source,è stato realizzato in circa 2 mesi e mezzo, é pensato per il riuso hardware e l'edge computing in ambito automotive.
architettura, immagini, video e tesi in pdf (ITA ONLY) completa sono disponibili nella repository.

Componenti sviluppate per il progetto

Tecnologie Coinvolte

Retro Museum

Retro Museum

Fake e-commerce a tema retro gaming in Laravel (PHP)

Retromuseum è un progetto di sviluppo web universitario su un fake e-commerce di una fittizia azienda catanese, dove gli utenti potevano acquistare giochi e console usati, con uno stile visivo fortemente ispirato alla classica grafica a 8 bit
Inizialmente backend implementato in PHP puro, poi migrata su Laravel.

Utilizza un database MySQL precompilato, richiama l'API Spotify (OAuth 2.0) per l'ultimo podcast (falso) disponibile, e utilizza MongoDB come database per il carrello (solo per ottenere punti extra per il progetto).

Include un sistema di login, con validazione client/server, una barra di ricerca e contenuti dinamicamente generati via JS da api rawg.io.

L'intera webapp é responsive da mobile.

Vai al progetto

Cloud and On Premise Solution Projects

Cloud Gaming Bare Metal

Cloud Gaming Bare Metal

Debian + Emulatore SNES + Sunshine

Una soluzione semplice di cloud gaming locale: su un vecchio laptop viene installato Debian, un emulatore SNES e il server Sunshine. In questo modo è possibile streammare giochi retro direttamente in rete e collegarsi da remoto con Moonlight, senza container o virtualizzazione.

Tecnologie utilizzate: Sunshine, Moonlight, Cloudflared Tunnel, Bsnes, Raspberry, an old PC as server.

N.B. Configurazione minimale e a costo zero, pensata per il riciclo hardware.

Vai al post su linkedin

Chatbot Locale con Docker

Chatbot Locale con Docker

Ollama + OpenWebUI + Cloudflare Tunnel

Un progetto di chatbot privato in locale, eseguito su un vecchio portatile con Docker. Il modello (Gemma2 o LLaMA 3.2) gira in un container Ollama con interfaccia web via OpenWebUI, accessibile su porta 3000.

In LAN è subito disponibile, mentre un Raspberry Pi con Cloudflare Tunnel espone il servizio in modo sicuro anche da remoto, tramite dominio personalizzato (.xyz) e autenticazione.

Tecnologie usate:

  • Ollama (local hosted AI backend)
  • LLama3.2 / Gemma2 (modelli opensource)
  • OpenWebUI (Frontend)
  • Docker & NVIDIA Container Toolkit
  • Raspberry Pi come tunnel e access point
  • Old PC con GPU o CPU multicore e almeno 4GB RAM
  • Cloudflare Tunnel per accesso remoto sicuro

N.B. Configurazione pensata per riciclare hardware ed evitare e-waste.

Vai al post su linkedin Local Chatbot