Skip to content

rcavazza/callafy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

6 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Shopify Inventory Management System

Un'applicazione completa per la gestione dell'inventario con integrazione Shopify, sviluppata con Node.js/Express backend e frontend EJS.

πŸš€ FunzionalitΓ  Principali

  • Gestione Categorie Dinamiche: Crea categorie personalizzabili con campi dinamici
  • Gestione Prodotti Completa: CRUD prodotti con varianti, opzioni e attributi
  • Upload Immagini: Sistema di upload multiplo con validazione
  • Integrazione Shopify: Export automatico e sincronizzazione bidirezionale
  • Attributi Dinamici: Metafields personalizzati per prodotti e varianti
  • API REST Complete: Oltre 50 endpoint per tutte le operazioni

πŸ—οΈ Architettura

inventario2/
β”œβ”€β”€ backend/                 # Node.js + Express API Server
β”‚   β”œβ”€β”€ config/             # Configurazioni (database, logger)
β”‚   β”œβ”€β”€ models/             # Modelli Sequelize
β”‚   β”œβ”€β”€ routes/             # API endpoints
β”‚   β”œβ”€β”€ middleware/         # Middleware personalizzati
β”‚   β”œβ”€β”€ services/           # Servizi (Shopify integration)
β”‚   β”œβ”€β”€ uploads/            # File immagini caricate
β”‚   └── logs/               # File di log
β”œβ”€β”€ shared/                 # Tipi e utilities condivise
β”œβ”€β”€ API_DOCUMENTATION.md    # Documentazione API completa
└── development-plan.md     # Piano di sviluppo dettagliato

πŸ› οΈ Stack Tecnologico

Backend

  • Runtime: Node.js
  • Framework: Express.js
  • Database: SQLite con Sequelize ORM
  • Upload: Multer per gestione file
  • Validazione: Joi
  • Logging: Winston
  • API Client: Axios (per Shopify)

Frontend

  • Template Engine: EJS
  • Styling: Tailwind CSS
  • JavaScript: Vanilla JS con architettura modulare
  • HTTP Client: Fetch API
  • State Management: Custom state manager

πŸ“Š Schema Database

Tabelle Principali

  • categories: Categorie prodotti con tipi Shopify
  • category_fields: Campi dinamici per categorie
  • products: Prodotti con metadati e handle
  • variants: Varianti prodotto con prezzi e inventario
  • options: Opzioni prodotto (colore, taglia, etc.)
  • images: Immagini prodotto/variante
  • attributes: Attributi dinamici (metafields)

Relazioni

  • Category β†’ CategoryFields (1:N)
  • Category β†’ Products (1:N)
  • Product β†’ Variants (1:N)
  • Product β†’ Options (1:N)
  • Product β†’ Images (1:N)
  • Product β†’ Attributes (1:N)
  • Variant β†’ Images (1:N)
  • Variant β†’ Attributes (1:N)

πŸš€ Quick Start

Prerequisiti

  • Node.js 18+
  • npm o yarn

Setup Backend

  1. Installa dipendenze
cd backend
npm install
  1. Configura ambiente
cp .env.example .env
# Modifica .env con le tue configurazioni
  1. Avvia server
npm run dev

Il server sarΓ  disponibile su http://localhost:3001

Setup Frontend

  1. Installa dipendenze
cd frontend
npm install
  1. Installa Tailwind CSS
npm install -D tailwindcss postcss autoprefixer
npx tailwindcss init -p
  1. Avvia development server
npm start

Il frontend sarΓ  disponibile su http://localhost:3000

πŸ“ Configurazione

Variabili Ambiente (.env)

# Server
PORT=3001
NODE_ENV=development

# Database
DATABASE_URL=sqlite:./database.sqlite

# Shopify API
SHOPIFY_SHOP_DOMAIN=your-shop.myshopify.com
SHOPIFY_ACCESS_TOKEN=your-access-token
SHOPIFY_API_VERSION=2025-01

