Files
SimplyCPQ2/README.md
T
tsindt 56064d672f Update README.md
Externe Libs dokumentiert
2026-09-22 09:47:49 +02:00

129 lines
4.2 KiB
Markdown

# Simple CPQ V2
Simply CPQ soll eine kleine, einfache CPQ Lösung für Klein- und Mittständische Unternehmen sein, die schnell aufgesetzt ist und leicht zu pflegen und warten.
Dieses Projekt ist der Nachfolger von Simply-CPQ und nimmt alle Erfahrungen der ersten Entwicklung auf und macht es (hoffentlich) besser :)
## Folgende Eigenschaften soll sie besitzen:
- Open Source Lösung
- Source Code überprüfbar und auf Wunsch erweiterbar (GPL 3)
- Ohne Vendor-Login
- Deine Daten gehören Dir
- Offene Formate
- Markdown
- XML
- JSON
- Unterstützung des Angebotsprozesses
- Pick products
- Nimm einen Artikel aus dem Katalog und packe ihn in den Warenkorb
- configure products
- Konfiguriere die Merkmale eines Produktes. Die Merkmalswerte werden wiederum durch Komponenten repräsentiert (keine "echte" merkmalsbasierte Konfiguration)
- configure solutions
- Konfiguriere eine Lösung bestehend aus mehreren Komponenten
- Product und Solution sind sich sehr ähnlich im Verhalten
- Konfigurationen können mehrstufig sein
- Kalkulation (Preise und Kosten auf Basis von Preis- und Kostenlisten)
- Auswahl der Preis und Kostenliste aus dem Vertriebskontext (VKOrg, Kundenland, etc.)
- Erweiterung der Kalkulation durch eigene Spalten mit entsprechend hinterlegten Formeln für Positionen
- Kundenspezifische Preise spezifizieren sich über Kundenspezifische Preislisten
- Ausgabe des Angebotes in
- Markdown
- Über Pandoc in alle anderen Formate transformierbar!
- XML
- JSON
- Erweiterbar über eigene LUA Scripte
- Offene API
- Implementiert auf Basis von GO (Server lassen sich sehr einfach mit GO bauen)
- Mehrsprachig
- Globaler Merkmalspool für eindeutige Merkmale und deren Wertemengen
## Installation
## Erste Schritte
## Entwicklungstools:
### Go
Die Software ist hauptsächlich in GO geschrieben ab der Version 1.22.
### VSCode
Als Quelltext-Editor / IDE kommt VSCode zum Einsatz.
### DBeaver
Ist der Datenbank-Editor
## Technische Dokumentation
### 20.09.2026 Grundsätzliche technische Entscheidungen
#### Systeme:
- Programmiersprache : - GO
- Javascript
- SQL
- Datenbank: Postgresql
- Webtechnologie: HTMX
#### Grundlegende technische Entscheidungen
- Jedes relevante Objekt (z.B. Produkte) hat eine Darstellung als:
- Node (Raumdarstellung)
- Form (Darstellung des Objektes und Editiermöglichkeit) - List (Listen /Tabellensicht
- Alle Objekte werden in der API über ihre eindeutige ID angesprochen. Über die ID kann ich den Typ des Objektes herausfinden
- Objekte werden nur bei Bedarf aus der Datenbank geladen.
- Objekte werden nach dem Laden oder Anlegen gechached!
- Weboberflächen zur Pflege der Daten aber auch die Seiten zur Nutzung des CPQ müssen responsive sein!
- Nutzung des 12- Spalten loyouts!
- Alle Images haben einen Alternativen Text
- Struktur der Oberfläche und die Darstellung werden strikt getrennt (HTML + CSS)
- Die Entwicklung erfolgt über die Definition von Tickets
- Jedes Ticket verursacht ein Brauch und einen Merge!
### Open Source - Pakete
#### Go:
##### Viper
Viper dient zum Laden uns Auswerten von Config-Dateien. In diesem Case werden die HTTP-Servereinstellungen und die Datenbankverbindung ausgewertet.
````
go get github.com/spf13/viper
````
##### PostgreSQL
Die Datenbank des Systems ist in dem Datenbankmanagementsystem PostgreSQL abgelegt. Zum einen braucht es eine Installation des Systems, auf dem die Software Zugriff hat und zum anderen benötigt das System die entsprechenden PostgreSQL Treiber für Go.
````
go get github.com/lib/pq
````
##### Gin Gonic
Webserver Library zum Routing der API.
````
go get -u github.com/gin-gonic/gin
go get github.com/gin-contrib/cors
go get github.com/gin-contrib/sessions
````
##### Go Air
Go Air ist ein Live-Reload-Tool für Go-Anwendungen, das die Entwicklungsproduktivität erhöht.
````
go install github.com/air-verse/air@latest
export PATH="$PATH:$(go env GOPATH)/bin"
````
Den Export ggf. in der .bashrc oder .zshrc hinzufügen.
#### HTML Erweiterungen
ggf. später lokal runter laden ...
##### HTMX
HTMX ist eine JavaScript-Bibliothek, die es ermöglicht, HTML direkt über AJAX-Anfragen zu aktualisieren.
````
<script src="https://unpkg.com/htmx.org@1.9.2"></script>
````