OilChain Γ¨ un progetto universitario sviluppato per il corso di "Sicurezza dei Dati" presso l'UniversitΓ di Salerno. Utilizza la tecnologia blockchain (Ethereum) per garantire trasparenza, tracciabilitΓ e autenticitΓ della produzione di olio d'oliva.
π¨βπΎ Produttori e Amministratori creano lotti di olio e registrano ogni fase di produzione sulla blockchain (raccolta, pulizia, pressatura, filtraggio, confezionamento).
π₯ Consumatori scansionano il codice QR sulla bottiglia per verificare istantaneamente l'origine e la storia completa del loro olio - direttamente dalla blockchain, senza intermediari.
- π ImmutabilitΓ on-chain: Tutte le informazioni del lotto sono registrate permanentemente su Ethereum
- π± Verifica tramite QR: Scansiona il codice sulla bottiglia e accedi ai dettagli completi della produzione
- π TracciabilitΓ completa: Segui il percorso dell'olio da raccolta a confezionamento
- π¨βπΌ Gestione Admin: Dashboard intuitiva per creare, modificare e monitorare lotti
- π Autenticazione sicura: Sistema di login integrato con Better-auth
- β¨ Interfaccia moderna: UI responsiva costruita con Nuxt, TailwindCSS e NuxtUI v3
- Accedi al dashboard admin (
/admin) - Crea un nuovo lotto d'olio
- Genera il QR code per il lotto (scaricabile)
- Aggiungi le informazioni di produzione (varietΓ di oliva, provenienza, ecc)
- Aggiorna le fasi di produzione man mano che il lotto progredisce
- Il codice viene applicato sulla bottiglia di olio
- Scansiona il QR code sulla bottiglia di olio
- Visualizza istantaneamente:
- Nome e varietΓ dell'olio
- Data di inizio produzione
- Fase attuale di lavorazione
- Cronologia completa delle fasi (raccolta β confezionamento)
- Verifica l'autenticitΓ del prodotto direttamente dalla blockchain
- Nuxt 3: Framework Vue.js moderno con SSR e API server integrato
- TailwindCSS: Utility-first CSS per styling rapido e responsivo
- NuxtUI v3: Libreria di componenti UI pre-stilizzati
- Vue Qrcode Reader: Lettore di codici QR per browser
- Better-auth: Autenticazione leggera e sicura con SQLite
- SQLite: Database locale per utenti e sessioni
- Ethereum (Polygon/Hardhat): Blockchain Ethereum per la tracciabilitΓ
- Hardhat: Ambiente di sviluppo per smart contract
- Ethers.js: Libreria JavaScript per interagire con Ethereum
- Solidity: Linguaggio per smart contract
- Node.js (v18+)
- pnpm (package manager)
- Git
-
Clona il Repository
git clone https://github.com/tuousername/oilchain.git cd oilchain -
Installa le Dipendenze
pnpm install
pnpm run hardhat:compileCompila i contratti Solidity utilizzando Hardhat.
pnpm run hardhat:startAvvia una rete Ethereum locale. Il terminale mostrerΓ :
- RPC URL (es.
http://127.0.0.1:8545) - Account di test con chiavi private
- Gas price e altre configurazioni
Mantieni questo terminale aperto!
In un nuovo terminale:
pnpm run hardhat:deployDistribuisce lo smart contract sulla blockchain locale e salva l'indirizzo del contratto.
Crea un file .env nella root del progetto:
# Blockchain (dai risultati di hardhat:start e hardhat:deploy)
NUXT_PUBLIC_BC_URL=http://127.0.0.1:8545
NUXT_PUBLIC_BC_CONTRACT_ADDRESS=0x...(indirizzo del contratto)
NUXT_BC_PRIVATE_KEY=0x...(chiave privata admin)pnpm run db:migrateCrea le tabelle del database SQLite.
pnpm run db:seed-userCrea un account admin predefinito:
- Email:
admin@oilchain.com - Password:
admin123
pnpm run devAvvia il server Nuxt (normalmente su https://localhost:3000).
oilchain/
βββ app/ # Applicazione Nuxt
β βββ pages/
β β βββ index.vue # Home pubblica + scanner QR
β β βββ batch/ # Pagina dettagli lotto
β β βββ admin/ # Dashboard amministratore
β βββ components/
β β βββ Oil/ # Componenti specifici olio
β βββ composables/
β β βββ useOilChain.ts # Composable per blockchain
β βββ layouts/
βββ contracts/
β βββ OilChain.sol # Smart contract principale
βββ server/
β βββ api/
β β βββ batches/ # API gestione lotti
β β βββ oil/ # API olio
β β βββ auth/ # API autenticazione
β βββ utils/
β βββ auth.ts # Configurazione Better-auth
βββ shared/
β βββ types.ts # Tipi TypeScript condivisi
βββ hardhat.config.js # Configurazione Hardhat
Il contratto OilChain.sol implementa:
- β Creazione di nuovi lotti
- β Memorizzazione immutabile delle fasi di produzione
- β Funzioni di lettura pubblica (verifiche senza gas)
- β Controlli di accesso (solo admin puΓ² modificare)