# Upload
UPLOAD_DIR=./uploads
MAX_FILE_SIZE=5242880

# Security
CORS_ORIGIN=http://localhost:3000

Configurazione Shopify

  1. Crea un'app privata nel tuo Shopify Admin
  2. Ottieni le credenziali API
  3. Configura i permessi necessari:
    • read_products
    • write_products
    • read_inventory
    • write_inventory

πŸ”§ API Endpoints

Categorie

  • GET /api/categories - Lista categorie
  • POST /api/categories - Crea categoria
  • POST /api/categories/:id/fields - Aggiungi campo

Prodotti

  • GET /api/products - Lista prodotti
  • POST /api/products - Crea prodotto
  • POST /api/products/:id/variants - Aggiungi variante

Immagini

  • POST /api/images/upload - Upload singola immagine
  • POST /api/images/upload-multiple - Upload multiple

Shopify

  • GET /api/shopify/preview/:id - Anteprima export
  • POST /api/shopify/export/:id - Export su Shopify

Vedi API_DOCUMENTATION.md per la documentazione completa.

πŸ§ͺ Testing

Test API con curl

# Test health check
curl http://localhost:3001/health

# Lista categorie
curl http://localhost:3001/api/categories

# Crea prodotto
curl -X POST http://localhost:3001/api/products \
  -H "Content-Type: application/json" \
  -d '{"title":"Test Product","status":"active"}'

# Preview export Shopify
curl http://localhost:3001/api/shopify/preview/1

Seeding Database

cd backend
npm run seed

Questo creerΓ  dati di esempio:

  • 2 categorie (Electronics, Clothing)
  • 5 campi categoria
  • 2 prodotti con varianti
  • Attributi e opzioni di esempio

πŸ“ˆ FunzionalitΓ  Avanzate

Mapping Shopify Dinamico

  • Conversione automatica prodotti β†’ formato Shopify
  • Gestione metafields per attributi personalizzati
  • Validazione pre-export
  • Sync bidirezionale

Upload Immagini

  • Supporto formati: JPEG, PNG, GIF, WebP
  • Limite 5MB per file
  • Upload multiplo (max 10 file)
  • Associazione a prodotti/varianti

Logging e Monitoring

  • Log strutturati con Winston
  • Rotazione automatica log
  • Monitoring rate limit Shopify
  • Error tracking dettagliato

πŸ”’ Sicurezza

  • Validazione input con Joi
  • Sanitizzazione file upload
  • CORS configurato
  • Helmet per security headers
  • Rate limiting (implementabile)

🚧 Roadmap

Completato βœ…

  • Backend API completo
  • Database e modelli
  • Integrazione Shopify
  • Upload immagini
  • Documentazione API

In Sviluppo πŸ”„

  • Frontend EJS UI
  • Componenti gestione categorie
  • Componenti gestione prodotti
  • UI upload immagini
  • Dashboard Shopify export

Pianificato πŸ“‹

  • Autenticazione utenti
  • Bulk operations UI
  • Analytics e reporting
  • Multi-store support
  • API versioning

🀝 Contribuire

  1. Fork del repository
  2. Crea feature branch (git checkout -b feature/AmazingFeature)
  3. Commit changes (git commit -m 'Add AmazingFeature')
  4. Push branch (git push origin feature/AmazingFeature)
  5. Apri Pull Request

πŸ“„ Licenza

Questo progetto Γ¨ sotto licenza MIT. Vedi LICENSE per dettagli.

πŸ†˜ Supporto

Per supporto e domande:

πŸ“Š Statistiche Progetto

  • Linee di codice: 2000+
  • API endpoints: 50+
  • Modelli database: 7
  • Test coverage: In sviluppo
  • Tempo sviluppo: 1 giorno (backend completo)

Sviluppato con ❀️ per la gestione efficiente dell'inventario Shopify

About

ifykik

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published