init
This commit is contained in:
216
README.md
Normal file
216
README.md
Normal file
@@ -0,0 +1,216 @@
|
||||
# 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**
|
||||
```bash
|
||||
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**
|
||||
```bash
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
4. **Anwendung öffnen**
|
||||
- Browser: http://localhost:3000
|
||||
|
||||
### 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:
|
||||
|
||||
```yaml
|
||||
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
|
||||
```bash
|
||||
docker exec quote_postgres pg_dump -U quoteuser quotedb > backup.sql
|
||||
```
|
||||
|
||||
### Backup wiederherstellen
|
||||
```bash
|
||||
docker exec -i quote_postgres psql -U quoteuser quotedb < backup.sql
|
||||
```
|
||||
|
||||
## Wartung
|
||||
|
||||
### Logs ansehen
|
||||
```bash
|
||||
docker-compose logs -f
|
||||
```
|
||||
|
||||
### Anwendung neu starten
|
||||
```bash
|
||||
docker-compose restart
|
||||
```
|
||||
|
||||
### Anwendung stoppen
|
||||
```bash
|
||||
docker-compose down
|
||||
```
|
||||
|
||||
### Datenbank zurücksetzen (VORSICHT!)
|
||||
```bash
|
||||
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
|
||||
```bash
|
||||
docker-compose logs app
|
||||
```
|
||||
|
||||
### Datenbankverbindung fehlgeschlagen
|
||||
```bash
|
||||
docker-compose logs postgres
|
||||
```
|
||||
|
||||
### Port bereits belegt
|
||||
Ändern Sie in `docker-compose.yml` den Port:
|
||||
```yaml
|
||||
ports:
|
||||
- "3001:3000" # Statt 3000:3000
|
||||
```
|
||||
|
||||
## Support
|
||||
|
||||
Bei Problemen oder Fragen wenden Sie sich an Ihren Administrator.
|
||||
|
||||
## Lizenz
|
||||
|
||||
Proprietär - Bay Area Affiliates, Inc.
|
||||
Reference in New Issue
Block a user