Go to file
Andreas Knuth f892450914 klapper 2026-01-22 10:59:05 -06:00
public klapper 2026-01-22 10:59:05 -06:00
.dockerignore init 2026-01-21 19:06:57 -06:00
.gitignore init 2026-01-21 19:06:57 -06:00
Dockerfile init 2026-01-21 19:06:57 -06:00
QUICKSTART.md init 2026-01-21 19:06:57 -06:00
README.md init 2026-01-21 19:06:57 -06:00
docker-compose.yml dfgdf 2026-01-22 09:54:19 -06:00
init.sql init 2026-01-21 19:06:57 -06:00
package-lock.json init 2026-01-21 19:06:57 -06:00
package.json init 2026-01-21 19:06:57 -06:00
server.js quill editor 2026-01-22 10:37:58 -06:00
start.bat init 2026-01-21 19:06:57 -06:00
start.sh init 2026-01-21 19:06:57 -06:00

README.md

Quote Management System - Bay Area Affiliates, Inc.

Ein vollständiges Quote-Management-System mit PostgreSQL-Datenbank, Node.js Backend und Tailwind CSS Frontend.

Features

  • Kundenverwaltung: Erstellen, Bearbeiten und Löschen von Kunden mit vollständigen US-Adressen
  • Quote-Erstellung: Generierung professioneller Angebote mit automatischer Nummerierung (YYYY-MM-XXXX)
  • Flexible Preisgestaltung:
    • Automatische Berechnung von Subtotal, Tax (8.25%) und Total
    • Tax-Exempt Option für Churches und Non-Profits
    • TBD-Support für noch nicht festgelegte Beträge mit flexiblen Fußnoten
  • PDF-Export: Generierung druckfertiger PDFs basierend auf Ihrer HTML-Vorlage
  • Responsive Design: Modernes UI mit Tailwind CSS

Installation & Start

Voraussetzungen

  • Docker
  • Docker Compose

Schnellstart

  1. Repository klonen oder Dateien kopieren

    cd quote-system
    
  2. Logo hochladen (optional)

    • Legen Sie Ihr Logo als logo_.png in den Ordner /uploads oder nutzen Sie die Upload-Funktion in der App
  3. Anwendung starten

    docker-compose up -d
    
  4. Anwendung öffnen

Erste Schritte

  1. Die Datenbank wird automatisch initialisiert mit einem Beispielkunden (Braselton Development)
  2. Navigieren Sie zu "Customers" um weitere Kunden anzulegen
  3. Erstellen Sie Ihr erstes Quote unter "Quotes" → "+ New Quote"

Verwendung

Kunden verwalten

  • Neuen Kunden anlegen: Klicken Sie auf "+ New Customer"
  • Kunde bearbeiten: Klicken Sie auf "Edit" neben dem Kunden
  • Kunde löschen: Klicken Sie auf "Delete" (Achtung: Löscht auch alle zugehörigen Quotes!)

Quotes erstellen

  1. Klicken Sie auf "+ New Quote"
  2. Wählen Sie einen Kunden aus dem Dropdown
  3. Die Quote-Nummer wird automatisch generiert (Format: YYYY-MM-XXXX)
  4. Das Datum ist standardmäßig heute, kann aber geändert werden
  5. Fügen Sie Line Items hinzu:
    • Quantity: Menge (z.B. "1", "2", "TBD")
    • Description: Beschreibung des Artikels/Service
    • Rate: Preis pro Einheit oder Stundensatz
    • Amount: Gesamtbetrag (wird bei TBD automatisch auf "TBD" gesetzt)
    • TBD Checkbox: Markiert Posten als "To Be Determined"
  6. Für Tax-Exempt Kunden (Churches, Non-Profits): Aktivieren Sie "Tax Exempt"
  7. Bei TBD-Posten: Geben Sie eine Fußnote ein (z.B. "Total excludes labor charges...")

PDF generieren

  • Klicken Sie auf "PDF" neben dem gewünschten Quote
  • Das PDF wird automatisch im originalen Design heruntergeladen

Technische Details

Architektur

  • Backend: Node.js mit Express
  • Datenbank: PostgreSQL 15
  • Frontend: Vanilla JavaScript mit Tailwind CSS
  • PDF Generation: Puppeteer
  • Container: Docker & Docker Compose

Datenbank-Schema

Customers

  • id, name, street, city, state, zip_code, account_number
  • created_at, updated_at

Quotes

  • id, quote_number, customer_id (FK), quote_date
  • tax_exempt, tax_rate, subtotal, tax_amount, total
  • has_tbd, tbd_note
  • created_at, updated_at

Quote Items

  • id, quote_id (FK), quantity, description, rate, amount
  • is_tbd, item_order
  • created_at

API Endpoints

Customers

  • GET /api/customers - Alle Kunden
  • GET /api/customers/:id - Einzelner Kunde
  • POST /api/customers - Neuer Kunde
  • PUT /api/customers/:id - Kunde aktualisieren
  • DELETE /api/customers/:id - Kunde löschen

Quotes

  • GET /api/quotes - Alle Quotes
  • GET /api/quotes/:id - Einzelnes Quote mit Items
  • POST /api/quotes - Neues Quote
  • PUT /api/quotes/:id - Quote aktualisieren
  • DELETE /api/quotes/:id - Quote löschen
  • GET /api/quotes/next-number - Nächste Quote-Nummer
  • POST /api/quotes/:id/pdf - PDF generieren

Upload

  • POST /api/upload-logo - Logo hochladen

Konfiguration

Umgebungsvariablen

Die folgenden Umgebungsvariablen können in der docker-compose.yml angepasst werden:

DB_HOST: postgres
DB_PORT: 5432
DB_USER: quoteuser
DB_PASSWORD: quotepass123  # ÄNDERN SIE DIES FÜR PRODUKTION!
DB_NAME: quotedb

Ports

  • Anwendung: 3000
  • PostgreSQL: 5432 (extern erreichbar für Backups)

Backup & Restore

Backup erstellen

docker exec quote_postgres pg_dump -U quoteuser quotedb > backup.sql

Backup wiederherstellen

docker exec -i quote_postgres psql -U quoteuser quotedb < backup.sql

Wartung

Logs ansehen

docker-compose logs -f

Anwendung neu starten

docker-compose restart

Anwendung stoppen

docker-compose down

Datenbank zurücksetzen (VORSICHT!)

docker-compose down -v
docker-compose up -d

Anpassungen

Firmendaten ändern

Bearbeiten Sie die HTML-Vorlage in server.js in der Funktion generateQuoteHTML():

  • Firmenname
  • Adresse
  • Telefonnummern
  • E-Mail
  • Tagline

Tax Rate ändern

Standard ist 8.25% (Texas). Ändern Sie in:

  • server.js: Zeile mit tax_rate: 8.25
  • init.sql: Zeile mit tax_rate DECIMAL(5,2) DEFAULT 8.25

Fehlerbehebung

Anwendung startet nicht

docker-compose logs app

Datenbankverbindung fehlgeschlagen

docker-compose logs postgres

Port bereits belegt

Ändern Sie in docker-compose.yml den Port:

ports:
  - "3001:3000"  # Statt 3000:3000

Support

Bei Problemen oder Fragen wenden Sie sich an Ihren Administrator.

Lizenz

Proprietär - Bay Area Affiliates, Inc.