Calcolatore Prezzi Software

Sistema professionale per la creazione di preventivi software con due modalità operative:

  • Menu Principale (index.html): Pagina di selezione della modalità con interfaccia intuitiva
  • Modalità Progetto (project-mode.html): Calcolo basato su ore, persone, milestone e regime fiscale italiano
  • Modalità Negozio (shop-mode.html): Calcolo basato su articoli, quantità e listino prezzi (come un e-commerce)

Caratteristiche

Modalità Standard

  • Gestione team con tariffe personalizzate per membro
  • Calcolo milestone con assegnazione task a membri specifici
  • Supporto per diversi regimi fiscali italiani (Forfettario, Ordinario, SRL, SRLS, ecc.)
  • Calcolo automatico di IRPEF, IRES, IRAP, INPS
  • Generazione PDF per cliente e documento interno
  • Salvataggio e caricamento preventivi
  • Interfaccia responsive con Alpine.js e Tailwind CSS

Modalità Negozio

  • Gestione catalogo articoli con codici SKU
  • Calcolo prezzi unitari e quantità
  • Sconti per articolo
  • Gestione spese di spedizione
  • Calcolo IVA configurabile
  • Generazione PDF preventivo
  • Interfaccia intuitiva per vendita prodotti/servizi

Struttura del Progetto

.
├── index.html              # Menu principale per selezione modalità
├── project-mode.html       # Modalità progetto (ore/persone/milestone)
├── shop-mode.html          # Modalità negozio (articoli/quantità)
├── Dockerfile              # Build immagine Docker
├── deploy.sh               # Script deploy automatico
├── .dockerignore          # Ignore file per Docker
└── helm-chart/            # Helm chart per Kubernetes
    ├── Chart.yaml         # Definizione chart
    ├── values.yaml        # Valori di configurazione
    ├── README.md          # Documentazione Helm
    ├── .helmignore       # Ignore file per Helm
    └── templates/         # Template Kubernetes
        ├── _helpers.tpl   # Helper functions
        ├── configmap.yaml # ConfigMap per HTML
        └── NOTES.txt      # Note post-install

Quick Start

Utilizzo Locale

  1. Apri direttamente nel browser:

    # Modalità standard
    firefox index.html
    
    # Modalità negozio
    firefox shop-mode.html
    
  2. Oppure con un server web locale:

    # Python 3
    python3 -m http.server 8000
    
    # PHP
    php -S localhost:8000
    
    # Node.js (con http-server)
    npx http-server -p 8000
    

    Poi visita: http://localhost:8000

Deploy con Docker

  1. Build dell'immagine:

    docker build -t calcolatore-prezzi:latest .
    
  2. Run del container:

    docker run -d -p 8080:80 --name calcolatore calcolatore-prezzi:latest
    
  3. Accesso:

    http://localhost:8080/                     # Menu principale
    http://localhost:8080/project-mode.html    # Modalità progetto
    http://localhost:8080/shop-mode.html       # Modalità negozio
    

Deploy su Kubernetes con Helm

Prerequisiti

  • Kubernetes cluster (1.19+)
  • Helm 3.0+
  • kubectl configurato

Deploy Rapido

  1. Aggiorna le dipendenze Helm:

    cd helm-chart
    helm dependency update
    cd ..
    
  2. Deploy con lo script automatico:

    # Deploy base
    ./deploy.sh
    
    # Deploy in namespace specifico
    ./deploy.sh -n production
    
    # Deploy con valori personalizzati
    ./deploy.sh -f values-prod.yaml -n production -t v1.0.0
    
    # Upgrade deployment esistente
    ./deploy.sh -u -n production -t v1.0.1
    
  3. Deploy manuale con Helm:

    helm install calcolatore-prezzi ./helm-chart \
      --namespace production \
      --create-namespace \
      --set-file configMaps.html-content.data.index\.html=./index.html \
      --set-file configMaps.html-content.data.project-mode\.html=./project-mode.html \
      --set-file configMaps.html-content.data.shop-mode\.html=./shop-mode.html
    

