Skip to content

edomod/OilChain

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

19 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

OilChain πŸ«’πŸ”—

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.

Come funziona?

πŸ‘¨β€πŸŒΎ 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.

Caratteristiche Principali

  • πŸ”’ 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

Indice

Flusso di Utilizzo

Per gli Amministratori πŸ‘¨β€πŸ’Ό

  1. Accedi al dashboard admin (/admin)
  2. Crea un nuovo lotto d'olio
  3. Genera il QR code per il lotto (scaricabile)
  4. Aggiungi le informazioni di produzione (varietΓ  di oliva, provenienza, ecc)
  5. Aggiorna le fasi di produzione man mano che il lotto progredisce
  6. Il codice viene applicato sulla bottiglia di olio

Per i Consumatori πŸ‘₯

  1. Scansiona il QR code sulla bottiglia di olio
  2. Visualizza istantaneamente:
    • Nome e varietΓ  dell'olio
    • Data di inizio produzione
    • Fase attuale di lavorazione
    • Cronologia completa delle fasi (raccolta β†’ confezionamento)
  3. Verifica l'autenticitΓ  del prodotto direttamente dalla blockchain

Tecnologie

Frontend & UI

  • 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

Backend & Database

  • Better-auth: Autenticazione leggera e sicura con SQLite
  • SQLite: Database locale per utenti e sessioni

Blockchain

  • 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

Installazione

Prerequisiti

  • Node.js (v18+)
  • pnpm (package manager)
  • Git

Passaggi

  1. Clona il Repository

    git clone https://github.com/tuousername/oilchain.git
    cd oilchain
  2. Installa le Dipendenze

    pnpm install

Avvio del Progetto

1️⃣ Configurazione della Blockchain

Passo 1: Compila gli Smart Contract

pnpm run hardhat:compile

Compila i contratti Solidity utilizzando Hardhat.

Passo 2: Avvia la Blockchain Locale

pnpm run hardhat:start

Avvia 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!

Passo 3: Distribuisci i Contratti

In un nuovo terminale:

pnpm run hardhat:deploy

Distribuisce lo smart contract sulla blockchain locale e salva l'indirizzo del contratto.

2️⃣ Configurazione dell'Applicazione

Passo 1: Configura le Variabili di Ambiente

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)

Passo 2: Configura il Database

pnpm run db:migrate

Crea le tabelle del database SQLite.

Passo 3: Crea l'Utente Admin

pnpm run db:seed-user

Crea un account admin predefinito:

  • Email: admin@oilchain.com
  • Password: admin123

Passo 4: Avvia il Server di Sviluppo

pnpm run dev

Avvia il server Nuxt (normalmente su https://localhost:3000).


Struttura del Progetto

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

Presentazione

Smart Contract

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)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors