mail ready

This commit is contained in:
Michael Schmeinck
2026-09-27 18:30:34 +02:00
parent 774c601889
commit fb995cefdb
33 changed files with 2787 additions and 193 deletions
-10
View File
@@ -1,10 +0,0 @@
# Default ignored files
/shelf/
/workspace.xml
# Ignored default folder with query files
/queries/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml
# Editor-based HTTP Client requests
/httpRequests/
-8
View File
@@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="WEB_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
-8
View File
@@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/dilibworld-site.iml" filepath="$PROJECT_DIR$/.idea/dilibworld-site.iml" />
</modules>
</component>
</project>
Generated
-6
View File
@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>
+72
View File
@@ -0,0 +1,72 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ChangeListManager">
<list default="true" id="9f721546-c232-4b61-96e9-19e922400117" name="Changes" comment="" />
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="Git.Settings">
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
</component>
<component name="ProjectColorInfo">{
&quot;associatedIndex&quot;: 0
}</component>
<component name="ProjectId" id="3GSFpQGIvhKaUGriv0uWvHfdCQJ" />
<component name="ProjectViewState">
<option name="hideEmptyMiddlePackages" value="true" />
<option name="showLibraryContents" value="true" />
</component>
<component name="PropertiesComponent">{
&quot;keyToString&quot;: {
&quot;ModuleVcsDetector.initialDetectionPerformed&quot;: &quot;true&quot;,
&quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&quot;,
&quot;RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252&quot;: &quot;true&quot;,
&quot;RunOnceActivity.typescript.service.memoryLimit.init&quot;: &quot;true&quot;,
&quot;git-widget-placeholder&quot;: &quot;main&quot;,
&quot;javascript.preferred.runtime.type.id&quot;: &quot;node&quot;,
&quot;last_opened_file_path&quot;: &quot;/Users/m.schmeinck/gitprojects/dilibworld/homepage&quot;,
&quot;nodejs_package_manager_path&quot;: &quot;npm&quot;,
&quot;vue.rearranger.settings.migration&quot;: &quot;true&quot;
}
}</component>
<component name="SharedIndexes">
<attachedChunks>
<set>
<option value="bundled-js-predefined-d6986cc7102b-c7e53b3be11b-JavaScript-WS-253.28294.332" />
</set>
</attachedChunks>
</component>
<component name="TaskManager">
<task active="true" id="Default" summary="Default task">
<changelist id="9f721546-c232-4b61-96e9-19e922400117" name="Changes" comment="" />
<created>1783957246577</created>
<option name="number" value="Default" />
<option name="presentableId" value="Default" />
<updated>1783957246577</updated>
<workItem from="1783957247931" duration="1432000" />
<workItem from="1790503303540" duration="6911000" />
</task>
<servers />
</component>
<component name="TypeScriptGeneratedFilesManager">
<option name="version" value="3" />
</component>
<component name="Vcs.Log.Tabs.Properties">
<option name="OPEN_GENERIC_TABS">
<map>
<entry key="caf026f1-bf7f-40a5-850f-b47bee3039ee" value="TOOL_WINDOW" />
</map>
</option>
<option name="TAB_STATES">
<map>
<entry key="caf026f1-bf7f-40a5-850f-b47bee3039ee">
<value>
<State />
</value>
</entry>
</map>
</option>
</component>
</project>
+17 -1
View File
@@ -1 +1,17 @@
<!doctype html><html lang="de"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="stylesheet" href="assets/css/foundation.min.css"><link rel="stylesheet" href="assets/css/app.css"><title>404 | dilibworld</title></head><body><main class="page-hero" style="min-height:100vh;display:grid;place-items:center"><div class="grid-container text-center"><span class="eyebrow">404</span><h1 style="max-width:none">Seite nicht gefunden.</h1><p class="lead" style="margin:auto">Page not found.</p><p><a class="button primary" href="de/index.html">Zur Startseite / Home</a></p></div></main></body></html> <!doctype html>
<html lang="de">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<link rel="stylesheet" href="assets/css/foundation.min.css">
<link rel="stylesheet" href="assets/css/app.css">
<title>404 | dilibworld</title></head>
<body>
<main class="page-hero" style="min-height:100vh;display:grid;place-items:center">
<div class="grid-container text-center"><span class="eyebrow">404</span>
<h1 style="max-width:none">Seite nicht gefunden.</h1>
<p class="lead" style="margin:auto">Page not found.</p>
<p><a class="button primary" href="de/index.html">Zur Startseite / Home</a></p></div>
</main>
</body>
</html>
+6 -3
View File
@@ -21,10 +21,13 @@ Danach `http://localhost:8080` öffnen.
## Vor Veröffentlichung zwingend anpassen ## Vor Veröffentlichung zwingend anpassen
1. **Impressum und Datenschutz:** Geschäftsführer, Registergericht, HRB, USt-ID, vollständige Firmenanschrift, Hosting-Anbieter und Löschfristen eintragen. 1. **Impressum und Datenschutz:** Geschäftsführer, Registergericht, HRB, USt-ID, vollständige Firmenanschrift,
Hosting-Anbieter und Löschfristen eintragen.
2. **Kontaktdaten:** `info@dilibworld.com` und Telefonnummer bestätigen oder in allen Dateien ersetzen. 2. **Kontaktdaten:** `info@dilibworld.com` und Telefonnummer bestätigen oder in allen Dateien ersetzen.
3. **CSS-Framework:** Das Paket enthält ein schlankes lokales, Foundation-kompatibles Grid. Soll die vollständige offizielle Foundation-Distribution eingesetzt werden, kann `assets/css/foundation.min.css` durch den offiziellen Foundation-Build ersetzt werden. 3. **CSS-Framework:** Das Paket enthält ein schlankes lokales, Foundation-kompatibles Grid. Soll die vollständige
4. **Kontaktformular:** Das Formular öffnet bewusst das lokale E-Mail-Programm und speichert keine Daten. Für serverseitigen Versand muss es an ein geprüftes Backend mit CSRF-, Spam- und Datenschutzschutz angebunden werden. offizielle Foundation-Distribution eingesetzt werden, kann `assets/css/foundation.min.css` durch den offiziellen
Foundation-Build ersetzt werden.
4. **Kontaktformular:** Das Formular sendet an `/api/contact`. Den Python-Dienst und Nginx-Proxy gemäß `backend/README.md` einrichten, bevor die aktualisierte Kontaktseite live geht.
5. **Rechtliche Prüfung:** Die Rechtstexte sind redaktionelle Vorlagen und keine Rechtsberatung. 5. **Rechtliche Prüfung:** Die Rechtstexte sind redaktionelle Vorlagen und keine Rechtsberatung.
## Deployment mit Nginx ## Deployment mit Nginx
+1052 -10
View File
File diff suppressed because one or more lines are too long
+63 -1
View File
@@ -1 +1,63 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 760 650" role="img" aria-labelledby="t d"><title id="t">dilib Systemarchitektur</title><desc id="d">Vernetzte Module für künstliche Intelligenz, Datentransfer, Stammdaten und Prozesssteuerung.</desc><defs><linearGradient id="g" x1="0" y1="0" x2="1" y2="1"><stop stop-color="#27d3dc"/><stop offset="1" stop-color="#7057ff"/></linearGradient><linearGradient id="g2" x1="0" y1="1" x2="1" y2="0"><stop stop-color="#8de36c"/><stop offset="1" stop-color="#27d3dc"/></linearGradient><filter id="s" x="-30%" y="-30%" width="160%" height="160%"><feDropShadow dx="0" dy="18" stdDeviation="18" flood-color="#071b2e" flood-opacity=".18"/></filter></defs><rect x="70" y="45" width="620" height="550" rx="56" fill="#fff" opacity=".78" filter="url(#s)"/><path d="M175 173h410M175 325h410M175 477h410M260 115v420M500 115v420" stroke="#b7d8e6" stroke-width="3" stroke-dasharray="9 12"/><g filter="url(#s)"><circle cx="380" cy="325" r="103" fill="url(#g)"/><circle cx="380" cy="325" r="78" fill="#071b2e"/><path d="M336 338c-15-28 3-71 40-75 29-3 54 20 54 49 17 6 28 21 28 39 0 24-19 43-43 43h-75c-26 0-47-21-47-47 0-22 16-41 38-45 1-12 6-24 15-34" fill="none" stroke="#fff" stroke-width="11" stroke-linecap="round"/><circle cx="350" cy="309" r="8" fill="#8de36c"/><circle cx="410" cy="293" r="8" fill="#27d3dc"/><circle cx="390" cy="355" r="8" fill="#fff"/></g><g font-family="system-ui" font-weight="800" font-size="19" text-anchor="middle"><g><circle cx="165" cy="173" r="55" fill="#fff" stroke="#27d3dc" stroke-width="4" filter="url(#s)"/><path d="M140 173h50M165 148v50" stroke="#0697aa" stroke-width="8" stroke-linecap="round"/><text x="165" y="248" fill="#071b2e">TRANSFER</text></g><g><circle cx="595" cy="173" r="55" fill="#fff" stroke="#7057ff" stroke-width="4" filter="url(#s)"/><rect x="567" y="145" width="56" height="56" rx="13" fill="none" stroke="#7057ff" stroke-width="7"/><path d="M580 161h30M580 176h30M580 190h20" stroke="#7057ff" stroke-width="5"/><text x="595" y="248" fill="#071b2e">MASTERDATA</text></g><g><circle cx="165" cy="477" r="55" fill="#fff" stroke="#8de36c" stroke-width="4" filter="url(#s)"/><path d="M165 445v64M133 477h64" stroke="#2e9c77" stroke-width="7"/><circle cx="165" cy="477" r="17" fill="#8de36c"/><text x="165" y="552" fill="#071b2e">PROCESS</text></g><g><circle cx="595" cy="477" r="55" fill="#fff" stroke="#27d3dc" stroke-width="4" filter="url(#s)"/><path d="M570 489c0-31 50-31 50 0" fill="none" stroke="#0697aa" stroke-width="7"/><circle cx="582" cy="461" r="8" fill="#7057ff"/><circle cx="607" cy="461" r="8" fill="#8de36c"/><text x="595" y="552" fill="#071b2e">IDX / OCR</text></g></g><path d="M220 187c56 16 74 35 88 72M540 187c-56 16-74 35-88 72M220 463c56-16 74-35 88-72M540 463c-56-16-74-35-88-72" stroke="url(#g)" stroke-width="7" fill="none" stroke-linecap="round"/><g fill="#fff"><circle cx="288" cy="224" r="7"/><circle cx="472" cy="224" r="7"/><circle cx="288" cy="426" r="7"/><circle cx="472" cy="426" r="7"/></g></svg> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 760 650" role="img" aria-labelledby="t d">
<title id="t">dilib Systemarchitektur</title>
<desc id="d">Vernetzte Module für künstliche Intelligenz, Datentransfer, Stammdaten und Prozesssteuerung.</desc>
<defs>
<linearGradient id="g" x1="0" y1="0" x2="1" y2="1">
<stop stop-color="#27d3dc"/>
<stop offset="1" stop-color="#7057ff"/>
</linearGradient>
<linearGradient id="g2" x1="0" y1="1" x2="1" y2="0">
<stop stop-color="#8de36c"/>
<stop offset="1" stop-color="#27d3dc"/>
</linearGradient>
<filter id="s" x="-30%" y="-30%" width="160%" height="160%">
<feDropShadow dx="0" dy="18" stdDeviation="18" flood-color="#071b2e" flood-opacity=".18"/>
</filter>
</defs>
<rect x="70" y="45" width="620" height="550" rx="56" fill="#fff" opacity=".78" filter="url(#s)"/>
<path d="M175 173h410M175 325h410M175 477h410M260 115v420M500 115v420" stroke="#b7d8e6" stroke-width="3"
stroke-dasharray="9 12"/>
<g filter="url(#s)">
<circle cx="380" cy="325" r="103" fill="url(#g)"/>
<circle cx="380" cy="325" r="78" fill="#071b2e"/>
<path d="M336 338c-15-28 3-71 40-75 29-3 54 20 54 49 17 6 28 21 28 39 0 24-19 43-43 43h-75c-26 0-47-21-47-47 0-22 16-41 38-45 1-12 6-24 15-34"
fill="none" stroke="#fff" stroke-width="11" stroke-linecap="round"/>
<circle cx="350" cy="309" r="8" fill="#8de36c"/>
<circle cx="410" cy="293" r="8" fill="#27d3dc"/>
<circle cx="390" cy="355" r="8" fill="#fff"/>
</g>
<g font-family="system-ui" font-weight="800" font-size="19" text-anchor="middle">
<g>
<circle cx="165" cy="173" r="55" fill="#fff" stroke="#27d3dc" stroke-width="4" filter="url(#s)"/>
<path d="M140 173h50M165 148v50" stroke="#0697aa" stroke-width="8" stroke-linecap="round"/>
<text x="165" y="248" fill="#071b2e">TRANSFER</text>
</g>
<g>
<circle cx="595" cy="173" r="55" fill="#fff" stroke="#7057ff" stroke-width="4" filter="url(#s)"/>
<rect x="567" y="145" width="56" height="56" rx="13" fill="none" stroke="#7057ff" stroke-width="7"/>
<path d="M580 161h30M580 176h30M580 190h20" stroke="#7057ff" stroke-width="5"/>
<text x="595" y="248" fill="#071b2e">MASTERDATA</text>
</g>
<g>
<circle cx="165" cy="477" r="55" fill="#fff" stroke="#8de36c" stroke-width="4" filter="url(#s)"/>
<path d="M165 445v64M133 477h64" stroke="#2e9c77" stroke-width="7"/>
<circle cx="165" cy="477" r="17" fill="#8de36c"/>
<text x="165" y="552" fill="#071b2e">PROCESS</text>
</g>
<g>
<circle cx="595" cy="477" r="55" fill="#fff" stroke="#27d3dc" stroke-width="4" filter="url(#s)"/>
<path d="M570 489c0-31 50-31 50 0" fill="none" stroke="#0697aa" stroke-width="7"/>
<circle cx="582" cy="461" r="8" fill="#7057ff"/>
<circle cx="607" cy="461" r="8" fill="#8de36c"/>
<text x="595" y="552" fill="#071b2e">IDX / OCR</text>
</g>
</g>
<path d="M220 187c56 16 74 35 88 72M540 187c-56 16-74 35-88 72M220 463c56-16 74-35 88-72M540 463c-56-16-74-35-88-72"
stroke="url(#g)" stroke-width="7" fill="none" stroke-linecap="round"/>
<g fill="#fff">
<circle cx="288" cy="224" r="7"/>
<circle cx="472" cy="224" r="7"/>
<circle cx="288" cy="426" r="7"/>
<circle cx="472" cy="426" r="7"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

+32 -1
View File
@@ -1 +1,32 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1200 630"><defs><linearGradient id="b" x1="0" y1="0" x2="1" y2="1"><stop stop-color="#061625"/><stop offset="1" stop-color="#164f74"/></linearGradient><linearGradient id="g" x1="0" y1="0" x2="1" y2="1"><stop stop-color="#27d3dc"/><stop offset="1" stop-color="#7057ff"/></linearGradient></defs><rect width="1200" height="630" fill="url(#b)"/><circle cx="1050" cy="80" r="280" fill="#27d3dc" opacity=".11"/><circle cx="180" cy="620" r="330" fill="#7057ff" opacity=".13"/><g transform="translate(90 100)"><circle cx="105" cy="105" r="92" fill="#fff" opacity=".08"/><circle cx="105" cy="105" r="72" fill="none" stroke="url(#g)" stroke-width="11"/><path d="M33 105h144M105 33c30 30 30 114 0 144M105 33c-30 30-30 114 0 144" fill="none" stroke="#fff" stroke-width="7"/><circle cx="160" cy="50" r="18" fill="#8de36c"/></g><text x="340" y="220" font-family="system-ui" font-size="92" font-weight="800" fill="#fff">dilibworld</text><text x="345" y="285" font-family="system-ui" font-size="34" font-weight="700" letter-spacing="4" fill="#8de6e9">GMBH</text><text x="90" y="430" font-family="system-ui" font-size="52" font-weight="750" fill="#fff">Intelligent. Secure. Connected.</text><text x="90" y="493" font-family="system-ui" font-size="29" fill="#b9d0df">Local AI and data platforms for critical business processes.</text></svg> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1200 630">
<defs>
<linearGradient id="b" x1="0" y1="0" x2="1" y2="1">
<stop stop-color="#061625"/>
<stop offset="1" stop-color="#164f74"/>
</linearGradient>
<linearGradient id="g" x1="0" y1="0" x2="1" y2="1">
<stop stop-color="#27d3dc"/>
<stop offset="1" stop-color="#7057ff"/>
</linearGradient>
</defs>
<rect width="1200" height="630" fill="url(#b)"/>
<circle cx="1050" cy="80" r="280" fill="#27d3dc" opacity=".11"/>
<circle cx="180" cy="620" r="330" fill="#7057ff" opacity=".13"/>
<g transform="translate(90 100)">
<circle cx="105" cy="105" r="92" fill="#fff" opacity=".08"/>
<circle cx="105" cy="105" r="72" fill="none" stroke="url(#g)" stroke-width="11"/>
<path d="M33 105h144M105 33c30 30 30 114 0 144M105 33c-30 30-30 114 0 144" fill="none" stroke="#fff"
stroke-width="7"/>
<circle cx="160" cy="50" r="18" fill="#8de36c"/>
</g>
<text x="340" y="220" font-family="system-ui" font-size="92" font-weight="800" fill="#fff">dilibworld</text>
<text x="345" y="285" font-family="system-ui" font-size="34" font-weight="700" letter-spacing="4" fill="#8de6e9">
GMBH
</text>
<text x="90" y="430" font-family="system-ui" font-size="52" font-weight="750" fill="#fff">Intelligent. Secure.
Connected.
</text>
<text x="90" y="493" font-family="system-ui" font-size="29" fill="#b9d0df">Local AI and data platforms for critical
business processes.
</text>
</svg>

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

+60 -1
View File
@@ -1 +1,60 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 520" role="img" aria-labelledby="t"><title id="t">Modulare dilib Plattform</title><defs><linearGradient id="g" x1="0" y1="0" x2="1" y2="1"><stop stop-color="#27d3dc"/><stop offset="1" stop-color="#7057ff"/></linearGradient><linearGradient id="g2" x1="0" y1="1" x2="1" y2="0"><stop stop-color="#8de36c"/><stop offset="1" stop-color="#27d3dc"/></linearGradient><filter id="s" x="-30%" y="-30%" width="160%" height="160%"><feDropShadow dx="0" dy="18" stdDeviation="18" flood-color="#071b2e" flood-opacity=".18"/></filter></defs><rect width="1000" height="520" rx="28" fill="#0b2238"/><g opacity=".15" stroke="#74e8ed"><path d="M0 100h1000M0 260h1000M0 420h1000M170 0v520M500 0v520M830 0v520"/></g><g font-family="system-ui" text-anchor="middle" font-weight="750"><g transform="translate(70 95)"><rect width="180" height="105" rx="20" fill="#fff" opacity=".96"/><text x="90" y="48" font-size="21" fill="#071b2e">Partner &amp; Systeme</text><text x="90" y="76" font-size="15" fill="#5d7185">REST · JSON · XML · CSV</text></g><g transform="translate(305 70)"><rect width="390" height="150" rx="26" fill="url(#g)"/><text x="195" y="65" font-size="30" fill="#fff">dilib Data Platform</text><text x="195" y="103" font-size="17" fill="#e9fbff">Transfer · Masterdata · Process</text></g><g transform="translate(750 95)"><rect width="180" height="105" rx="20" fill="#fff" opacity=".96"/><text x="90" y="48" font-size="21" fill="#071b2e">Lokale Systeme</text><text x="90" y="76" font-size="15" fill="#5d7185">ERP · CRM · DMS · Shop</text></g><g transform="translate(110 340)"><rect width="220" height="105" rx="20" fill="#fff" opacity=".96"/><text x="110" y="47" font-size="23" fill="#071b2e">dilibAI</text><text x="110" y="76" font-size="15" fill="#5d7185">lokal · privat · kontrolliert</text></g><g transform="translate(390 340)"><rect width="220" height="105" rx="20" fill="#fff" opacity=".96"/><text x="110" y="47" font-size="23" fill="#071b2e">dilib IDX</text><text x="110" y="76" font-size="15" fill="#5d7185">OCR · Index · Volltext</text></g><g transform="translate(670 340)"><rect width="220" height="105" rx="20" fill="#fff" opacity=".96"/><text x="110" y="47" font-size="23" fill="#071b2e">Governance</text><text x="110" y="76" font-size="15" fill="#5d7185">Rechte · Audit · Monitoring</text></g></g><g stroke="#27d3dc" stroke-width="7" fill="none" stroke-linecap="round"><path d="M250 147h55M695 147h55M500 220v70M220 340l190-120M500 340V220M780 340L590 220"/></g><g fill="#8de36c"><circle cx="278" cy="147" r="8"/><circle cx="722" cy="147" r="8"/><circle cx="500" cy="280" r="8"/></g></svg> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 520" role="img" aria-labelledby="t">
<title id="t">Modulare dilib Plattform</title>
<defs>
<linearGradient id="g" x1="0" y1="0" x2="1" y2="1">
<stop stop-color="#27d3dc"/>
<stop offset="1" stop-color="#7057ff"/>
</linearGradient>
<linearGradient id="g2" x1="0" y1="1" x2="1" y2="0">
<stop stop-color="#8de36c"/>
<stop offset="1" stop-color="#27d3dc"/>
</linearGradient>
<filter id="s" x="-30%" y="-30%" width="160%" height="160%">
<feDropShadow dx="0" dy="18" stdDeviation="18" flood-color="#071b2e" flood-opacity=".18"/>
</filter>
</defs>
<rect width="1000" height="520" rx="28" fill="#0b2238"/>
<g opacity=".15" stroke="#74e8ed">
<path d="M0 100h1000M0 260h1000M0 420h1000M170 0v520M500 0v520M830 0v520"/>
</g>
<g font-family="system-ui" text-anchor="middle" font-weight="750">
<g transform="translate(70 95)">
<rect width="180" height="105" rx="20" fill="#fff" opacity=".96"/>
<text x="90" y="48" font-size="21" fill="#071b2e">Partner &amp; Systeme</text>
<text x="90" y="76" font-size="15" fill="#5d7185">REST · JSON · XML · CSV</text>
</g>
<g transform="translate(305 70)">
<rect width="390" height="150" rx="26" fill="url(#g)"/>
<text x="195" y="65" font-size="30" fill="#fff">dilib Data Platform</text>
<text x="195" y="103" font-size="17" fill="#e9fbff">Transfer · Masterdata · Process</text>
</g>
<g transform="translate(750 95)">
<rect width="180" height="105" rx="20" fill="#fff" opacity=".96"/>
<text x="90" y="48" font-size="21" fill="#071b2e">Lokale Systeme</text>
<text x="90" y="76" font-size="15" fill="#5d7185">ERP · CRM · DMS · Shop</text>
</g>
<g transform="translate(110 340)">
<rect width="220" height="105" rx="20" fill="#fff" opacity=".96"/>
<text x="110" y="47" font-size="23" fill="#071b2e">dilibAI</text>
<text x="110" y="76" font-size="15" fill="#5d7185">lokal · privat · kontrolliert</text>
</g>
<g transform="translate(390 340)">
<rect width="220" height="105" rx="20" fill="#fff" opacity=".96"/>
<text x="110" y="47" font-size="23" fill="#071b2e">dilib IDX</text>
<text x="110" y="76" font-size="15" fill="#5d7185">OCR · Index · Volltext</text>
</g>
<g transform="translate(670 340)">
<rect width="220" height="105" rx="20" fill="#fff" opacity=".96"/>
<text x="110" y="47" font-size="23" fill="#071b2e">Governance</text>
<text x="110" y="76" font-size="15" fill="#5d7185">Rechte · Audit · Monitoring</text>
</g>
</g>
<g stroke="#27d3dc" stroke-width="7" fill="none" stroke-linecap="round">
<path d="M250 147h55M695 147h55M500 220v70M220 340l190-120M500 340V220M780 340L590 220"/>
</g>
<g fill="#8de36c">
<circle cx="278" cy="147" r="8"/>
<circle cx="722" cy="147" r="8"/>
<circle cx="500" cy="280" r="8"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

+15 -1
View File
@@ -1 +1,15 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200" role="img"><defs><linearGradient id="g" x1="0" y1="0" x2="1" y2="1"><stop stop-color="#27d3dc"/><stop offset="1" stop-color="#7057ff"/></linearGradient></defs><path d="M64 82c-22-8-31-35-17-54 12-17 35-21 52-10 14-7 32-2 40 11 19 2 33 18 33 37 0 21-17 38-38 38H73c-18 0-33-10-39-25" fill="none" stroke="url(#g)" stroke-width="10" stroke-linecap="round"/><circle cx="82" cy="56" r="7" fill="#8de36c"/><circle cx="126" cy="48" r="7" fill="#27d3dc"/><circle cx="112" cy="84" r="7" fill="#7057ff"/><path d="M92 128h40v40H92z" fill="none" stroke="#071b2e" stroke-width="8"/><path d="M101 128v-13a11 11 0 0122 0v13" fill="none" stroke="#071b2e" stroke-width="8"/></svg> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200" role="img">
<defs>
<linearGradient id="g" x1="0" y1="0" x2="1" y2="1">
<stop stop-color="#27d3dc"/>
<stop offset="1" stop-color="#7057ff"/>
</linearGradient>
</defs>
<path d="M64 82c-22-8-31-35-17-54 12-17 35-21 52-10 14-7 32-2 40 11 19 2 33 18 33 37 0 21-17 38-38 38H73c-18 0-33-10-39-25"
fill="none" stroke="url(#g)" stroke-width="10" stroke-linecap="round"/>
<circle cx="82" cy="56" r="7" fill="#8de36c"/>
<circle cx="126" cy="48" r="7" fill="#27d3dc"/>
<circle cx="112" cy="84" r="7" fill="#7057ff"/>
<path d="M92 128h40v40H92z" fill="none" stroke="#071b2e" stroke-width="8"/>
<path d="M101 128v-13a11 11 0 0122 0v13" fill="none" stroke="#071b2e" stroke-width="8"/>
</svg>

Before

Width:  |  Height:  |  Size: 725 B

After

Width:  |  Height:  |  Size: 821 B

+12 -1
View File
@@ -1 +1,12 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200" role="img"><defs><linearGradient id="g" x1="0" y1="0" x2="1" y2="1"><stop stop-color="#27d3dc"/><stop offset="1" stop-color="#7057ff"/></linearGradient></defs><path d="M55 24h67l30 30v122H55z" fill="none" stroke="url(#g)" stroke-width="9" stroke-linejoin="round"/><path d="M122 24v31h30M76 84h54M76 108h54M76 132h35" stroke="#071b2e" stroke-width="8" stroke-linecap="round"/><circle cx="132" cy="144" r="27" fill="#fff" stroke="#7057ff" stroke-width="8"/><path d="M151 163l18 18" stroke="#7057ff" stroke-width="9" stroke-linecap="round"/></svg> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200" role="img">
<defs>
<linearGradient id="g" x1="0" y1="0" x2="1" y2="1">
<stop stop-color="#27d3dc"/>
<stop offset="1" stop-color="#7057ff"/>
</linearGradient>
</defs>
<path d="M55 24h67l30 30v122H55z" fill="none" stroke="url(#g)" stroke-width="9" stroke-linejoin="round"/>
<path d="M122 24v31h30M76 84h54M76 108h54M76 132h35" stroke="#071b2e" stroke-width="8" stroke-linecap="round"/>
<circle cx="132" cy="144" r="27" fill="#fff" stroke="#7057ff" stroke-width="8"/>
<path d="M151 163l18 18" stroke="#7057ff" stroke-width="9" stroke-linecap="round"/>
</svg>

Before

Width:  |  Height:  |  Size: 606 B

After

Width:  |  Height:  |  Size: 682 B

+12 -1
View File
@@ -1 +1,12 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200" role="img"><defs><linearGradient id="g" x1="0" y1="0" x2="1" y2="1"><stop stop-color="#27d3dc"/><stop offset="1" stop-color="#7057ff"/></linearGradient></defs><ellipse cx="100" cy="46" rx="57" ry="24" fill="none" stroke="url(#g)" stroke-width="9"/><path d="M43 46v76c0 13 25 24 57 24s57-11 57-24V46M43 83c0 13 25 24 57 24s57-11 57-24" fill="none" stroke="url(#g)" stroke-width="9"/><path d="M78 170h44" stroke="#071b2e" stroke-width="9" stroke-linecap="round"/></svg> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200" role="img">
<defs>
<linearGradient id="g" x1="0" y1="0" x2="1" y2="1">
<stop stop-color="#27d3dc"/>
<stop offset="1" stop-color="#7057ff"/>
</linearGradient>
</defs>
<ellipse cx="100" cy="46" rx="57" ry="24" fill="none" stroke="url(#g)" stroke-width="9"/>
<path d="M43 46v76c0 13 25 24 57 24s57-11 57-24V46M43 83c0 13 25 24 57 24s57-11 57-24" fill="none" stroke="url(#g)"
stroke-width="9"/>
<path d="M78 170h44" stroke="#071b2e" stroke-width="9" stroke-linecap="round"/>
</svg>

Before

Width:  |  Height:  |  Size: 529 B

After

Width:  |  Height:  |  Size: 610 B

+12 -1
View File
@@ -1 +1,12 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200" role="img"><defs><linearGradient id="g" x1="0" y1="0" x2="1" y2="1"><stop stop-color="#27d3dc"/><stop offset="1" stop-color="#7057ff"/></linearGradient></defs><circle cx="100" cy="100" r="64" fill="none" stroke="url(#g)" stroke-width="10" stroke-dasharray="14 10"/><circle cx="100" cy="100" r="31" fill="none" stroke="#071b2e" stroke-width="10"/><path d="M100 54v18M100 128v18M54 100h18M128 100h18" stroke="#071b2e" stroke-width="10" stroke-linecap="round"/><circle cx="100" cy="100" r="9" fill="#8de36c"/></svg> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200" role="img">
<defs>
<linearGradient id="g" x1="0" y1="0" x2="1" y2="1">
<stop stop-color="#27d3dc"/>
<stop offset="1" stop-color="#7057ff"/>
</linearGradient>
</defs>
<circle cx="100" cy="100" r="64" fill="none" stroke="url(#g)" stroke-width="10" stroke-dasharray="14 10"/>
<circle cx="100" cy="100" r="31" fill="none" stroke="#071b2e" stroke-width="10"/>
<path d="M100 54v18M100 128v18M54 100h18M128 100h18" stroke="#071b2e" stroke-width="10" stroke-linecap="round"/>
<circle cx="100" cy="100" r="9" fill="#8de36c"/>
</svg>

Before

Width:  |  Height:  |  Size: 574 B

After

Width:  |  Height:  |  Size: 650 B

+12 -1
View File
@@ -1 +1,12 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200" role="img"><defs><linearGradient id="g" x1="0" y1="0" x2="1" y2="1"><stop stop-color="#27d3dc"/><stop offset="1" stop-color="#7057ff"/></linearGradient></defs><path d="M34 72h108M118 48l24 24-24 24M166 136H58M82 112l-24 24 24 24" fill="none" stroke="url(#g)" stroke-width="12" stroke-linecap="round" stroke-linejoin="round"/><circle cx="38" cy="72" r="12" fill="#8de36c"/><circle cx="162" cy="136" r="12" fill="#7057ff"/></svg> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200" role="img">
<defs>
<linearGradient id="g" x1="0" y1="0" x2="1" y2="1">
<stop stop-color="#27d3dc"/>
<stop offset="1" stop-color="#7057ff"/>
</linearGradient>
</defs>
<path d="M34 72h108M118 48l24 24-24 24M166 136H58M82 112l-24 24 24 24" fill="none" stroke="url(#g)"
stroke-width="12" stroke-linecap="round" stroke-linejoin="round"/>
<circle cx="38" cy="72" r="12" fill="#8de36c"/>
<circle cx="162" cy="136" r="12" fill="#7057ff"/>
</svg>

Before

Width:  |  Height:  |  Size: 489 B

After

Width:  |  Height:  |  Size: 570 B

+71 -46
View File
@@ -1,50 +1,75 @@
(() => { (() => {
const menuButton = document.querySelector('[data-menu-toggle]'); const menuButton = document.querySelector('[data-menu-toggle]');
const mobileNav = document.querySelector('[data-mobile-nav]'); const mobileNav = document.querySelector('[data-mobile-nav]');
if (menuButton && mobileNav) { if (menuButton && mobileNav) {
menuButton.addEventListener('click', () => { menuButton.addEventListener('click', () => {
const open = mobileNav.classList.toggle('open'); const open = mobileNav.classList.toggle('open');
menuButton.classList.toggle('open', open); menuButton.classList.toggle('open', open);
menuButton.setAttribute('aria-expanded', String(open)); menuButton.setAttribute('aria-expanded', String(open));
});
mobileNav.querySelectorAll('a').forEach(a => a.addEventListener('click', () => {
mobileNav.classList.remove('open');
menuButton.classList.remove('open');
menuButton.setAttribute('aria-expanded', 'false');
}));
}
const observer = 'IntersectionObserver' in window ? new IntersectionObserver(entries => {
entries.forEach(entry => {
if (entry.isIntersecting) {
entry.target.classList.add('visible');
observer.unobserve(entry.target);
}
});
}, {threshold: .12}) : null;
document.querySelectorAll('.reveal-on-scroll').forEach(el => observer ? observer.observe(el) : el.classList.add('visible'));
document.querySelectorAll('[data-contact-form]').forEach(form => {
let challengePromise = fetch('/api/contact', {credentials: 'same-origin', cache: 'no-store'}).then(r => {
if (!r.ok) throw new Error('challenge');
return r.json();
}).catch(() => null);
form.addEventListener('submit', async event => {
event.preventDefault();
if (!form.reportValidity()) return;
const fd = new FormData(form);
const lang = document.documentElement.lang || 'de';
const status = form.querySelector('.form-status');
const button = form.querySelector('button[type="submit"]');
button.disabled = true;
status.style.display = 'block';
status.textContent = lang === 'de' ? 'Nachricht wird gesendet …' : 'Sending message …';
try {
const challenge = await challengePromise;
if (!challenge?.token) throw new Error('challenge');
const {token} = challenge;
const payload = Object.fromEntries(fd.entries());
payload.token = token;
payload.lang = lang;
const response = await fetch('/api/contact', {
method: 'POST', credentials: 'same-origin',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify(payload)
});
if (!response.ok) throw new Error('send');
status.textContent = lang === 'de' ? 'Vielen Dank. Ihre Nachricht wurde übermittelt.' : 'Thank you. Your message has been submitted.';
form.reset();
challengePromise = fetch('/api/contact', {credentials: 'same-origin', cache: 'no-store'}).then(r => r.json()).catch(() => null);
} catch (_) {
status.textContent = lang === 'de' ? 'Die Nachricht konnte nicht gesendet werden. Bitte versuchen Sie es später erneut oder schreiben Sie an info@dilibworld.com.' : 'Your message could not be sent. Please try again later or email info@dilibworld.com.';
} finally {
button.disabled = false;
}
});
}); });
mobileNav.querySelectorAll('a').forEach(a => a.addEventListener('click', () => {
mobileNav.classList.remove('open'); menuButton.classList.remove('open'); const notice = document.querySelector('[data-cookie-notice]');
menuButton.setAttribute('aria-expanded', 'false'); const choice = localStorage.getItem('dilibworld-cookie-choice');
if (notice && !choice) notice.classList.add('show');
document.querySelectorAll('[data-cookie-choice]').forEach(btn => btn.addEventListener('click', () => {
localStorage.setItem('dilibworld-cookie-choice', btn.dataset.cookieChoice);
notice?.classList.remove('show');
})); }));
}
const observer = 'IntersectionObserver' in window ? new IntersectionObserver(entries => { document.querySelectorAll('[data-current-year]').forEach(el => el.textContent = new Date().getFullYear());
entries.forEach(entry => { })();
if (entry.isIntersecting) { entry.target.classList.add('visible'); observer.unobserve(entry.target); }
});
}, {threshold: .12}) : null;
document.querySelectorAll('.reveal-on-scroll').forEach(el => observer ? observer.observe(el) : el.classList.add('visible'));
document.querySelectorAll('[data-mailto-form]').forEach(form => {
form.addEventListener('submit', event => {
event.preventDefault();
if (!form.reportValidity()) return;
const fd = new FormData(form);
const lang = document.documentElement.lang || 'de';
const lines = [];
for (const [key, value] of fd.entries()) {
if (key !== 'privacy' && key !== 'website') lines.push(`${key}: ${value}`);
}
const subject = lang === 'de' ? 'Anfrage über dilibworld.com' : 'Enquiry via dilibworld.com';
const email = form.dataset.recipient || 'info@dilibworld.com';
window.location.href = `mailto:${email}?subject=${encodeURIComponent(subject)}&body=${encodeURIComponent(lines.join('\n'))}`;
const status = form.querySelector('.form-status');
if (status) { status.style.display = 'block'; }
});
});
const notice = document.querySelector('[data-cookie-notice]');
const choice = localStorage.getItem('dilibworld-cookie-choice');
if (notice && !choice) notice.classList.add('show');
document.querySelectorAll('[data-cookie-choice]').forEach(btn => btn.addEventListener('click', () => {
localStorage.setItem('dilibworld-cookie-choice', btn.dataset.cookieChoice);
notice?.classList.remove('show');
}));
document.querySelectorAll('[data-current-year]').forEach(el => el.textContent = new Date().getFullYear());
})();
+11
View File
@@ -0,0 +1,11 @@
# Kontaktformular mit Microsoft 365
Den Ordner `backend/` vorzugsweise außerhalb des Nginx-Webroots installieren. Wenn das ganze Projekt als Webroot dient, muss die beigefügte Nginx-Regel `/backend/` sperren. Die statischen Seiten bleiben bei Nginx. Nur `/api/contact` wird an den lokalen Python-WSGI-Dienst weitergeleitet.
1. In Microsoft Entra eine eigene App registrieren, Microsoft Graph **Anwendungsberechtigung** `Mail.Send` erteilen und Administratorzustimmung geben. Die Sendeberechtigung in Exchange Online auf das vorgesehene Postfach einschränken (Application RBAC). Der Absender muss ein vorhandenes Exchange-Online-Postfach sein. Für das Formular kann `info@dilibworld.com` zugleich Absender und Empfänger sein; die Besuchermail steht in `Reply-To`.
2. `contact.env.example` als nicht öffentlich erreichbare Environment-Datei außerhalb des Webroots ablegen. `CONTACT_FORM_SECRET` mit `openssl rand -hex 32` erzeugen. IDs, Secret und Absender eintragen. Die Secret-Datei mit restriktiven Rechten schützen und **nie** in Git oder den Webroot legen.
3. Python-Umgebung anlegen: `python3 -m venv /opt/dilibworld-contact-venv` und `/opt/dilibworld-contact-venv/bin/pip install -r backend/requirements.txt`. Dienst mit einer Gunicorn-Worker-Instanz starten: `gunicorn --workers 1 --bind 127.0.0.1:8091 app:application` (Arbeitsverzeichnis `backend/`, Environment-Datei durch systemd `EnvironmentFile=` einlesen). Nur localhost binden. Bei mehreren Workern muss der einmalige Formularschlüssel in einem gemeinsamen Speicher verwaltet werden.
4. Die beiden Snippets aus `nginx-contact.conf.example` an den angegebenen Stellen in die bestehende HTTPS-Konfiguration aufnehmen. HTTP nach HTTPS umleiten. `nginx -t` ausführen und Nginx neu laden. Wenn `www.dilibworld.com` erreichbar ist, auf `dilibworld.com` umleiten, damit die Origin-Prüfung passt.
5. Nach Einrichtung eine echte Anfrage senden und Empfang sowie `Reply-To` prüfen. Ein gefülltes Feld `website` wird still verworfen. Bei Mailfehlern erscheint eine Fehlermeldung im Formular. Die Datenschutzvorlagen enthalten noch auszufüllende Angaben.
Der Server prüft Origin, Formularalter, Honeypot, Pflichtfelder, Inhaltstyp und Länge. Nginx begrenzt Anfragen pro IP. Es werden keine Tokens oder Mailinhalte protokolliert. Microsoft Graph bestätigt eine angenommene Nachricht mit HTTP 202; die tatsächliche Zustellung ist damit noch nicht garantiert.
+132
View File
@@ -0,0 +1,132 @@
"""Small WSGI contact endpoint. Run behind HTTPS and the Nginx rate limit."""
import base64
import binascii
import hashlib
import hmac
import json
import logging
import os
import re
import secrets
import time
import urllib.error
import urllib.parse
import urllib.request
LOG = logging.getLogger(__name__)
ORIGIN = os.environ.get('CONTACT_ORIGIN', 'https://dilibworld.com').rstrip('/')
SECRET = os.environ.get('CONTACT_FORM_SECRET', '').encode()
SENDER = os.environ.get('GRAPH_SENDER', 'info@dilibworld.com')
RECIPIENT = os.environ.get('CONTACT_RECIPIENT', 'info@dilibworld.com')
FIELDS = {
'de': ('Vorname', 'Nachname', 'Unternehmen', 'E-Mail', 'Telefon', 'Thema', 'Nachricht'),
'en': ('First name', 'Last name', 'Company', 'Email', 'Phone', 'Topic', 'Message'),
}
USED = {}
def reply(start_response, status, data):
body = json.dumps(data).encode()
start_response(status, [('Content-Type', 'application/json; charset=utf-8'),
('Content-Length', str(len(body))), ('Cache-Control', 'no-store'),
('X-Content-Type-Options', 'nosniff')])
return [body]
def token():
value = f'{int(time.time())}:{secrets.token_urlsafe(18)}'
signature = hmac.new(SECRET, value.encode(), hashlib.sha256).hexdigest()
return base64.urlsafe_b64encode(f'{value}:{signature}'.encode()).decode()
def valid_token(value):
try:
raw = base64.urlsafe_b64decode(value.encode()).decode()
timestamp, nonce, signature = raw.split(':')
signed = f'{timestamp}:{nonce}'
age = time.time() - int(timestamp)
digest = hmac.new(SECRET, signed.encode(), hashlib.sha256).hexdigest()
if not (3 <= age <= 3600 and hmac.compare_digest(digest, signature)):
return False
now = time.time()
for key, expiry in list(USED.items()):
if expiry < now:
del USED[key]
if signature in USED:
return False
USED[signature] = now + 3600
return True
except (ValueError, UnicodeError, TypeError, binascii.Error):
return False
def graph_send(values, lang):
tenant = os.environ['GRAPH_TENANT_ID']
app_id = os.environ['GRAPH_CLIENT_ID']
client_secret = os.environ['GRAPH_CLIENT_SECRET']
form = urllib.parse.urlencode({'client_id': app_id, 'client_secret': client_secret,
'scope': 'https://graph.microsoft.com/.default',
'grant_type': 'client_credentials'}).encode()
url = f'https://login.microsoftonline.com/{urllib.parse.quote(tenant, safe="")}/oauth2/v2.0/token'
request = urllib.request.Request(url, form, {'Content-Type': 'application/x-www-form-urlencoded'})
with urllib.request.urlopen(request, timeout=10) as response:
access_token = json.load(response)['access_token']
labels = FIELDS[lang]
content = '\n'.join(f'{label}: {values.get(label, "")}' for label in labels)
email = values[labels[3]]
message = {'message': {
'subject': 'Kontaktanfrage über dilibworld.com',
'body': {'contentType': 'Text', 'content': content},
'toRecipients': [{'emailAddress': {'address': RECIPIENT}}],
'replyTo': [{'emailAddress': {'address': email}}],
}, 'saveToSentItems': True}
endpoint = 'https://graph.microsoft.com/v1.0/users/' + urllib.parse.quote(SENDER, safe='@') + '/sendMail'
request = urllib.request.Request(endpoint, json.dumps(message).encode(),
{'Content-Type': 'application/json', 'Authorization': f'Bearer {access_token}'})
with urllib.request.urlopen(request, timeout=15) as response:
if response.status != 202:
raise RuntimeError('Graph did not accept the message')
def application(environ, start_response):
if environ.get('PATH_INFO') != '/api/contact':
return reply(start_response, '404 Not Found', {'error': 'not_found'})
if not SECRET or not all(os.environ.get(key) for key in ('GRAPH_TENANT_ID', 'GRAPH_CLIENT_ID', 'GRAPH_CLIENT_SECRET')):
LOG.error('Contact service configuration incomplete')
return reply(start_response, '503 Service Unavailable', {'error': 'unavailable'})
method = environ.get('REQUEST_METHOD')
if method == 'GET':
return reply(start_response, '200 OK', {'token': token()})
if method != 'POST':
return reply(start_response, '405 Method Not Allowed', {'error': 'method'})
if environ.get('HTTP_ORIGIN') != ORIGIN or environ.get('CONTENT_TYPE', '').split(';')[0] != 'application/json':
return reply(start_response, '403 Forbidden', {'error': 'origin'})
try:
length = int(environ.get('CONTENT_LENGTH', '0'))
if not 0 < length <= 12000:
raise ValueError('length')
data = json.loads(environ['wsgi.input'].read(length))
lang = data.get('lang')
if lang not in FIELDS or not isinstance(data.get('website'), str) or not isinstance(data.get('token'), str):
raise ValueError('fields')
if data['website']:
return reply(start_response, '200 OK', {'ok': True})
if not valid_token(data['token']):
raise ValueError('token')
labels = FIELDS[lang]
values = {key: data.get(key, '') for key in labels}
if any(not isinstance(v, str) or len(v) > (5000 if key == labels[6] else 200) for key, v in values.items()):
raise ValueError('field length')
if not all(values[key].strip() for key in (labels[0], labels[1], labels[3], labels[6])):
raise ValueError('required')
if not re.fullmatch(r'[^\s@\r\n]+@[^\s@\r\n]+\.[^\s@\r\n]+', values[labels[3]]) or len(values[labels[3]]) > 254:
raise ValueError('email')
if data.get('privacy') not in ('akzeptiert', 'accepted'):
raise ValueError('privacy')
graph_send(values, lang)
except (ValueError, TypeError, KeyError, json.JSONDecodeError):
return reply(start_response, '400 Bad Request', {'error': 'invalid'})
except (urllib.error.URLError, TimeoutError, RuntimeError):
LOG.exception('Contact delivery failed')
return reply(start_response, '502 Bad Gateway', {'error': 'delivery'})
return reply(start_response, '200 OK', {'ok': True})
+7
View File
@@ -0,0 +1,7 @@
CONTACT_ORIGIN=https://dilibworld.com
CONTACT_FORM_SECRET=REPLACE_WITH_RANDOM_SECRET
GRAPH_TENANT_ID=e966b988-0d5e-446c-9d7d-7ebd2b751546
GRAPH_CLIENT_ID=9876e61a-b2ff-4b31-90c9-39e583b3cf73
GRAPH_CLIENT_SECRET=JXA8Q~QMOKIXy~waf~OCJGz2M3QUu5~qBgr5vb0V
GRAPH_SENDER=info@dilibworld.com
CONTACT_RECIPIENT=info@dilibworld.com
+7
View File
@@ -0,0 +1,7 @@
CONTACT_ORIGIN=https://dilibworld.com
CONTACT_FORM_SECRET=REPLACE_WITH_RANDOM_SECRET
GRAPH_TENANT_ID=REPLACE_WITH_TENANT_GUID
GRAPH_CLIENT_ID=REPLACE_WITH_APP_GUID
GRAPH_CLIENT_SECRET=REPLACE_WITH_SECRET_VALUE
GRAPH_SENDER=info@dilibworld.com
CONTACT_RECIPIENT=info@dilibworld.com
+14
View File
@@ -0,0 +1,14 @@
# Add limit_req_zone in the nginx http {} context (not inside server {}):
limit_req_zone $binary_remote_addr zone=contact_form:10m rate=3r/m;
# Add this location inside the existing HTTPS server for dilibworld.com:
location = /api/contact {
client_max_body_size 12k;
limit_req zone=contact_form burst=5 nodelay;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto https;
proxy_pass http://127.0.0.1:8091;
}
# If the project directory itself is the Nginx document root, deny backend code:
location ^~ /backend/ { return 404; }
+1
View File
@@ -0,0 +1 @@
gunicorn>=23,<24
+135 -11
View File
@@ -1,11 +1,135 @@
<!doctype html><html lang="de"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Datenschutz | dilibworld GmbH</title><meta name="description" content="Informationen zur Verarbeitung personenbezogener Daten auf dilibworld.com."><meta name="theme-color" content="#071b2e"><link rel="canonical" href="https://dilibworld.com/de/datenschutz.html"><link rel="alternate" hreflang="de" href="https://dilibworld.com/de/"><link rel="alternate" hreflang="en" href="https://dilibworld.com/en/"><link rel="icon" href="../assets/img/favicon.svg" type="image/svg+xml"><meta property="og:type" content="website"><meta property="og:title" content="Datenschutz | dilibworld GmbH"><meta property="og:description" content="Informationen zur Verarbeitung personenbezogener Daten auf dilibworld.com."><meta property="og:image" content="https://dilibworld.com/assets/img/og-cover.svg"><link rel="stylesheet" href="../assets/css/foundation.min.css"><link rel="stylesheet" href="../assets/css/app.css"><script type="application/ld+json">{"@context": "https://schema.org", "@type": "Organization", "name": "dilibworld GmbH", "url": "https://dilibworld.com", "logo": "https://dilibworld.com/assets/img/dilibworld-logo.png", "email": "info@dilibworld.com", "telephone": "+49 2171 7766616"}</script></head><body><a class="skip-link" href="#main">Zum Inhalt springen</a> <!doctype html>
<header class="site-header"><div class="grid-container"><div class="nav-shell"> <html lang="de">
<a class="brand" href="index.html" aria-label="dilibworld GmbH"><img src="../assets/img/dilibworld-logo.png" alt=""><span>dilibworld<small>GmbH</small></span></a> <head>
<nav class="desktop-nav" aria-label="Main navigation"><a href="index.html" >Start</a><a href="loesungen.html" >Lösungen</a><a href="unternehmen.html" >Unternehmen</a><a href="kontakt.html" >Kontakt</a><span class="lang-switch"><a class="active" href="#" aria-current="true">DE</a><a href="../en/index.html">EN</a></span><a class="nav-cta" href="kontakt.html">Projekt besprechen</a></nav> <meta charset="utf-8">
<button class="menu-toggle" data-menu-toggle aria-expanded="false" aria-controls="mobile-navigation" aria-label="Menu"><span></span></button> <meta name="viewport" content="width=device-width,initial-scale=1">
</div><nav id="mobile-navigation" class="mobile-nav" data-mobile-nav aria-label="Mobile navigation"><a href="index.html" >Start</a><a href="loesungen.html" >Lösungen</a><a href="unternehmen.html" >Unternehmen</a><a href="kontakt.html" >Kontakt</a><a href="../en/index.html">EN</a></nav></div></header><main id="main"><section class="page-hero"><div class="grid-container"><span class="eyebrow">Datenschutz</span><h1>Datenschutzerklärung</h1></div></section><section class="section white"><div class="grid-container legal"><div class="legal-note"><strong>Vor Veröffentlichung prüfen:</strong> Verantwortliche Person, Hosting-Anbieter, Serverstandort, Log-Aufbewahrung, eingesetztes Kontakt-Backend und weitere Dienste müssen an den tatsächlichen Betrieb angepasst werden.</div><h2>1. Verantwortlicher</h2><p>dilibworld GmbH<br>Gerhart-Hauptmann-Straße 49b<br>51379 Leverkusen<br>Deutschland<br>E-Mail: info@dilibworld.com</p><h2>2. Grundsätze</h2><p>Wir verarbeiten personenbezogene Daten nur, soweit dies zur Bereitstellung dieser Website, zur sicheren technischen Auslieferung oder zur Bearbeitung von Anfragen erforderlich ist. Eine Weitergabe erfolgt nur bei gesetzlicher Grundlage oder wenn sie für die Erfüllung des jeweiligen Zwecks erforderlich ist.</p><h2>3. Hosting und Server-Protokolle</h2><p>Beim Aufruf der Website können technisch notwendige Informationen in Server-Protokolldateien verarbeitet werden. Dazu zählen insbesondere IP-Adresse, Datum und Uhrzeit, aufgerufene Ressource, übertragene Datenmenge, Referrer, Browser und Betriebssystem. Die Verarbeitung dient der sicheren Bereitstellung, Fehleranalyse und Abwehr von Angriffen auf Grundlage berechtigter Interessen gemäß Art. 6 Abs. 1 lit. f DSGVO.</p><p><strong>[Hosting-Anbieter, Standort und Löschfrist ergänzen]</strong></p><h2>4. Kontaktaufnahme</h2><p>Das bereitgestellte Kontaktformular öffnet das lokale E-Mail-Programm des Nutzers. Die eingegebenen Inhalte werden nicht durch diese Website an einen Server übertragen oder dort gespeichert. Beim Versand der E-Mail werden die Daten durch die beteiligten E-Mail-Systeme verarbeitet. Rechtsgrundlage ist je nach Inhalt Art. 6 Abs. 1 lit. b oder lit. f DSGVO.</p><h2>5. Cookies und lokale Speicherung</h2><p>Die Website setzt keine Analyse- oder Marketing-Cookies. Für das Ausblenden des Datenschutzhinweises wird ausschließlich eine technisch notwendige Auswahl im lokalen Speicher des Browsers gespeichert. Diese Information enthält keine personenbezogenen Profildaten und wird nicht an uns übertragen.</p><h2>6. Lokale Website-Ressourcen</h2><p>Stylesheets, Skripte, Logo und Illustrationen werden lokal von dieser Website ausgeliefert. Für die Seitendarstellung werden keine externen Schrift-, Analyse- oder Framework-Dienste aufgerufen.</p><h2>7. Rechte betroffener Personen</h2><p>Betroffene Personen haben im Rahmen der gesetzlichen Voraussetzungen das Recht auf Auskunft, Berichtigung, Löschung, Einschränkung der Verarbeitung, Datenübertragbarkeit und Widerspruch. Zudem besteht ein Beschwerderecht bei einer zuständigen Datenschutzaufsichtsbehörde.</p><h2>8. Sicherheit</h2><p>Wir setzen angemessene technische und organisatorische Maßnahmen ein, um Daten vor Verlust, Manipulation und unberechtigtem Zugriff zu schützen. Die Website sollte ausschließlich über eine aktuelle TLS-verschlüsselte Verbindung angeboten werden.</p><h2>9. Stand</h2><p>Stand: Juli 2026. Diese Erklärung ist an Änderungen der Website und der eingesetzten Dienste anzupassen.</p></div></section></main><footer class="footer"><div class="grid-container"><div class="grid-x grid-margin-x"> <title>Datenschutz | dilibworld GmbH</title>
<div class="cell medium-6 large-5"><div class="footer-logo"><img src="../assets/img/dilibworld-logo.png" alt=""><div><strong>dilibworld GmbH</strong><br><span>Souveräne KI- und Datenplattformen für Unternehmen.</span></div></div><p>Digitale Freiheit entsteht, wenn Unternehmen ihre Daten, Modelle und Prozesse selbst kontrollieren.</p></div> <meta name="description" content="Informationen zur Verarbeitung personenbezogener Daten auf dilibworld.com.">
<div class="cell small-6 medium-3 large-3"><h3>Navigation</h3><ul><li><a href="loesungen.html">Lösungen</a></li><li><a href="unternehmen.html">Unternehmen</a></li><li><a href="kontakt.html">Kontakt</a></li></ul></div> <meta name="theme-color" content="#071b2e">
<div class="cell small-6 medium-3 large-4"><h3>Kontakt</h3><ul><li><a href="mailto:info@dilibworld.com">info@dilibworld.com</a></li><li>+49 2171 7766616</li><li>Leverkusen · Germany</li></ul></div></div> <link rel="canonical" href="https://dilibworld.com/de/datenschutz.html">
<div class="footer-bottom"><span>© <span data-current-year></span> dilibworld GmbH</span><span><a href="impressum.html">Impressum</a> · <a href="datenschutz.html">Datenschutz</a></span></div></div></footer> <link rel="alternate" hreflang="de" href="https://dilibworld.com/de/">
<div class="cookie-notice" data-cookie-notice role="dialog" aria-label="Cookie information"><strong>Datenschutzfreundlich</strong><p>Diese Website verwendet nur technisch notwendige lokale Speicherung für Ihre Cookie-Auswahl. Es werden keine Analyse- oder Marketing-Cookies gesetzt.</p><div class="cookie-actions"><button class="accept" data-cookie-choice="accepted">Verstanden</button><button class="decline" data-cookie-choice="closed">Schließen</button></div></div><script src="../assets/js/app.js" defer></script></body></html> <link rel="alternate" hreflang="en" href="https://dilibworld.com/en/">
<link rel="icon" href="../assets/img/favicon.svg" type="image/svg+xml">
<meta property="og:type" content="website">
<meta property="og:title" content="Datenschutz | dilibworld GmbH">
<meta property="og:description"
content="Informationen zur Verarbeitung personenbezogener Daten auf dilibworld.com.">
<meta property="og:image" content="https://dilibworld.com/assets/img/og-cover.svg">
<link rel="stylesheet" href="../assets/css/foundation.min.css">
<link rel="stylesheet" href="../assets/css/app.css">
<script type="application/ld+json">{
"@context": "https://schema.org",
"@type": "Organization",
"name": "dilibworld GmbH",
"url": "https://dilibworld.com",
"logo": "https://dilibworld.com/assets/img/dilibworld-logo.png",
"email": "info@dilibworld.com",
"telephone": "+49 2171 7766616"
}</script>
</head>
<body><a class="skip-link" href="#main">Zum Inhalt springen</a>
<header class="site-header">
<div class="grid-container">
<div class="nav-shell">
<a class="brand" href="index.html" aria-label="dilibworld GmbH"><img src="../assets/img/dilibworld-logo.png"
alt=""><span>dilibworld<small>GmbH</small></span></a>
<nav class="desktop-nav" aria-label="Main navigation"><a href="index.html">Start</a><a
href="loesungen.html">Lösungen</a><a href="unternehmen.html">Unternehmen</a><a href="kontakt.html">Kontakt</a><span
class="lang-switch"><a class="active" href="#" aria-current="true">DE</a><a href="../en/index.html">EN</a></span><a
class="nav-cta" href="kontakt.html">Projekt besprechen</a></nav>
<button class="menu-toggle" data-menu-toggle aria-expanded="false" aria-controls="mobile-navigation"
aria-label="Menu"><span></span></button>
</div>
<nav id="mobile-navigation" class="mobile-nav" data-mobile-nav aria-label="Mobile navigation"><a
href="index.html">Start</a><a href="loesungen.html">Lösungen</a><a
href="unternehmen.html">Unternehmen</a><a href="kontakt.html">Kontakt</a><a
href="../en/index.html">EN</a></nav>
</div>
</header>
<main id="main">
<section class="page-hero">
<div class="grid-container"><span class="eyebrow">Datenschutz</span>
<h1>Datenschutzerklärung</h1></div>
</section>
<section class="section white">
<div class="grid-container legal">
<div class="legal-note"><strong>Vor Veröffentlichung prüfen:</strong> Verantwortliche Person,
Hosting-Anbieter, Serverstandort, Log-Aufbewahrung, eingesetztes Kontakt-Backend und weitere Dienste
müssen an den tatsächlichen Betrieb angepasst werden.
</div>
<h2>1. Verantwortlicher</h2>
<p>dilibworld GmbH<br>Gerhart-Hauptmann-Straße 49b<br>51379 Leverkusen<br>Deutschland<br>E-Mail:
info@dilibworld.com</p>
<h2>2. Grundsätze</h2>
<p>Wir verarbeiten personenbezogene Daten nur, soweit dies zur Bereitstellung dieser Website, zur sicheren
technischen Auslieferung oder zur Bearbeitung von Anfragen erforderlich ist. Eine Weitergabe erfolgt nur
bei gesetzlicher Grundlage oder wenn sie für die Erfüllung des jeweiligen Zwecks erforderlich ist.</p>
<h2>3. Hosting und Server-Protokolle</h2>
<p>Beim Aufruf der Website können technisch notwendige Informationen in Server-Protokolldateien verarbeitet
werden. Dazu zählen insbesondere IP-Adresse, Datum und Uhrzeit, aufgerufene Ressource, übertragene
Datenmenge, Referrer, Browser und Betriebssystem. Die Verarbeitung dient der sicheren Bereitstellung,
Fehleranalyse und Abwehr von Angriffen auf Grundlage berechtigter Interessen gemäß Art. 6 Abs. 1 lit. f
DSGVO.</p>
<p><strong>[Hosting-Anbieter, Standort und Löschfrist ergänzen]</strong></p>
<h2>4. Kontaktaufnahme</h2>
<p>Bei Nutzung des Kontaktformulars verarbeiten wir die eingegebenen Kontaktdaten und Ihre Nachricht zur Bearbeitung Ihrer Anfrage. Die Übermittlung erfolgt verschlüsselt an unseren Server und anschließend über Microsoft 365 an unser Postfach. Ein verborgenes Eingabefeld, ein zeitlich begrenzter Formularschlüssel und eine Begrenzung der Anfragen dienen der Spamabwehr. Die Formulareingaben werden in diesem Backend nicht dauerhaft gespeichert; die E-Mail verbleibt im Postfach und gegebenenfalls im Ordner „Gesendet“. Rechtsgrundlage ist je nach Anfrage Art. 6 Abs. 1 lit. b oder lit. f DSGVO. <strong>[Microsoft-365-Verarbeitung, Aufbewahrungsfrist und Hosting vor Veröffentlichung ergänzen.]</strong></p>
<h2>5. Cookies und lokale Speicherung</h2>
<p>Die Website setzt keine Analyse- oder Marketing-Cookies. Für das Ausblenden des Datenschutzhinweises wird
ausschließlich eine technisch notwendige Auswahl im lokalen Speicher des Browsers gespeichert. Diese
Information enthält keine personenbezogenen Profildaten und wird nicht an uns übertragen.</p>
<h2>6. Lokale Website-Ressourcen</h2>
<p>Stylesheets, Skripte, Logo und Illustrationen werden lokal von dieser Website ausgeliefert. Für die
Seitendarstellung werden keine externen Schrift-, Analyse- oder Framework-Dienste aufgerufen.</p>
<h2>7. Rechte betroffener Personen</h2>
<p>Betroffene Personen haben im Rahmen der gesetzlichen Voraussetzungen das Recht auf Auskunft,
Berichtigung, Löschung, Einschränkung der Verarbeitung, Datenübertragbarkeit und Widerspruch. Zudem
besteht ein Beschwerderecht bei einer zuständigen Datenschutzaufsichtsbehörde.</p>
<h2>8. Sicherheit</h2>
<p>Wir setzen angemessene technische und organisatorische Maßnahmen ein, um Daten vor Verlust, Manipulation
und unberechtigtem Zugriff zu schützen. Die Website sollte ausschließlich über eine aktuelle
TLS-verschlüsselte Verbindung angeboten werden.</p>
<h2>9. Stand</h2>
<p>Stand: Juli 2026. Diese Erklärung ist an Änderungen der Website und der eingesetzten Dienste
anzupassen.</p></div>
</section>
</main>
<footer class="footer">
<div class="grid-container">
<div class="grid-x grid-margin-x">
<div class="cell medium-6 large-5">
<div class="footer-logo"><img src="../assets/img/dilibworld-logo.png" alt="">
<div><strong>dilibworld
GmbH</strong><br><span>Souveräne KI- und Datenplattformen für Unternehmen.</span></div>
</div>
<p>Digitale Freiheit entsteht, wenn Unternehmen ihre Daten, Modelle und Prozesse selbst
kontrollieren.</p></div>
<div class="cell small-6 medium-3 large-3"><h3>Navigation</h3>
<ul>
<li><a href="loesungen.html">Lösungen</a></li>
<li><a href="unternehmen.html">Unternehmen</a></li>
<li><a href="kontakt.html">Kontakt</a></li>
</ul>
</div>
<div class="cell small-6 medium-3 large-4"><h3>Kontakt</h3>
<ul>
<li><a href="mailto:info@dilibworld.com">info@dilibworld.com</a></li>
<li>+49 2171 7766616</li>
<li>Leverkusen · Germany</li>
</ul>
</div>
</div>
<div class="footer-bottom"><span>© <span data-current-year></span> dilibworld GmbH</span><span><a
href="impressum.html">Impressum</a> · <a href="datenschutz.html">Datenschutz</a></span></div>
</div>
</footer>
<div class="cookie-notice" data-cookie-notice role="dialog" aria-label="Cookie information"><strong>Datenschutzfreundlich</strong>
<p>Diese Website verwendet nur technisch notwendige lokale Speicherung für Ihre Cookie-Auswahl. Es werden keine
Analyse- oder Marketing-Cookies gesetzt.</p>
<div class="cookie-actions">
<button class="accept" data-cookie-choice="accepted">Verstanden</button>
<button class="decline" data-cookie-choice="closed">Schließen</button>
</div>
</div>
<script src="../assets/js/app.js" defer></script>
</body>
</html>
+143 -11
View File
@@ -1,11 +1,143 @@
<!doctype html><html lang="de"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Kontakt | dilibworld GmbH</title><meta name="description" content="Sprechen Sie mit dilibworld über lokale KI, Datenintegration, Prozessautomatisierung und Dokumentenmanagement."><meta name="theme-color" content="#071b2e"><link rel="canonical" href="https://dilibworld.com/de/kontakt.html"><link rel="alternate" hreflang="de" href="https://dilibworld.com/de/"><link rel="alternate" hreflang="en" href="https://dilibworld.com/en/"><link rel="icon" href="../assets/img/favicon.svg" type="image/svg+xml"><meta property="og:type" content="website"><meta property="og:title" content="Kontakt | dilibworld GmbH"><meta property="og:description" content="Sprechen Sie mit dilibworld über lokale KI, Datenintegration, Prozessautomatisierung und Dokumentenmanagement."><meta property="og:image" content="https://dilibworld.com/assets/img/og-cover.svg"><link rel="stylesheet" href="../assets/css/foundation.min.css"><link rel="stylesheet" href="../assets/css/app.css"><script type="application/ld+json">{"@context": "https://schema.org", "@type": "Organization", "name": "dilibworld GmbH", "url": "https://dilibworld.com", "logo": "https://dilibworld.com/assets/img/dilibworld-logo.png", "email": "info@dilibworld.com", "telephone": "+49 2171 7766616"}</script></head><body><a class="skip-link" href="#main">Zum Inhalt springen</a> <!doctype html>
<header class="site-header"><div class="grid-container"><div class="nav-shell"> <html lang="de">
<a class="brand" href="index.html" aria-label="dilibworld GmbH"><img src="../assets/img/dilibworld-logo.png" alt=""><span>dilibworld<small>GmbH</small></span></a> <head>
<nav class="desktop-nav" aria-label="Main navigation"><a href="index.html" >Start</a><a href="loesungen.html" >Lösungen</a><a href="unternehmen.html" >Unternehmen</a><a href="kontakt.html" aria-current="page">Kontakt</a><span class="lang-switch"><a class="active" href="#" aria-current="true">DE</a><a href="../en/index.html">EN</a></span><a class="nav-cta" href="kontakt.html">Projekt besprechen</a></nav> <meta charset="utf-8">
<button class="menu-toggle" data-menu-toggle aria-expanded="false" aria-controls="mobile-navigation" aria-label="Menu"><span></span></button> <meta name="viewport" content="width=device-width,initial-scale=1">
</div><nav id="mobile-navigation" class="mobile-nav" data-mobile-nav aria-label="Mobile navigation"><a href="index.html" >Start</a><a href="loesungen.html" >Lösungen</a><a href="unternehmen.html" >Unternehmen</a><a href="kontakt.html" aria-current="page">Kontakt</a><a href="../en/index.html">EN</a></nav></div></header><main id="main"><section class="page-hero"><div class="grid-container"><span class="eyebrow">Kontakt</span><h1>Lassen Sie uns Ihren Anwendungsfall verstehen.</h1><p class="lead">Ein gutes Projekt beginnt nicht mit einem Produkt, sondern mit einem klaren Problem, den richtigen Daten und einem messbaren Ziel.</p></div></section><section class="section white"><div class="grid-container"><div class="grid-x grid-margin-x"><div class="cell large-5"><h2>Direkter Austausch.</h2><p class="lead">Beschreiben Sie kurz, welche Systeme, Daten oder Prozesse verbunden, automatisiert oder mit lokaler KI unterstützt werden sollen.</p><ul class="feature-list"><li>E-Mail: <a href="mailto:info@dilibworld.com">info@dilibworld.com</a></li><li>Telefon: <a href="tel:+4921717766616">+49 2171 7766616</a></li><li>Standort: Leverkusen, Deutschland</li></ul><p><small>Das Formular öffnet Ihr lokales E-Mail-Programm. Es werden keine Formulardaten auf dieser Website gespeichert.</small></p></div><div class="cell large-7"><form class="contact-card" data-mailto-form data-recipient="info@dilibworld.com"><div class="form-grid"><label>Vorname<input required name="Vorname" autocomplete="given-name"></label><label>Nachname<input required name="Nachname" autocomplete="family-name"></label><label class="full">Unternehmen<input name="Unternehmen" autocomplete="organization"></label><label>E-Mail<input required type="email" name="E-Mail" autocomplete="email"></label><label>Telefon<input type="tel" name="Telefon" autocomplete="tel"></label><label class="full">Thema<select name="Thema"><option>dilibAI / lokale KI</option><option>Datenintegration / Transfer</option><option>Masterdata</option><option>Prozessautomatisierung</option><option>Dokumentenmanagement / IDX</option><option>Gesamtplattform</option></select></label><label class="full">Ihre Nachricht<textarea required name="Nachricht" rows="7"></textarea></label><label class="full checkbox-line"><input required type="checkbox" name="privacy" value="akzeptiert"><span>Ich habe die <a href="datenschutz.html">Datenschutzerklärung</a> gelesen und stimme der Verarbeitung zum Zweck der Kontaktaufnahme zu.</span></label><div class="full"><button class="button primary" type="submit">E-Mail vorbereiten</button><div class="form-status">Ihr E-Mail-Programm wurde geöffnet. Bitte prüfen und senden Sie die Nachricht dort.</div></div></div></form></div></div></div></section></main><footer class="footer"><div class="grid-container"><div class="grid-x grid-margin-x"> <title>Kontakt | dilibworld GmbH</title>
<div class="cell medium-6 large-5"><div class="footer-logo"><img src="../assets/img/dilibworld-logo.png" alt=""><div><strong>dilibworld GmbH</strong><br><span>Souveräne KI- und Datenplattformen für Unternehmen.</span></div></div><p>Digitale Freiheit entsteht, wenn Unternehmen ihre Daten, Modelle und Prozesse selbst kontrollieren.</p></div> <meta name="description"
<div class="cell small-6 medium-3 large-3"><h3>Navigation</h3><ul><li><a href="loesungen.html">Lösungen</a></li><li><a href="unternehmen.html">Unternehmen</a></li><li><a href="kontakt.html">Kontakt</a></li></ul></div> content="Sprechen Sie mit dilibworld über lokale KI, Datenintegration, Prozessautomatisierung und Dokumentenmanagement.">
<div class="cell small-6 medium-3 large-4"><h3>Kontakt</h3><ul><li><a href="mailto:info@dilibworld.com">info@dilibworld.com</a></li><li>+49 2171 7766616</li><li>Leverkusen · Germany</li></ul></div></div> <meta name="theme-color" content="#071b2e">
<div class="footer-bottom"><span>© <span data-current-year></span> dilibworld GmbH</span><span><a href="impressum.html">Impressum</a> · <a href="datenschutz.html">Datenschutz</a></span></div></div></footer> <link rel="canonical" href="https://dilibworld.com/de/kontakt.html">
<div class="cookie-notice" data-cookie-notice role="dialog" aria-label="Cookie information"><strong>Datenschutzfreundlich</strong><p>Diese Website verwendet nur technisch notwendige lokale Speicherung für Ihre Cookie-Auswahl. Es werden keine Analyse- oder Marketing-Cookies gesetzt.</p><div class="cookie-actions"><button class="accept" data-cookie-choice="accepted">Verstanden</button><button class="decline" data-cookie-choice="closed">Schließen</button></div></div><script src="../assets/js/app.js" defer></script></body></html> <link rel="alternate" hreflang="de" href="https://dilibworld.com/de/">
<link rel="alternate" hreflang="en" href="https://dilibworld.com/en/">
<link rel="icon" href="../assets/img/favicon.svg" type="image/svg+xml">
<meta property="og:type" content="website">
<meta property="og:title" content="Kontakt | dilibworld GmbH">
<meta property="og:description"
content="Sprechen Sie mit dilibworld über lokale KI, Datenintegration, Prozessautomatisierung und Dokumentenmanagement.">
<meta property="og:image" content="https://dilibworld.com/assets/img/og-cover.svg">
<link rel="stylesheet" href="../assets/css/foundation.min.css">
<link rel="stylesheet" href="../assets/css/app.css">
<script type="application/ld+json">{
"@context": "https://schema.org",
"@type": "Organization",
"name": "dilibworld GmbH",
"url": "https://dilibworld.com",
"logo": "https://dilibworld.com/assets/img/dilibworld-logo.png",
"email": "info@dilibworld.com",
"telephone": "+49 2171 7766616"
}</script>
</head>
<body><a class="skip-link" href="#main">Zum Inhalt springen</a>
<header class="site-header">
<div class="grid-container">
<div class="nav-shell">
<a class="brand" href="index.html" aria-label="dilibworld GmbH"><img src="../assets/img/dilibworld-logo.png"
alt=""><span>dilibworld<small>GmbH</small></span></a>
<nav class="desktop-nav" aria-label="Main navigation"><a href="index.html">Start</a><a
href="loesungen.html">Lösungen</a><a href="unternehmen.html">Unternehmen</a><a href="kontakt.html"
aria-current="page">Kontakt</a><span
class="lang-switch"><a class="active" href="#" aria-current="true">DE</a><a href="../en/index.html">EN</a></span><a
class="nav-cta" href="kontakt.html">Projekt besprechen</a></nav>
<button class="menu-toggle" data-menu-toggle aria-expanded="false" aria-controls="mobile-navigation"
aria-label="Menu"><span></span></button>
</div>
<nav id="mobile-navigation" class="mobile-nav" data-mobile-nav aria-label="Mobile navigation"><a
href="index.html">Start</a><a href="loesungen.html">Lösungen</a><a
href="unternehmen.html">Unternehmen</a><a href="kontakt.html" aria-current="page">Kontakt</a><a
href="../en/index.html">EN</a></nav>
</div>
</header>
<main id="main">
<section class="page-hero">
<div class="grid-container"><span class="eyebrow">Kontakt</span>
<h1>Lassen Sie uns Ihren Anwendungsfall verstehen.</h1>
<p class="lead">Ein gutes Projekt beginnt nicht mit einem Produkt, sondern mit einem klaren Problem, den
richtigen Daten und einem messbaren Ziel.</p></div>
</section>
<section class="section white">
<div class="grid-container">
<div class="grid-x grid-margin-x">
<div class="cell large-5"><h2>Direkter Austausch.</h2>
<p class="lead">Beschreiben Sie kurz, welche Systeme, Daten oder Prozesse verbunden, automatisiert
oder mit lokaler KI unterstützt werden sollen.</p>
<ul class="feature-list">
<li>E-Mail: <a href="mailto:info@dilibworld.com">info@dilibworld.com</a></li>
<li>Telefon: <a href="tel:+4921717766616">+49 2171 7766616</a></li>
<li>Standort: Leverkusen, Deutschland</li>
</ul>
<p><small>Ihre Anfrage wird verschlüsselt übermittelt und per Microsoft 365 an uns gesendet.</small></p></div>
<div class="cell large-7">
<form class="contact-card" data-contact-form>
<div class="form-grid"><label>Vorname<input required name="Vorname"
autocomplete="given-name"></label><label>Nachname<input
required name="Nachname" autocomplete="family-name"></label><label class="full">Unternehmen<input
name="Unternehmen" autocomplete="organization"></label><label>E-Mail<input required
type="email"
name="E-Mail"
autocomplete="email"></label><label>Telefon<input
type="tel" name="Telefon" autocomplete="tel"></label><label class="full">Thema<select
name="Thema">
<option>dilibAI / lokale KI</option>
<option>Datenintegration / Transfer</option>
<option>Masterdata</option>
<option>Prozessautomatisierung</option>
<option>Dokumentenmanagement / IDX</option>
<option>Gesamtplattform</option>
</select></label><label class="full honeypot" aria-hidden="true">Website<input name="website" tabindex="-1" autocomplete="off"></label><label class="full">Ihre Nachricht<textarea required name="Nachricht"
rows="7"></textarea></label><label
class="full checkbox-line"><input required type="checkbox" name="privacy"
value="akzeptiert"><span>Ich habe die <a
href="datenschutz.html">Datenschutzerklärung</a> gelesen und stimme der Verarbeitung zum Zweck der Kontaktaufnahme zu.</span></label>
<div class="full">
<button class="button primary" type="submit">Nachricht senden</button>
<div class="form-status" role="status" aria-live="polite">Vielen Dank. Ihre Nachricht wurde übermittelt.
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</section>
</main>
<footer class="footer">
<div class="grid-container">
<div class="grid-x grid-margin-x">
<div class="cell medium-6 large-5">
<div class="footer-logo"><img src="../assets/img/dilibworld-logo.png" alt="">
<div><strong>dilibworld
GmbH</strong><br><span>Souveräne KI- und Datenplattformen für Unternehmen.</span></div>
</div>
<p>Digitale Freiheit entsteht, wenn Unternehmen ihre Daten, Modelle und Prozesse selbst
kontrollieren.</p></div>
<div class="cell small-6 medium-3 large-3"><h3>Navigation</h3>
<ul>
<li><a href="loesungen.html">Lösungen</a></li>
<li><a href="unternehmen.html">Unternehmen</a></li>
<li><a href="kontakt.html">Kontakt</a></li>
</ul>
</div>
<div class="cell small-6 medium-3 large-4"><h3>Kontakt</h3>
<ul>
<li><a href="mailto:info@dilibworld.com">info@dilibworld.com</a></li>
<li>+49 2171 7766616</li>
<li>Leverkusen · Germany</li>
</ul>
</div>
</div>
<div class="footer-bottom"><span>© <span data-current-year></span> dilibworld GmbH</span><span><a
href="impressum.html">Impressum</a> · <a href="datenschutz.html">Datenschutz</a></span></div>
</div>
</footer>
<div class="cookie-notice" data-cookie-notice role="dialog" aria-label="Cookie information"><strong>Datenschutzfreundlich</strong>
<p>Diese Website verwendet nur technisch notwendige lokale Speicherung für Ihre Cookie-Auswahl. Es werden keine
Analyse- oder Marketing-Cookies gesetzt.</p>
<div class="cookie-actions">
<button class="accept" data-cookie-choice="accepted">Verstanden</button>
<button class="decline" data-cookie-choice="closed">Schließen</button>
</div>
</div>
<script src="../assets/js/app.js" defer></script>
</body>
</html>
+210 -11
View File
File diff suppressed because one or more lines are too long
+150 -11
View File
@@ -1,11 +1,150 @@
<!doctype html><html lang="de"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Unternehmen | dilibworld GmbH</title><meta name="description" content="dilibworld entwickelt souveräne KI- und Datenplattformen für sensible und geschäftskritische Prozesse."><meta name="theme-color" content="#071b2e"><link rel="canonical" href="https://dilibworld.com/de/unternehmen.html"><link rel="alternate" hreflang="de" href="https://dilibworld.com/de/"><link rel="alternate" hreflang="en" href="https://dilibworld.com/en/"><link rel="icon" href="../assets/img/favicon.svg" type="image/svg+xml"><meta property="og:type" content="website"><meta property="og:title" content="Unternehmen | dilibworld GmbH"><meta property="og:description" content="dilibworld entwickelt souveräne KI- und Datenplattformen für sensible und geschäftskritische Prozesse."><meta property="og:image" content="https://dilibworld.com/assets/img/og-cover.svg"><link rel="stylesheet" href="../assets/css/foundation.min.css"><link rel="stylesheet" href="../assets/css/app.css"><script type="application/ld+json">{"@context": "https://schema.org", "@type": "Organization", "name": "dilibworld GmbH", "url": "https://dilibworld.com", "logo": "https://dilibworld.com/assets/img/dilibworld-logo.png", "email": "info@dilibworld.com", "telephone": "+49 2171 7766616"}</script></head><body><a class="skip-link" href="#main">Zum Inhalt springen</a> <!doctype html>
<header class="site-header"><div class="grid-container"><div class="nav-shell"> <html lang="de">
<a class="brand" href="index.html" aria-label="dilibworld GmbH"><img src="../assets/img/dilibworld-logo.png" alt=""><span>dilibworld<small>GmbH</small></span></a> <head>
<nav class="desktop-nav" aria-label="Main navigation"><a href="index.html" >Start</a><a href="loesungen.html" >Lösungen</a><a href="unternehmen.html" aria-current="page">Unternehmen</a><a href="kontakt.html" >Kontakt</a><span class="lang-switch"><a class="active" href="#" aria-current="true">DE</a><a href="../en/index.html">EN</a></span><a class="nav-cta" href="kontakt.html">Projekt besprechen</a></nav> <meta charset="utf-8">
<button class="menu-toggle" data-menu-toggle aria-expanded="false" aria-controls="mobile-navigation" aria-label="Menu"><span></span></button> <meta name="viewport" content="width=device-width,initial-scale=1">
</div><nav id="mobile-navigation" class="mobile-nav" data-mobile-nav aria-label="Mobile navigation"><a href="index.html" >Start</a><a href="loesungen.html" >Lösungen</a><a href="unternehmen.html" aria-current="page">Unternehmen</a><a href="kontakt.html" >Kontakt</a><a href="../en/index.html">EN</a></nav></div></header><main id="main"><section class="page-hero"><div class="grid-container"><span class="eyebrow">dilibworld GmbH</span><h1>Digitale Freiheit für Unternehmen.</h1><p class="lead">Wir entwickeln sichere Softwareplattformen, die Daten, Prozesse und künstliche Intelligenz unter der Kontrolle unserer Kunden zusammenführen.</p></div></section><section class="section white"><div class="grid-container"><div class="grid-x grid-margin-x"><div class="cell large-7"><h2>Aus Erfahrung mit komplexen und schutzbedürftigen Daten.</h2><p class="lead">Die technologische Basis von dilib entstand aus langjähriger Arbeit an anspruchsvollen Integrations-, Dokumenten- und Verfahrenssystemen. Daraus wurde eine modulare Plattform für Unternehmen, die mehr benötigen als einzelne Schnittstellen oder isolierte KI-Werkzeuge.</p><p>dilib steht für <strong>digital liberty</strong>: Unternehmen sollen ihre Systeme modernisieren können, ohne die Kontrolle über Daten, Wissen und geschäftskritische Abläufe abzugeben. Deshalb verbinden wir offene Integration mit lokalem Betrieb, klaren Berechtigungen und nachvollziehbarer Automatisierung.</p></div><div class="cell large-5"><div class="product-visual"><img src="../assets/img/hero-architecture.svg" alt="dilibworld Plattform"></div></div></div></div></section><section class="section"><div class="grid-container"><span class="eyebrow">Unsere Grundsätze</span><h2>Technologie muss Vertrauen verdienen.</h2><div class="company-values"><article class="value"><strong>Souveränität</strong><p>Datenhaltung, Modelle und Betriebsform werden passend zur Organisation geplant.</p></article><article class="value"><strong>Integration</strong><p>Bestehende Investitionen werden eingebunden, statt funktionierende Systeme pauschal zu ersetzen.</p></article><article class="value"><strong>Wirtschaftlichkeit</strong><p>Projekte beginnen mit klaren Zielen, messbarem Nutzen und einem realistischen Einführungspfad.</p></article></div></div></section><section class="section dark"><div class="grid-container"><div class="grid-x grid-margin-x"><div class="cell large-5"><span class="eyebrow">Wofür wir stehen</span><p class="quote">„Künstliche Intelligenz wird erst dann zu einem Unternehmenswert, wenn Daten, Prozesse und Verantwortung zusammen gedacht werden.“</p></div><div class="cell large-7"><h2>Partnerschaftlich von der Analyse bis zum Betrieb.</h2><ul class="feature-list"><li>Fachliche und technische Anforderungsanalyse</li><li>Architektur, Integration und individuelle Erweiterungen</li><li>Lokaler, eigener oder betreuter Betrieb</li><li>Dokumentation, Übergabe und langfristige Weiterentwicklung</li></ul></div></div></div></section></main><footer class="footer"><div class="grid-container"><div class="grid-x grid-margin-x"> <title>Unternehmen | dilibworld GmbH</title>
<div class="cell medium-6 large-5"><div class="footer-logo"><img src="../assets/img/dilibworld-logo.png" alt=""><div><strong>dilibworld GmbH</strong><br><span>Souveräne KI- und Datenplattformen für Unternehmen.</span></div></div><p>Digitale Freiheit entsteht, wenn Unternehmen ihre Daten, Modelle und Prozesse selbst kontrollieren.</p></div> <meta name="description"
<div class="cell small-6 medium-3 large-3"><h3>Navigation</h3><ul><li><a href="loesungen.html">Lösungen</a></li><li><a href="unternehmen.html">Unternehmen</a></li><li><a href="kontakt.html">Kontakt</a></li></ul></div> content="dilibworld entwickelt souveräne KI- und Datenplattformen für sensible und geschäftskritische Prozesse.">
<div class="cell small-6 medium-3 large-4"><h3>Kontakt</h3><ul><li><a href="mailto:info@dilibworld.com">info@dilibworld.com</a></li><li>+49 2171 7766616</li><li>Leverkusen · Germany</li></ul></div></div> <meta name="theme-color" content="#071b2e">
<div class="footer-bottom"><span>© <span data-current-year></span> dilibworld GmbH</span><span><a href="impressum.html">Impressum</a> · <a href="datenschutz.html">Datenschutz</a></span></div></div></footer> <link rel="canonical" href="https://dilibworld.com/de/unternehmen.html">
<div class="cookie-notice" data-cookie-notice role="dialog" aria-label="Cookie information"><strong>Datenschutzfreundlich</strong><p>Diese Website verwendet nur technisch notwendige lokale Speicherung für Ihre Cookie-Auswahl. Es werden keine Analyse- oder Marketing-Cookies gesetzt.</p><div class="cookie-actions"><button class="accept" data-cookie-choice="accepted">Verstanden</button><button class="decline" data-cookie-choice="closed">Schließen</button></div></div><script src="../assets/js/app.js" defer></script></body></html> <link rel="alternate" hreflang="de" href="https://dilibworld.com/de/">
<link rel="alternate" hreflang="en" href="https://dilibworld.com/en/">
<link rel="icon" href="../assets/img/favicon.svg" type="image/svg+xml">
<meta property="og:type" content="website">
<meta property="og:title" content="Unternehmen | dilibworld GmbH">
<meta property="og:description"
content="dilibworld entwickelt souveräne KI- und Datenplattformen für sensible und geschäftskritische Prozesse.">
<meta property="og:image" content="https://dilibworld.com/assets/img/og-cover.svg">
<link rel="stylesheet" href="../assets/css/foundation.min.css">
<link rel="stylesheet" href="../assets/css/app.css">
<script type="application/ld+json">{
"@context": "https://schema.org",
"@type": "Organization",
"name": "dilibworld GmbH",
"url": "https://dilibworld.com",
"logo": "https://dilibworld.com/assets/img/dilibworld-logo.png",
"email": "info@dilibworld.com",
"telephone": "+49 2171 7766616"
}</script>
</head>
<body><a class="skip-link" href="#main">Zum Inhalt springen</a>
<header class="site-header">
<div class="grid-container">
<div class="nav-shell">
<a class="brand" href="index.html" aria-label="dilibworld GmbH"><img src="../assets/img/dilibworld-logo.png"
alt=""><span>dilibworld<small>GmbH</small></span></a>
<nav class="desktop-nav" aria-label="Main navigation"><a href="index.html">Start</a><a
href="loesungen.html">Lösungen</a><a href="unternehmen.html" aria-current="page">Unternehmen</a><a
href="kontakt.html">Kontakt</a><span class="lang-switch"><a class="active" href="#"
aria-current="true">DE</a><a
href="../en/index.html">EN</a></span><a class="nav-cta" href="kontakt.html">Projekt besprechen</a>
</nav>
<button class="menu-toggle" data-menu-toggle aria-expanded="false" aria-controls="mobile-navigation"
aria-label="Menu"><span></span></button>
</div>
<nav id="mobile-navigation" class="mobile-nav" data-mobile-nav aria-label="Mobile navigation"><a
href="index.html">Start</a><a href="loesungen.html">Lösungen</a><a href="unternehmen.html"
aria-current="page">Unternehmen</a><a
href="kontakt.html">Kontakt</a><a href="../en/index.html">EN</a></nav>
</div>
</header>
<main id="main">
<section class="page-hero">
<div class="grid-container"><span class="eyebrow">dilibworld GmbH</span>
<h1>Digitale Freiheit für Unternehmen.</h1>
<p class="lead">Wir entwickeln sichere Softwareplattformen, die Daten, Prozesse und künstliche Intelligenz
unter der Kontrolle unserer Kunden zusammenführen.</p></div>
</section>
<section class="section white">
<div class="grid-container">
<div class="grid-x grid-margin-x">
<div class="cell large-7"><h2>Aus Erfahrung mit komplexen und schutzbedürftigen Daten.</h2>
<p class="lead">Die technologische Basis von dilib entstand aus langjähriger Arbeit an
anspruchsvollen Integrations-, Dokumenten- und Verfahrenssystemen. Daraus wurde eine modulare
Plattform für Unternehmen, die mehr benötigen als einzelne Schnittstellen oder isolierte
KI-Werkzeuge.</p>
<p>dilib steht für <strong>digital liberty</strong>: Unternehmen sollen ihre Systeme modernisieren
können, ohne die Kontrolle über Daten, Wissen und geschäftskritische Abläufe abzugeben. Deshalb
verbinden wir offene Integration mit lokalem Betrieb, klaren Berechtigungen und
nachvollziehbarer Automatisierung.</p></div>
<div class="cell large-5">
<div class="product-visual"><img src="../assets/img/hero-architecture.svg"
alt="dilibworld Plattform"></div>
</div>
</div>
</div>
</section>
<section class="section">
<div class="grid-container"><span class="eyebrow">Unsere Grundsätze</span>
<h2>Technologie muss Vertrauen verdienen.</h2>
<div class="company-values">
<article class="value"><strong>Souveränität</strong>
<p>Datenhaltung, Modelle und Betriebsform werden passend zur Organisation geplant.</p></article>
<article class="value"><strong>Integration</strong>
<p>Bestehende Investitionen werden eingebunden, statt funktionierende Systeme pauschal zu
ersetzen.</p></article>
<article class="value"><strong>Wirtschaftlichkeit</strong>
<p>Projekte beginnen mit klaren Zielen, messbarem Nutzen und einem realistischen
Einführungspfad.</p></article>
</div>
</div>
</section>
<section class="section dark">
<div class="grid-container">
<div class="grid-x grid-margin-x">
<div class="cell large-5"><span class="eyebrow">Wofür wir stehen</span>
<p class="quote">„Künstliche Intelligenz wird erst dann zu einem Unternehmenswert, wenn Daten,
Prozesse und Verantwortung zusammen gedacht werden.“</p></div>
<div class="cell large-7"><h2>Partnerschaftlich von der Analyse bis zum Betrieb.</h2>
<ul class="feature-list">
<li>Fachliche und technische Anforderungsanalyse</li>
<li>Architektur, Integration und individuelle Erweiterungen</li>
<li>Lokaler, eigener oder betreuter Betrieb</li>
<li>Dokumentation, Übergabe und langfristige Weiterentwicklung</li>
</ul>
</div>
</div>
</div>
</section>
</main>
<footer class="footer">
<div class="grid-container">
<div class="grid-x grid-margin-x">
<div class="cell medium-6 large-5">
<div class="footer-logo"><img src="../assets/img/dilibworld-logo.png" alt="">
<div><strong>dilibworld
GmbH</strong><br><span>Souveräne KI- und Datenplattformen für Unternehmen.</span></div>
</div>
<p>Digitale Freiheit entsteht, wenn Unternehmen ihre Daten, Modelle und Prozesse selbst
kontrollieren.</p></div>
<div class="cell small-6 medium-3 large-3"><h3>Navigation</h3>
<ul>
<li><a href="loesungen.html">Lösungen</a></li>
<li><a href="unternehmen.html">Unternehmen</a></li>
<li><a href="kontakt.html">Kontakt</a></li>
</ul>
</div>
<div class="cell small-6 medium-3 large-4"><h3>Kontakt</h3>
<ul>
<li><a href="mailto:info@dilibworld.com">info@dilibworld.com</a></li>
<li>+49 2171 7766616</li>
<li>Leverkusen · Germany</li>
</ul>
</div>
</div>
<div class="footer-bottom"><span>© <span data-current-year></span> dilibworld GmbH</span><span><a
href="impressum.html">Impressum</a> · <a href="datenschutz.html">Datenschutz</a></span></div>
</div>
</footer>
<div class="cookie-notice" data-cookie-notice role="dialog" aria-label="Cookie information"><strong>Datenschutzfreundlich</strong>
<p>Diese Website verwendet nur technisch notwendige lokale Speicherung für Ihre Cookie-Auswahl. Es werden keine
Analyse- oder Marketing-Cookies gesetzt.</p>
<div class="cookie-actions">
<button class="accept" data-cookie-choice="accepted">Verstanden</button>
<button class="decline" data-cookie-choice="closed">Schließen</button>
</div>
</div>
<script src="../assets/js/app.js" defer></script>
</body>
</html>
+146 -11
View File
@@ -1,11 +1,146 @@
<!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Company | dilibworld GmbH</title><meta name="description" content="dilibworld develops sovereign AI and data platforms for sensitive and business-critical processes."><meta name="theme-color" content="#071b2e"><link rel="canonical" href="https://dilibworld.com/en/company.html"><link rel="alternate" hreflang="de" href="https://dilibworld.com/de/"><link rel="alternate" hreflang="en" href="https://dilibworld.com/en/"><link rel="icon" href="../assets/img/favicon.svg" type="image/svg+xml"><meta property="og:type" content="website"><meta property="og:title" content="Company | dilibworld GmbH"><meta property="og:description" content="dilibworld develops sovereign AI and data platforms for sensitive and business-critical processes."><meta property="og:image" content="https://dilibworld.com/assets/img/og-cover.svg"><link rel="stylesheet" href="../assets/css/foundation.min.css"><link rel="stylesheet" href="../assets/css/app.css"><script type="application/ld+json">{"@context": "https://schema.org", "@type": "Organization", "name": "dilibworld GmbH", "url": "https://dilibworld.com", "logo": "https://dilibworld.com/assets/img/dilibworld-logo.png", "email": "info@dilibworld.com", "telephone": "+49 2171 7766616"}</script></head><body><a class="skip-link" href="#main">Skip to content</a> <!doctype html>
<header class="site-header"><div class="grid-container"><div class="nav-shell"> <html lang="en">
<a class="brand" href="index.html" aria-label="dilibworld GmbH"><img src="../assets/img/dilibworld-logo.png" alt=""><span>dilibworld<small>GmbH</small></span></a> <head>
<nav class="desktop-nav" aria-label="Main navigation"><a href="index.html" >Home</a><a href="solutions.html" >Solutions</a><a href="company.html" aria-current="page">Company</a><a href="contact.html" >Contact</a><span class="lang-switch"><a class="active" href="#" aria-current="true">EN</a><a href="../de/index.html">DE</a></span><a class="nav-cta" href="contact.html">Discuss your project</a></nav> <meta charset="utf-8">
<button class="menu-toggle" data-menu-toggle aria-expanded="false" aria-controls="mobile-navigation" aria-label="Menu"><span></span></button> <meta name="viewport" content="width=device-width,initial-scale=1">
</div><nav id="mobile-navigation" class="mobile-nav" data-mobile-nav aria-label="Mobile navigation"><a href="index.html" >Home</a><a href="solutions.html" >Solutions</a><a href="company.html" aria-current="page">Company</a><a href="contact.html" >Contact</a><a href="../de/index.html">DE</a></nav></div></header><main id="main"><section class="page-hero"><div class="grid-container"><span class="eyebrow">dilibworld GmbH</span><h1>Digital liberty for enterprises.</h1><p class="lead">We develop secure software platforms that bring data, processes and artificial intelligence together under our customers' control.</p></div></section><section class="section white"><div class="grid-container"><div class="grid-x grid-margin-x"><div class="cell large-7"><h2>Built on experience with complex and sensitive data.</h2><p class="lead">The technological foundation of dilib grew from years of work on demanding integration, document and procedural systems. It has evolved into a modular platform for organisations that need more than isolated interfaces or stand-alone AI tools.</p><p>dilib stands for <strong>digital liberty</strong>: enterprises should be able to modernise their systems without surrendering control of data, knowledge and business-critical operations. We therefore combine open integration with local deployment, clear permissions and traceable automation.</p></div><div class="cell large-5"><div class="product-visual"><img src="../assets/img/hero-architecture.svg" alt="dilibworld platform"></div></div></div></div></section><section class="section"><div class="grid-container"><span class="eyebrow">Our principles</span><h2>Technology must earn trust.</h2><div class="company-values"><article class="value"><strong>Sovereignty</strong><p>Data storage, models and operating model are planned around the organisation.</p></article><article class="value"><strong>Integration</strong><p>Existing investments are connected instead of replacing working systems by default.</p></article><article class="value"><strong>Commercial value</strong><p>Projects begin with clear objectives, measurable outcomes and a realistic adoption path.</p></article></div></div></section><section class="section dark"><div class="grid-container"><div class="grid-x grid-margin-x"><div class="cell large-5"><span class="eyebrow">What we believe</span><p class="quote">“Artificial intelligence becomes an enterprise asset only when data, processes and responsibility are designed together.”</p></div><div class="cell large-7"><h2>A collaborative path from analysis to operations.</h2><ul class="feature-list"><li>Business and technical requirements analysis</li><li>Architecture, integration and custom extensions</li><li>Local, customer-operated or managed deployment</li><li>Documentation, handover and long-term evolution</li></ul></div></div></div></section></main><footer class="footer"><div class="grid-container"><div class="grid-x grid-margin-x"> <title>Company | dilibworld GmbH</title>
<div class="cell medium-6 large-5"><div class="footer-logo"><img src="../assets/img/dilibworld-logo.png" alt=""><div><strong>dilibworld GmbH</strong><br><span>Sovereign AI and data platforms for enterprises.</span></div></div><p>Digital liberty begins when enterprises retain control of their data, models and processes.</p></div> <meta name="description"
<div class="cell small-6 medium-3 large-3"><h3>Navigation</h3><ul><li><a href="solutions.html">Solutions</a></li><li><a href="company.html">Company</a></li><li><a href="contact.html">Contact</a></li></ul></div> content="dilibworld develops sovereign AI and data platforms for sensitive and business-critical processes.">
<div class="cell small-6 medium-3 large-4"><h3>Contact</h3><ul><li><a href="mailto:info@dilibworld.com">info@dilibworld.com</a></li><li>+49 2171 7766616</li><li>Leverkusen · Germany</li></ul></div></div> <meta name="theme-color" content="#071b2e">
<div class="footer-bottom"><span>© <span data-current-year></span> dilibworld GmbH</span><span><a href="legal-notice.html">Legal notice</a> · <a href="privacy.html">Privacy</a></span></div></div></footer> <link rel="canonical" href="https://dilibworld.com/en/company.html">
<div class="cookie-notice" data-cookie-notice role="dialog" aria-label="Cookie information"><strong>Privacy-friendly</strong><p>This website only uses technically necessary local storage for your cookie choice. No analytics or marketing cookies are used.</p><div class="cookie-actions"><button class="accept" data-cookie-choice="accepted">Understood</button><button class="decline" data-cookie-choice="closed">Close</button></div></div><script src="../assets/js/app.js" defer></script></body></html> <link rel="alternate" hreflang="de" href="https://dilibworld.com/de/">
<link rel="alternate" hreflang="en" href="https://dilibworld.com/en/">
<link rel="icon" href="../assets/img/favicon.svg" type="image/svg+xml">
<meta property="og:type" content="website">
<meta property="og:title" content="Company | dilibworld GmbH">
<meta property="og:description"
content="dilibworld develops sovereign AI and data platforms for sensitive and business-critical processes.">
<meta property="og:image" content="https://dilibworld.com/assets/img/og-cover.svg">
<link rel="stylesheet" href="../assets/css/foundation.min.css">
<link rel="stylesheet" href="../assets/css/app.css">
<script type="application/ld+json">{
"@context": "https://schema.org",
"@type": "Organization",
"name": "dilibworld GmbH",
"url": "https://dilibworld.com",
"logo": "https://dilibworld.com/assets/img/dilibworld-logo.png",
"email": "info@dilibworld.com",
"telephone": "+49 2171 7766616"
}</script>
</head>
<body><a class="skip-link" href="#main">Skip to content</a>
<header class="site-header">
<div class="grid-container">
<div class="nav-shell">
<a class="brand" href="index.html" aria-label="dilibworld GmbH"><img src="../assets/img/dilibworld-logo.png"
alt=""><span>dilibworld<small>GmbH</small></span></a>
<nav class="desktop-nav" aria-label="Main navigation"><a href="index.html">Home</a><a href="solutions.html">Solutions</a><a
href="company.html" aria-current="page">Company</a><a href="contact.html">Contact</a><span
class="lang-switch"><a class="active" href="#" aria-current="true">EN</a><a href="../de/index.html">DE</a></span><a
class="nav-cta" href="contact.html">Discuss your project</a></nav>
<button class="menu-toggle" data-menu-toggle aria-expanded="false" aria-controls="mobile-navigation"
aria-label="Menu"><span></span></button>
</div>
<nav id="mobile-navigation" class="mobile-nav" data-mobile-nav aria-label="Mobile navigation"><a
href="index.html">Home</a><a href="solutions.html">Solutions</a><a href="company.html"
aria-current="page">Company</a><a
href="contact.html">Contact</a><a href="../de/index.html">DE</a></nav>
</div>
</header>
<main id="main">
<section class="page-hero">
<div class="grid-container"><span class="eyebrow">dilibworld GmbH</span>
<h1>Digital liberty for enterprises.</h1>
<p class="lead">We develop secure software platforms that bring data, processes and artificial intelligence
together under our customers' control.</p></div>
</section>
<section class="section white">
<div class="grid-container">
<div class="grid-x grid-margin-x">
<div class="cell large-7"><h2>Built on experience with complex and sensitive data.</h2>
<p class="lead">The technological foundation of dilib grew from years of work on demanding
integration, document and procedural systems. It has evolved into a modular platform for
organisations that need more than isolated interfaces or stand-alone AI tools.</p>
<p>dilib stands for <strong>digital liberty</strong>: enterprises should be able to modernise their
systems without surrendering control of data, knowledge and business-critical operations. We
therefore combine open integration with local deployment, clear permissions and traceable
automation.</p></div>
<div class="cell large-5">
<div class="product-visual"><img src="../assets/img/hero-architecture.svg"
alt="dilibworld platform"></div>
</div>
</div>
</div>
</section>
<section class="section">
<div class="grid-container"><span class="eyebrow">Our principles</span>
<h2>Technology must earn trust.</h2>
<div class="company-values">
<article class="value"><strong>Sovereignty</strong>
<p>Data storage, models and operating model are planned around the organisation.</p></article>
<article class="value"><strong>Integration</strong>
<p>Existing investments are connected instead of replacing working systems by default.</p></article>
<article class="value"><strong>Commercial value</strong>
<p>Projects begin with clear objectives, measurable outcomes and a realistic adoption path.</p>
</article>
</div>
</div>
</section>
<section class="section dark">
<div class="grid-container">
<div class="grid-x grid-margin-x">
<div class="cell large-5"><span class="eyebrow">What we believe</span>
<p class="quote">“Artificial intelligence becomes an enterprise asset only when data, processes and
responsibility are designed together.”</p></div>
<div class="cell large-7"><h2>A collaborative path from analysis to operations.</h2>
<ul class="feature-list">
<li>Business and technical requirements analysis</li>
<li>Architecture, integration and custom extensions</li>
<li>Local, customer-operated or managed deployment</li>
<li>Documentation, handover and long-term evolution</li>
</ul>
</div>
</div>
</div>
</section>
</main>
<footer class="footer">
<div class="grid-container">
<div class="grid-x grid-margin-x">
<div class="cell medium-6 large-5">
<div class="footer-logo"><img src="../assets/img/dilibworld-logo.png" alt="">
<div><strong>dilibworld
GmbH</strong><br><span>Sovereign AI and data platforms for enterprises.</span></div>
</div>
<p>Digital liberty begins when enterprises retain control of their data, models and processes.</p></div>
<div class="cell small-6 medium-3 large-3"><h3>Navigation</h3>
<ul>
<li><a href="solutions.html">Solutions</a></li>
<li><a href="company.html">Company</a></li>
<li><a href="contact.html">Contact</a></li>
</ul>
</div>
<div class="cell small-6 medium-3 large-4"><h3>Contact</h3>
<ul>
<li><a href="mailto:info@dilibworld.com">info@dilibworld.com</a></li>
<li>+49 2171 7766616</li>
<li>Leverkusen · Germany</li>
</ul>
</div>
</div>
<div class="footer-bottom"><span>© <span data-current-year></span> dilibworld GmbH</span><span><a
href="legal-notice.html">Legal notice</a> · <a href="privacy.html">Privacy</a></span></div>
</div>
</footer>
<div class="cookie-notice" data-cookie-notice role="dialog" aria-label="Cookie information">
<strong>Privacy-friendly</strong>
<p>This website only uses technically necessary local storage for your cookie choice. No analytics or marketing
cookies are used.</p>
<div class="cookie-actions">
<button class="accept" data-cookie-choice="accepted">Understood</button>
<button class="decline" data-cookie-choice="closed">Close</button>
</div>
</div>
<script src="../assets/js/app.js" defer></script>
</body>
</html>
+141 -11
View File
@@ -1,11 +1,141 @@
<!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Contact | dilibworld GmbH</title><meta name="description" content="Talk to dilibworld about local AI, data integration, process automation and document management."><meta name="theme-color" content="#071b2e"><link rel="canonical" href="https://dilibworld.com/en/contact.html"><link rel="alternate" hreflang="de" href="https://dilibworld.com/de/"><link rel="alternate" hreflang="en" href="https://dilibworld.com/en/"><link rel="icon" href="../assets/img/favicon.svg" type="image/svg+xml"><meta property="og:type" content="website"><meta property="og:title" content="Contact | dilibworld GmbH"><meta property="og:description" content="Talk to dilibworld about local AI, data integration, process automation and document management."><meta property="og:image" content="https://dilibworld.com/assets/img/og-cover.svg"><link rel="stylesheet" href="../assets/css/foundation.min.css"><link rel="stylesheet" href="../assets/css/app.css"><script type="application/ld+json">{"@context": "https://schema.org", "@type": "Organization", "name": "dilibworld GmbH", "url": "https://dilibworld.com", "logo": "https://dilibworld.com/assets/img/dilibworld-logo.png", "email": "info@dilibworld.com", "telephone": "+49 2171 7766616"}</script></head><body><a class="skip-link" href="#main">Skip to content</a> <!doctype html>
<header class="site-header"><div class="grid-container"><div class="nav-shell"> <html lang="en">
<a class="brand" href="index.html" aria-label="dilibworld GmbH"><img src="../assets/img/dilibworld-logo.png" alt=""><span>dilibworld<small>GmbH</small></span></a> <head>
<nav class="desktop-nav" aria-label="Main navigation"><a href="index.html" >Home</a><a href="solutions.html" >Solutions</a><a href="company.html" >Company</a><a href="contact.html" aria-current="page">Contact</a><span class="lang-switch"><a class="active" href="#" aria-current="true">EN</a><a href="../de/index.html">DE</a></span><a class="nav-cta" href="contact.html">Discuss your project</a></nav> <meta charset="utf-8">
<button class="menu-toggle" data-menu-toggle aria-expanded="false" aria-controls="mobile-navigation" aria-label="Menu"><span></span></button> <meta name="viewport" content="width=device-width,initial-scale=1">
</div><nav id="mobile-navigation" class="mobile-nav" data-mobile-nav aria-label="Mobile navigation"><a href="index.html" >Home</a><a href="solutions.html" >Solutions</a><a href="company.html" >Company</a><a href="contact.html" aria-current="page">Contact</a><a href="../de/index.html">DE</a></nav></div></header><main id="main"><section class="page-hero"><div class="grid-container"><span class="eyebrow">Contact</span><h1>Let us understand your use case.</h1><p class="lead">A strong project does not start with a product. It starts with a clear problem, the right data and a measurable objective.</p></div></section><section class="section white"><div class="grid-container"><div class="grid-x grid-margin-x"><div class="cell large-5"><h2>A direct conversation.</h2><p class="lead">Briefly describe which systems, data or processes should be connected, automated or supported by local AI.</p><ul class="feature-list"><li>Email: <a href="mailto:info@dilibworld.com">info@dilibworld.com</a></li><li>Phone: <a href="tel:+4921717766616">+49 2171 7766616</a></li><li>Location: Leverkusen, Germany</li></ul><p><small>The form opens your local email application. No form data is stored on this website.</small></p></div><div class="cell large-7"><form class="contact-card" data-mailto-form data-recipient="info@dilibworld.com"><div class="form-grid"><label>First name<input required name="First name" autocomplete="given-name"></label><label>Last name<input required name="Last name" autocomplete="family-name"></label><label class="full">Company<input name="Company" autocomplete="organization"></label><label>Email<input required type="email" name="Email" autocomplete="email"></label><label>Phone<input type="tel" name="Phone" autocomplete="tel"></label><label class="full">Topic<select name="Topic"><option>dilibAI / local AI</option><option>Data integration / Transfer</option><option>Masterdata</option><option>Process automation</option><option>Document management / IDX</option><option>Complete platform</option></select></label><label class="full">Your message<textarea required name="Message" rows="7"></textarea></label><label class="full checkbox-line"><input required type="checkbox" name="privacy" value="accepted"><span>I have read the <a href="privacy.html">privacy notice</a> and consent to processing for the purpose of responding to my enquiry.</span></label><div class="full"><button class="button primary" type="submit">Prepare email</button><div class="form-status">Your email application has been opened. Please review and send the message there.</div></div></div></form></div></div></div></section></main><footer class="footer"><div class="grid-container"><div class="grid-x grid-margin-x"> <title>Contact | dilibworld GmbH</title>
<div class="cell medium-6 large-5"><div class="footer-logo"><img src="../assets/img/dilibworld-logo.png" alt=""><div><strong>dilibworld GmbH</strong><br><span>Sovereign AI and data platforms for enterprises.</span></div></div><p>Digital liberty begins when enterprises retain control of their data, models and processes.</p></div> <meta name="description"
<div class="cell small-6 medium-3 large-3"><h3>Navigation</h3><ul><li><a href="solutions.html">Solutions</a></li><li><a href="company.html">Company</a></li><li><a href="contact.html">Contact</a></li></ul></div> content="Talk to dilibworld about local AI, data integration, process automation and document management.">
<div class="cell small-6 medium-3 large-4"><h3>Contact</h3><ul><li><a href="mailto:info@dilibworld.com">info@dilibworld.com</a></li><li>+49 2171 7766616</li><li>Leverkusen · Germany</li></ul></div></div> <meta name="theme-color" content="#071b2e">
<div class="footer-bottom"><span>© <span data-current-year></span> dilibworld GmbH</span><span><a href="legal-notice.html">Legal notice</a> · <a href="privacy.html">Privacy</a></span></div></div></footer> <link rel="canonical" href="https://dilibworld.com/en/contact.html">
<div class="cookie-notice" data-cookie-notice role="dialog" aria-label="Cookie information"><strong>Privacy-friendly</strong><p>This website only uses technically necessary local storage for your cookie choice. No analytics or marketing cookies are used.</p><div class="cookie-actions"><button class="accept" data-cookie-choice="accepted">Understood</button><button class="decline" data-cookie-choice="closed">Close</button></div></div><script src="../assets/js/app.js" defer></script></body></html> <link rel="alternate" hreflang="de" href="https://dilibworld.com/de/">
<link rel="alternate" hreflang="en" href="https://dilibworld.com/en/">
<link rel="icon" href="../assets/img/favicon.svg" type="image/svg+xml">
<meta property="og:type" content="website">
<meta property="og:title" content="Contact | dilibworld GmbH">
<meta property="og:description"
content="Talk to dilibworld about local AI, data integration, process automation and document management.">
<meta property="og:image" content="https://dilibworld.com/assets/img/og-cover.svg">
<link rel="stylesheet" href="../assets/css/foundation.min.css">
<link rel="stylesheet" href="../assets/css/app.css">
<script type="application/ld+json">{
"@context": "https://schema.org",
"@type": "Organization",
"name": "dilibworld GmbH",
"url": "https://dilibworld.com",
"logo": "https://dilibworld.com/assets/img/dilibworld-logo.png",
"email": "info@dilibworld.com",
"telephone": "+49 2171 7766616"
}</script>
</head>
<body><a class="skip-link" href="#main">Skip to content</a>
<header class="site-header">
<div class="grid-container">
<div class="nav-shell">
<a class="brand" href="index.html" aria-label="dilibworld GmbH"><img src="../assets/img/dilibworld-logo.png"
alt=""><span>dilibworld<small>GmbH</small></span></a>
<nav class="desktop-nav" aria-label="Main navigation"><a href="index.html">Home</a><a href="solutions.html">Solutions</a><a
href="company.html">Company</a><a href="contact.html" aria-current="page">Contact</a><span
class="lang-switch"><a class="active" href="#" aria-current="true">EN</a><a href="../de/index.html">DE</a></span><a
class="nav-cta" href="contact.html">Discuss your project</a></nav>
<button class="menu-toggle" data-menu-toggle aria-expanded="false" aria-controls="mobile-navigation"
aria-label="Menu"><span></span></button>
</div>
<nav id="mobile-navigation" class="mobile-nav" data-mobile-nav aria-label="Mobile navigation"><a
href="index.html">Home</a><a href="solutions.html">Solutions</a><a href="company.html">Company</a><a
href="contact.html" aria-current="page">Contact</a><a href="../de/index.html">DE</a></nav>
</div>
</header>
<main id="main">
<section class="page-hero">
<div class="grid-container"><span class="eyebrow">Contact</span>
<h1>Let us understand your use case.</h1>
<p class="lead">A strong project does not start with a product. It starts with a clear problem, the right
data and a measurable objective.</p></div>
</section>
<section class="section white">
<div class="grid-container">
<div class="grid-x grid-margin-x">
<div class="cell large-5"><h2>A direct conversation.</h2>
<p class="lead">Briefly describe which systems, data or processes should be connected, automated or
supported by local AI.</p>
<ul class="feature-list">
<li>Email: <a href="mailto:info@dilibworld.com">info@dilibworld.com</a></li>
<li>Phone: <a href="tel:+4921717766616">+49 2171 7766616</a></li>
<li>Location: Leverkusen, Germany</li>
</ul>
<p><small>Your enquiry is transmitted securely and sent to us through Microsoft 365.</small></p></div>
<div class="cell large-7">
<form class="contact-card" data-contact-form>
<div class="form-grid"><label>First name<input required name="First name"
autocomplete="given-name"></label><label>Last
name<input required name="Last name" autocomplete="family-name"></label><label class="full">Company<input
name="Company" autocomplete="organization"></label><label>Email<input required
type="email"
name="Email"
autocomplete="email"></label><label>Phone<input
type="tel" name="Phone" autocomplete="tel"></label><label class="full">Topic<select
name="Topic">
<option>dilibAI / local AI</option>
<option>Data integration / Transfer</option>
<option>Masterdata</option>
<option>Process automation</option>
<option>Document management / IDX</option>
<option>Complete platform</option>
</select></label><label class="full honeypot" aria-hidden="true">Website<input name="website" tabindex="-1" autocomplete="off"></label><label class="full">Your message<textarea required name="Message"
rows="7"></textarea></label><label
class="full checkbox-line"><input required type="checkbox" name="privacy"
value="accepted"><span>I have read the <a
href="privacy.html">privacy notice</a> and consent to processing for the purpose of responding to my enquiry.</span></label>
<div class="full">
<button class="button primary" type="submit">Send message</button>
<div class="form-status" role="status" aria-live="polite">Thank you. Your message has been submitted.
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</section>
</main>
<footer class="footer">
<div class="grid-container">
<div class="grid-x grid-margin-x">
<div class="cell medium-6 large-5">
<div class="footer-logo"><img src="../assets/img/dilibworld-logo.png" alt="">
<div><strong>dilibworld
GmbH</strong><br><span>Sovereign AI and data platforms for enterprises.</span></div>
</div>
<p>Digital liberty begins when enterprises retain control of their data, models and processes.</p></div>
<div class="cell small-6 medium-3 large-3"><h3>Navigation</h3>
<ul>
<li><a href="solutions.html">Solutions</a></li>
<li><a href="company.html">Company</a></li>
<li><a href="contact.html">Contact</a></li>
</ul>
</div>
<div class="cell small-6 medium-3 large-4"><h3>Contact</h3>
<ul>
<li><a href="mailto:info@dilibworld.com">info@dilibworld.com</a></li>
<li>+49 2171 7766616</li>
<li>Leverkusen · Germany</li>
</ul>
</div>
</div>
<div class="footer-bottom"><span>© <span data-current-year></span> dilibworld GmbH</span><span><a
href="legal-notice.html">Legal notice</a> · <a href="privacy.html">Privacy</a></span></div>
</div>
</footer>
<div class="cookie-notice" data-cookie-notice role="dialog" aria-label="Cookie information">
<strong>Privacy-friendly</strong>
<p>This website only uses technically necessary local storage for your cookie choice. No analytics or marketing
cookies are used.</p>
<div class="cookie-actions">
<button class="accept" data-cookie-choice="accepted">Understood</button>
<button class="decline" data-cookie-choice="closed">Close</button>
</div>
</div>
<script src="../assets/js/app.js" defer></script>
</body>
</html>
+1 -3
View File
@@ -69,9 +69,7 @@
attacks on the basis of legitimate interests under Article 6(1)(f) GDPR.</p> attacks on the basis of legitimate interests under Article 6(1)(f) GDPR.</p>
<p><strong>[add hosting provider, location and retention period]</strong></p> <p><strong>[add hosting provider, location and retention period]</strong></p>
<h2>4. Contact</h2> <h2>4. Contact</h2>
<p>The contact form opens the user's local email application. The entered content is not transmitted to or <p>When you use the contact form, we process the contact details and message you provide to respond to your enquiry. The information is sent securely to our server and then through Microsoft 365 to our mailbox. A hidden field, a time-limited form token and request limits help prevent spam. This backend does not retain the form submission; the email remains in the mailbox and possibly Sent Items. Depending on your request, the legal basis is Article 6(1)(b) or (f) GDPR. <strong>[Complete Microsoft 365 processing, retention period and hosting details before publication.]</strong></p>
stored by this website. When the email is sent, the data is processed by the participating email
systems. The legal basis is Article 6(1)(b) or (f) GDPR depending on the content.</p>
<h2>5. Cookies and local storage</h2> <h2>5. Cookies and local storage</h2>
<p>The website does not use analytics or marketing cookies. A technically necessary choice is stored only in <p>The website does not use analytics or marketing cookies. A technically necessary choice is stored only in
the browser's local storage to hide the privacy notice. It contains no personal profile data and is not the browser's local storage to hide the privacy notice. It contains no personal profile data and is not
+205 -11
View File
@@ -1,11 +1,205 @@
<!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Solutions | dilibworld GmbH</title><meta name="description" content="dilibAI, dilib Transfer, Masterdata, Process and IDX as an integrated platform for secure digital transformation."><meta name="theme-color" content="#071b2e"><link rel="canonical" href="https://dilibworld.com/en/solutions.html"><link rel="alternate" hreflang="de" href="https://dilibworld.com/de/"><link rel="alternate" hreflang="en" href="https://dilibworld.com/en/"><link rel="icon" href="../assets/img/favicon.svg" type="image/svg+xml"><meta property="og:type" content="website"><meta property="og:title" content="Solutions | dilibworld GmbH"><meta property="og:description" content="dilibAI, dilib Transfer, Masterdata, Process and IDX as an integrated platform for secure digital transformation."><meta property="og:image" content="https://dilibworld.com/assets/img/og-cover.svg"><link rel="stylesheet" href="../assets/css/foundation.min.css"><link rel="stylesheet" href="../assets/css/app.css"><script type="application/ld+json">{"@context": "https://schema.org", "@type": "Organization", "name": "dilibworld GmbH", "url": "https://dilibworld.com", "logo": "https://dilibworld.com/assets/img/dilibworld-logo.png", "email": "info@dilibworld.com", "telephone": "+49 2171 7766616"}</script></head><body><a class="skip-link" href="#main">Skip to content</a> <!doctype html>
<header class="site-header"><div class="grid-container"><div class="nav-shell"> <html lang="en">
<a class="brand" href="index.html" aria-label="dilibworld GmbH"><img src="../assets/img/dilibworld-logo.png" alt=""><span>dilibworld<small>GmbH</small></span></a> <head>
<nav class="desktop-nav" aria-label="Main navigation"><a href="index.html" >Home</a><a href="solutions.html" aria-current="page">Solutions</a><a href="company.html" >Company</a><a href="contact.html" >Contact</a><span class="lang-switch"><a class="active" href="#" aria-current="true">EN</a><a href="../de/index.html">DE</a></span><a class="nav-cta" href="contact.html">Discuss your project</a></nav> <meta charset="utf-8">
<button class="menu-toggle" data-menu-toggle aria-expanded="false" aria-controls="mobile-navigation" aria-label="Menu"><span></span></button> <meta name="viewport" content="width=device-width,initial-scale=1">
</div><nav id="mobile-navigation" class="mobile-nav" data-mobile-nav aria-label="Mobile navigation"><a href="index.html" >Home</a><a href="solutions.html" aria-current="page">Solutions</a><a href="company.html" >Company</a><a href="contact.html" >Contact</a><a href="../de/index.html">DE</a></nav></div></header><main id="main"><section class="page-hero"><div class="grid-container"><span class="eyebrow">The dilib platform</span><h1>Modular by design. Stronger together.</h1><p class="lead">The modules of the dilib platform work together while still allowing a phased introduction. Concrete use cases grow into a robust enterprise-wide architecture.</p></div></section><section class="section white"><div class="grid-container"><article id="ai" class="product-row"><div class="grid-x grid-margin-x align-middle"><div class="cell large-5"><div class="product-visual reveal-on-scroll"><img src="../assets/img/product-ai.svg" alt=""></div></div><div class="cell large-7"><span class="badge">dilibAI</span><h2>Local AI. Confidential knowledge. Full control.</h2><p class="lead">dilibAI brings language models and data-driven assistance into your own infrastructure. Internal documents, prompts and business secrets do not need to leave the organisation.</p><ul class="feature-list"><li>Knowledge assistants for specialist teams</li><li>Analysis of documents and enterprise data</li><li>Planning suitable server and GPU infrastructure</li><li>Permissions, source references and controlled use</li></ul></div></div></article><article id="transfer" class="product-row"><div class="grid-x grid-margin-x align-middle"><div class="cell large-7"><span class="badge">dilib Transfer</span><h2>The secure bridge between systems.</h2><p class="lead">dilib Transfer connects internal and external systems through modern interfaces. In addition to REST and JSON, XML, CSV, Excel and agreed custom formats can be processed reliably.</p><ul class="feature-list"><li>RESTful services and APIs</li><li>File-based imports and exports</li><li>Validation, error handling and retries</li><li>Partner, customer and supplier integration</li></ul></div><div class="cell large-5"><div class="product-visual reveal-on-scroll"><img src="../assets/img/product-transfer.svg" alt=""></div></div></div></article><article id="masterdata" class="product-row"><div class="grid-x grid-margin-x align-middle"><div class="cell large-5"><div class="product-visual reveal-on-scroll"><img src="../assets/img/product-masterdata.svg" alt=""></div></div><div class="cell large-7"><span class="badge">dilib Masterdata</span><h2>Different data becomes usable together.</h2><p class="lead">Incoming data is initially accepted as received, normalised for business use and structured for each target system. Changes and mappings remain traceable.</p><ul class="feature-list"><li>Normalisation and mapping</li><li>Duplicate detection and data quality</li><li>Target-system-specific preparation</li><li>Logging of business changes</li></ul></div></div></article><article id="process" class="product-row"><div class="grid-x grid-margin-x align-middle"><div class="cell large-7"><span class="badge">dilib Process</span><h2>Automation at the heart of the platform.</h2><p class="lead">The process server controls time-, event- and rule-driven tasks. It monitors execution, handles errors and keeps recurring work running reliably.</p><ul class="feature-list"><li>Schedules, events and rules</li><li>Monitoring and status messages</li><li>Retries and controlled error paths</li><li>Resource-efficient background processing</li></ul></div><div class="cell large-5"><div class="product-visual reveal-on-scroll"><img src="../assets/img/product-process.svg" alt=""></div></div></div></article><article id="idx" class="product-row"><div class="grid-x grid-margin-x align-middle"><div class="cell large-5"><div class="product-visual reveal-on-scroll"><img src="../assets/img/product-idx.svg" alt=""></div></div><div class="cell large-7"><span class="badge">dilib IDX</span><h2>Documents become usable knowledge.</h2><p class="lead">dilib IDX combines OCR, indexing, metadata and full-text search. Documents can be ingested, split, classified and made quickly discoverable for authorised users.</p><ul class="feature-list"><li>OCR and searchable PDFs</li><li>Metadata and full-text index</li><li>Automated document processing</li><li>Role and permission concepts</li></ul></div></div></article></div></section><section class="section"><div class="grid-container"><div class="cta-panel"><h2>The right combination starts with your process.</h2><p class="lead">We identify the modules that create the greatest secure and commercial value.</p><a class="button primary" href="contact.html">Discuss requirements</a></div></div></section></main><footer class="footer"><div class="grid-container"><div class="grid-x grid-margin-x"> <title>Solutions | dilibworld GmbH</title>
<div class="cell medium-6 large-5"><div class="footer-logo"><img src="../assets/img/dilibworld-logo.png" alt=""><div><strong>dilibworld GmbH</strong><br><span>Sovereign AI and data platforms for enterprises.</span></div></div><p>Digital liberty begins when enterprises retain control of their data, models and processes.</p></div> <meta name="description"
<div class="cell small-6 medium-3 large-3"><h3>Navigation</h3><ul><li><a href="solutions.html">Solutions</a></li><li><a href="company.html">Company</a></li><li><a href="contact.html">Contact</a></li></ul></div> content="dilibAI, dilib Transfer, Masterdata, Process and IDX as an integrated platform for secure digital transformation.">
<div class="cell small-6 medium-3 large-4"><h3>Contact</h3><ul><li><a href="mailto:info@dilibworld.com">info@dilibworld.com</a></li><li>+49 2171 7766616</li><li>Leverkusen · Germany</li></ul></div></div> <meta name="theme-color" content="#071b2e">
<div class="footer-bottom"><span>© <span data-current-year></span> dilibworld GmbH</span><span><a href="legal-notice.html">Legal notice</a> · <a href="privacy.html">Privacy</a></span></div></div></footer> <link rel="canonical" href="https://dilibworld.com/en/solutions.html">
<div class="cookie-notice" data-cookie-notice role="dialog" aria-label="Cookie information"><strong>Privacy-friendly</strong><p>This website only uses technically necessary local storage for your cookie choice. No analytics or marketing cookies are used.</p><div class="cookie-actions"><button class="accept" data-cookie-choice="accepted">Understood</button><button class="decline" data-cookie-choice="closed">Close</button></div></div><script src="../assets/js/app.js" defer></script></body></html> <link rel="alternate" hreflang="de" href="https://dilibworld.com/de/">
<link rel="alternate" hreflang="en" href="https://dilibworld.com/en/">
<link rel="icon" href="../assets/img/favicon.svg" type="image/svg+xml">
<meta property="og:type" content="website">
<meta property="og:title" content="Solutions | dilibworld GmbH">
<meta property="og:description"
content="dilibAI, dilib Transfer, Masterdata, Process and IDX as an integrated platform for secure digital transformation.">
<meta property="og:image" content="https://dilibworld.com/assets/img/og-cover.svg">
<link rel="stylesheet" href="../assets/css/foundation.min.css">
<link rel="stylesheet" href="../assets/css/app.css">
<script type="application/ld+json">{
"@context": "https://schema.org",
"@type": "Organization",
"name": "dilibworld GmbH",
"url": "https://dilibworld.com",
"logo": "https://dilibworld.com/assets/img/dilibworld-logo.png",
"email": "info@dilibworld.com",
"telephone": "+49 2171 7766616"
}</script>
</head>
<body><a class="skip-link" href="#main">Skip to content</a>
<header class="site-header">
<div class="grid-container">
<div class="nav-shell">
<a class="brand" href="index.html" aria-label="dilibworld GmbH"><img src="../assets/img/dilibworld-logo.png"
alt=""><span>dilibworld<small>GmbH</small></span></a>
<nav class="desktop-nav" aria-label="Main navigation"><a href="index.html">Home</a><a href="solutions.html"
aria-current="page">Solutions</a><a
href="company.html">Company</a><a href="contact.html">Contact</a><span class="lang-switch"><a
class="active" href="#" aria-current="true">EN</a><a href="../de/index.html">DE</a></span><a
class="nav-cta" href="contact.html">Discuss your project</a></nav>
<button class="menu-toggle" data-menu-toggle aria-expanded="false" aria-controls="mobile-navigation"
aria-label="Menu"><span></span></button>
</div>
<nav id="mobile-navigation" class="mobile-nav" data-mobile-nav aria-label="Mobile navigation"><a
href="index.html">Home</a><a href="solutions.html" aria-current="page">Solutions</a><a
href="company.html">Company</a><a href="contact.html">Contact</a><a href="../de/index.html">DE</a></nav>
</div>
</header>
<main id="main">
<section class="page-hero">
<div class="grid-container"><span class="eyebrow">The dilib platform</span>
<h1>Modular by design. Stronger together.</h1>
<p class="lead">The modules of the dilib platform work together while still allowing a phased introduction.
Concrete use cases grow into a robust enterprise-wide architecture.</p></div>
</section>
<section class="section white">
<div class="grid-container">
<article id="ai" class="product-row">
<div class="grid-x grid-margin-x align-middle">
<div class="cell large-5">
<div class="product-visual reveal-on-scroll"><img src="../assets/img/product-ai.svg" alt="">
</div>
</div>
<div class="cell large-7"><span class="badge">dilibAI</span>
<h2>Local AI. Confidential knowledge. Full control.</h2>
<p class="lead">dilibAI brings language models and data-driven assistance into your own
infrastructure. Internal documents, prompts and business secrets do not need to leave the
organisation.</p>
<ul class="feature-list">
<li>Knowledge assistants for specialist teams</li>
<li>Analysis of documents and enterprise data</li>
<li>Planning suitable server and GPU infrastructure</li>
<li>Permissions, source references and controlled use</li>
</ul>
</div>
</div>
</article>
<article id="transfer" class="product-row">
<div class="grid-x grid-margin-x align-middle">
<div class="cell large-7"><span class="badge">dilib Transfer</span>
<h2>The secure bridge between systems.</h2>
<p class="lead">dilib Transfer connects internal and external systems through modern interfaces.
In addition to REST and JSON, XML, CSV, Excel and agreed custom formats can be processed
reliably.</p>
<ul class="feature-list">
<li>RESTful services and APIs</li>
<li>File-based imports and exports</li>
<li>Validation, error handling and retries</li>
<li>Partner, customer and supplier integration</li>
</ul>
</div>
<div class="cell large-5">
<div class="product-visual reveal-on-scroll"><img src="../assets/img/product-transfer.svg"
alt=""></div>
</div>
</div>
</article>
<article id="masterdata" class="product-row">
<div class="grid-x grid-margin-x align-middle">
<div class="cell large-5">
<div class="product-visual reveal-on-scroll"><img src="../assets/img/product-masterdata.svg"
alt=""></div>
</div>
<div class="cell large-7"><span class="badge">dilib Masterdata</span>
<h2>Different data becomes usable together.</h2>
<p class="lead">Incoming data is initially accepted as received, normalised for business use and
structured for each target system. Changes and mappings remain traceable.</p>
<ul class="feature-list">
<li>Normalisation and mapping</li>
<li>Duplicate detection and data quality</li>
<li>Target-system-specific preparation</li>
<li>Logging of business changes</li>
</ul>
</div>
</div>
</article>
<article id="process" class="product-row">
<div class="grid-x grid-margin-x align-middle">
<div class="cell large-7"><span class="badge">dilib Process</span>
<h2>Automation at the heart of the platform.</h2>
<p class="lead">The process server controls time-, event- and rule-driven tasks. It monitors
execution, handles errors and keeps recurring work running reliably.</p>
<ul class="feature-list">
<li>Schedules, events and rules</li>
<li>Monitoring and status messages</li>
<li>Retries and controlled error paths</li>
<li>Resource-efficient background processing</li>
</ul>
</div>
<div class="cell large-5">
<div class="product-visual reveal-on-scroll"><img src="../assets/img/product-process.svg"
alt=""></div>
</div>
</div>
</article>
<article id="idx" class="product-row">
<div class="grid-x grid-margin-x align-middle">
<div class="cell large-5">
<div class="product-visual reveal-on-scroll"><img src="../assets/img/product-idx.svg" alt="">
</div>
</div>
<div class="cell large-7"><span class="badge">dilib IDX</span>
<h2>Documents become usable knowledge.</h2>
<p class="lead">dilib IDX combines OCR, indexing, metadata and full-text search. Documents can
be ingested, split, classified and made quickly discoverable for authorised users.</p>
<ul class="feature-list">
<li>OCR and searchable PDFs</li>
<li>Metadata and full-text index</li>
<li>Automated document processing</li>
<li>Role and permission concepts</li>
</ul>
</div>
</div>
</article>
</div>
</section>
<section class="section">
<div class="grid-container">
<div class="cta-panel"><h2>The right combination starts with your process.</h2>
<p class="lead">We identify the modules that create the greatest secure and commercial value.</p><a
class="button primary" href="contact.html">Discuss requirements</a></div>
</div>
</section>
</main>
<footer class="footer">
<div class="grid-container">
<div class="grid-x grid-margin-x">
<div class="cell medium-6 large-5">
<div class="footer-logo"><img src="../assets/img/dilibworld-logo.png" alt="">
<div><strong>dilibworld
GmbH</strong><br><span>Sovereign AI and data platforms for enterprises.</span></div>
</div>
<p>Digital liberty begins when enterprises retain control of their data, models and processes.</p></div>
<div class="cell small-6 medium-3 large-3"><h3>Navigation</h3>
<ul>
<li><a href="solutions.html">Solutions</a></li>
<li><a href="company.html">Company</a></li>
<li><a href="contact.html">Contact</a></li>
</ul>
</div>
<div class="cell small-6 medium-3 large-4"><h3>Contact</h3>
<ul>
<li><a href="mailto:info@dilibworld.com">info@dilibworld.com</a></li>
<li>+49 2171 7766616</li>
<li>Leverkusen · Germany</li>
</ul>
</div>
</div>
<div class="footer-bottom"><span>© <span data-current-year></span> dilibworld GmbH</span><span><a
href="legal-notice.html">Legal notice</a> · <a href="privacy.html">Privacy</a></span></div>
</div>
</footer>
<div class="cookie-notice" data-cookie-notice role="dialog" aria-label="Cookie information">
<strong>Privacy-friendly</strong>
<p>This website only uses technically necessary local storage for your cookie choice. No analytics or marketing
cookies are used.</p>
<div class="cookie-actions">
<button class="accept" data-cookie-choice="accepted">Understood</button>
<button class="decline" data-cookie-choice="closed">Close</button>
</div>
</div>
<script src="../assets/js/app.js" defer></script>
</body>
</html>
+12 -1
View File
@@ -1 +1,12 @@
<!doctype html><html lang="de"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>dilibworld GmbH</title><meta http-equiv="refresh" content="0;url=de/index.html"><script>const l=(navigator.language||'de').toLowerCase();location.replace(l.startsWith('de')?'de/index.html':'en/index.html');</script></head><body><p><a href="de/index.html">Deutsch</a> · <a href="en/index.html">English</a></p></body></html> <!doctype html>
<html lang="de">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>dilibworld GmbH</title>
<meta http-equiv="refresh" content="0;url=de/index.html">
<script>const l = (navigator.language || 'de').toLowerCase();
location.replace(l.startsWith('de') ? 'de/index.html' : 'en/index.html');</script>
</head>
<body><p><a href="de/index.html">Deutsch</a> · <a href="en/index.html">English</a></p></body>
</html>
+36 -12
View File
@@ -1,15 +1,39 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url><loc>https://dilibworld.com/de/</loc></url> <url>
<url><loc>https://dilibworld.com/en/</loc></url> <loc>https://dilibworld.com/de/</loc>
<url><loc>https://dilibworld.com/de/loesungen.html</loc></url> </url>
<url><loc>https://dilibworld.com/en/solutions.html</loc></url> <url>
<url><loc>https://dilibworld.com/de/unternehmen.html</loc></url> <loc>https://dilibworld.com/en/</loc>
<url><loc>https://dilibworld.com/en/company.html</loc></url> </url>
<url><loc>https://dilibworld.com/de/kontakt.html</loc></url> <url>
<url><loc>https://dilibworld.com/en/contact.html</loc></url> <loc>https://dilibworld.com/de/loesungen.html</loc>
<url><loc>https://dilibworld.com/de/impressum.html</loc></url> </url>
<url><loc>https://dilibworld.com/en/legal-notice.html</loc></url> <url>
<url><loc>https://dilibworld.com/de/datenschutz.html</loc></url> <loc>https://dilibworld.com/en/solutions.html</loc>
<url><loc>https://dilibworld.com/en/privacy.html</loc></url> </url>
<url>
<loc>https://dilibworld.com/de/unternehmen.html</loc>
</url>
<url>
<loc>https://dilibworld.com/en/company.html</loc>
</url>
<url>
<loc>https://dilibworld.com/de/kontakt.html</loc>
</url>
<url>
<loc>https://dilibworld.com/en/contact.html</loc>
</url>
<url>
<loc>https://dilibworld.com/de/impressum.html</loc>
</url>
<url>
<loc>https://dilibworld.com/en/legal-notice.html</loc>
</url>
<url>
<loc>https://dilibworld.com/de/datenschutz.html</loc>
</url>
<url>
<loc>https://dilibworld.com/en/privacy.html</loc>
</url>
</urlset> </urlset>