Configurazione Ingress

Modifica helm-chart/values.yaml:

ingress:
  enabled: true
  className: "nginx"
  annotations:
    cert-manager.io/cluster-issuer: "letsencrypt-prod"
  hosts:
    - host: calcolatore.tuodominio.com
      paths:
        - path: /
          pathType: Prefix
  tls:
    - secretName: calcolatore-tls
      hosts:
        - calcolatore.tuodominio.com

Verifica Deploy

# Stato dei pod
kubectl get pods -n production

# Logs
kubectl logs -n production -l app.kubernetes.io/name=calcolatore-prezzi -f

# Port-forward per test locale
kubectl port-forward -n production svc/calcolatore-prezzi 8080:80

Helm Chart

Il chart utilizza base-helm come dipendenza comune per standardizzare le risorse Kubernetes.

Parametri Principali

Parametro Descrizione Default
replicaCount Numero di repliche 2
image.repository Repository immagine nginx
image.tag Tag immagine alpine
service.type Tipo service ClusterIP
service.port Porta service 80
ingress.enabled Abilita ingress true
resources.limits.cpu Limite CPU 200m
resources.limits.memory Limite memoria 256Mi
autoscaling.enabled Abilita HPA false

Vedi helm-chart/README.md per la documentazione completa.

CI/CD Examples

GitHub Actions

name: Deploy

on:
  push:
    branches: [main]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2

      - name: Build Docker image
        run: docker build -t registry.example.com/calcolatore:${{ github.sha }} .

      - name: Push image
        run: docker push registry.example.com/calcolatore:${{ github.sha }}

      - name: Deploy to Kubernetes
        run: |
          helm dependency update ./helm-chart
          ./deploy.sh -u -n production -t ${{ github.sha }}

GitLab CI

stages:
  - build
  - deploy

build:
  stage: build
  script:
    - docker build -t $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA .
    - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA

deploy:
  stage: deploy
  script:
    - helm dependency update ./helm-chart
    - ./deploy.sh -u -n production -t $CI_COMMIT_SHA
  only:
    - main

Tecnologie Utilizzate

  • Frontend: HTML5, CSS3, JavaScript (Vanilla + Alpine.js)
  • Styling: Tailwind CSS (via CDN)
  • PDF Generation: jsPDF
  • Icons: Font Awesome
  • Containerization: Docker
  • Orchestration: Kubernetes + Helm 3
  • Web Server: Nginx Alpine

Funzionalità Aggiuntive

Modalità Standard

  • Calcolo dettagliato per regime fiscale italiano
  • Supporto INPS, rivalsa, ritenuta d'acconto
  • Gestione team con tariffe differenziate
  • Milestone con task assegnabili a membri specifici
  • Due PDF separati: cliente (pubblico) e interno (riservato)

Modalità Negozio

  • Gestione inventario articoli
  • Codici SKU personalizzabili
  • Sconti per singolo articolo
  • Calcolo spese di spedizione
  • IVA configurabile (0%, 4%, 10%, 22%)

Browser Supportati

  • Chrome/Chromium 90+
  • Firefox 88+
  • Safari 14+
  • Edge 90+

Licenza

[Inserisci qui la tua licenza]

Autore

[Il tuo nome]

Supporto

Per problemi o domande, apri una issue nel repository.

Contributing

Le pull request sono benvenute. Per modifiche importanti, apri prima una issue per discutere cosa vorresti cambiare.


Note:

  • Questo progetto è pensato per il mercato italiano e include calcoli fiscali specifici
  • I calcoli fiscali sono indicativi e dovresti sempre consultare un commercialista
  • Il chart Helm usa base-helm come standard per deployment Kubernetes
Description
No description provided
Readme 285 KiB
Languages
HTML 97.2%
Shell 2%
Smarty 0.6%
Dockerfile 0.2%