Initial commit: Frida-Fred Webseite

This commit is contained in:
2026-01-31 13:27:33 +01:00
parent 6ec7cedbfc
commit 1fccc96549
49 changed files with 3748 additions and 0 deletions

24
.gitignore vendored Normal file
View File

@@ -0,0 +1,24 @@
# Sensible Konfigurationsdateien
config.php
.env
# Composer
/vendor/
composer.phar
composer.lock
# IDE
.vscode/
.idea/
*.sublime-project
*.sublime-workspace
# System-Dateien
.DS_Store
Thumbs.db
*.log
# Backup-Dateien
*.bak
*.backup
*~

11
.htaccess Normal file
View File

@@ -0,0 +1,11 @@
# Verhindere direkten Zugriff auf config.php
<Files "config.php">
Order Allow,Deny
Deny from all
</Files>
# Verstecke sensible Dateien im Root
<FilesMatch "^(\.env|composer\.json|composer\.lock|\.git)">
Order Allow,Deny
Deny from all
</FilesMatch>

133
PHPMAILER-INSTALLATION.md Normal file
View File

@@ -0,0 +1,133 @@
# PHPMailer Installation für Frida & Fred Kontaktformular
## Schritt 1: PHPMailer herunterladen
### Option A: Mit Composer (empfohlen, wenn verfügbar)
```bash
composer require phpmailer/phpmailer
```
### Option B: Manueller Download (für klassisches Webhosting)
1. Gehe zu: https://github.com/PHPMailer/PHPMailer/releases/latest
2. Lade die ZIP-Datei herunter
3. Entpacke die Datei
4. Kopiere den Ordner `src` aus dem PHPMailer-Verzeichnis
5. Benenne `src` in `PHPMailer` um
6. Lade den `PHPMailer` Ordner auf deinen Server in das Verzeichnis `/vendor/phpmailer/phpmailer/`
Die Struktur sollte so aussehen:
```
Webseite/
├── vendor/
│ └── phpmailer/
│ └── phpmailer/
│ └── src/
│ ├── PHPMailer.php
│ ├── SMTP.php
│ ├── Exception.php
│ └── ...
├── send-mail.php
├── index.html
└── ...
```
### Option C: Manuelle Einbindung (ohne Composer)
Falls du keinen `vendor` Ordner erstellen möchtest, kannst du PHPMailer auch direkt einbinden:
1. Lade die drei Hauptdateien herunter:
- PHPMailer.php
- SMTP.php
- Exception.php
2. Speichere sie in einem Ordner `phpmailer/` im Hauptverzeichnis
3. Ändere in `send-mail.php` die Zeile:
```php
require 'vendor/autoload.php';
```
zu:
```php
require 'phpmailer/Exception.php';
require 'phpmailer/PHPMailer.php';
require 'phpmailer/SMTP.php';
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
```
## Schritt 2: SMTP-Zugangsdaten konfigurieren
Öffne `send-mail.php` und trage die SMTP-Daten ein:
```php
define('SMTP_HOST', 'mail.webfarben.net'); // SMTP-Server von webfarben.net
define('SMTP_PORT', 587); // Port für TLS (oder 465 für SSL)
define('SMTP_USERNAME', 'frida@webfarben.net');
define('SMTP_PASSWORD', 'DEIN_PASSWORT_HIER');
define('SMTP_SECURE', 'tls'); // 'tls' oder 'ssl'
```
### Wichtige Hinweise zu SMTP-Einstellungen:
- **SMTP_HOST**: Meist `mail.domain.de` oder `smtp.domain.de`
- **SMTP_PORT**:
- Port 587 für TLS (empfohlen)
- Port 465 für SSL
- Port 25 (oft blockiert bei Hosting-Providern)
- **SMTP_SECURE**:
- `tls` für Port 587
- `ssl` für Port 465
Wenn du die SMTP-Daten nicht kennst, frage deinen Hosting-Provider (webfarben.net) nach:
- SMTP-Server-Adresse
- SMTP-Port
- Verschlüsselungsmethode (TLS/SSL)
## Schritt 3: Testen
1. Lade alle Dateien auf deinen Server hoch
2. Öffne deine Website im Browser
3. Fülle das Kontaktformular aus
4. Sende eine Test-Nachricht
5. Prüfe, ob die E-Mail bei `frida@webfarben.net` ankommt
## Troubleshooting
### Fehler: "Could not authenticate"
- Überprüfe Benutzername und Passwort
- Stelle sicher, dass SMTP-Auth aktiviert ist
### Fehler: "Connection refused"
- Prüfe SMTP_HOST und SMTP_PORT
- Eventuell ist Port 587 oder 465 bei deinem Provider blockiert
- Kontaktiere deinen Hosting-Support
### Fehler: "vendor/autoload.php not found"
- PHPMailer wurde nicht korrekt installiert
- Siehe Option C für manuelle Einbindung
### Debug-Modus aktivieren
Falls du Probleme hast, aktiviere den Debug-Modus in `send-mail.php`:
```php
$mail->SMTPDebug = 2; // Ändere von 0 auf 2
```
**Wichtig**: Deaktiviere den Debug-Modus wieder, bevor die Website live geht!
## Sicherheit
- Speichere das SMTP-Passwort niemals in einem öffentlichen Repository
- Verwende starke Passwörter für das E-Mail-Konto
- Rate-Limiting ist bereits aktiviert (1 Nachricht/Minute)
- Honeypot-Spam-Schutz ist implementiert
## Support
Bei Fragen oder Problemen:
1. Prüfe die PHP-Error-Logs auf dem Server
2. Teste mit Debug-Modus (siehe oben)
3. Kontaktiere deinen Hosting-Provider für SMTP-Unterstützung

115
SECURITY.md Normal file
View File

@@ -0,0 +1,115 @@
# Sicherheitshinweise für Frida & Fred Webseite
## ✅ Implementierte Sicherheitsmaßnahmen
### 1. Geschützte Konfigurationsdatei
- **config.php** enthält sensible Zugangsdaten (SMTP-Passwort)
- Wird durch **.htaccess** vor direktem Zugriff geschützt
- Ist in **.gitignore** und wird NICHT ins Git-Repository committed
### 2. Git-Sicherheit
- `config.php` wird automatisch ignoriert
- Nur `config.php.example` (ohne echte Passwörter) wird ins Repository committed
- Bei neuem Deployment: `config.php.example` kopieren und umbenennen
### 3. Spam-Schutz
- **Honeypot-Feld**: Verstecktes Feld fängt Bots ab
- **Rate-Limiting**: Max. 1 Nachricht pro Minute pro Benutzer
- **CSRF-Token**: Schutz vor Cross-Site-Request-Forgery
- **Server-seitige Validierung**: Alle Eingaben werden geprüft
### 4. Zugriffsbeschränkungen (.htaccess)
- Direkter Zugriff auf `config.php` ist gesperrt
- GET-Requests auf `send-mail.php` sind blockiert (nur POST erlaubt)
- Sensible Dateien (.env, composer.json, .git) sind geschützt
## 🚀 Deployment auf neuem Server
### Schritt 1: Dateien hochladen
Lade alle Dateien AUSSER `config.php` hoch (die ist in .gitignore).
### Schritt 2: config.php erstellen
```bash
cp config.php.example config.php
```
### Schritt 3: Zugangsdaten eintragen
Öffne `config.php` und trage die echten SMTP-Zugangsdaten ein.
### Schritt 4: Berechtigungen setzen (empfohlen)
```bash
chmod 600 config.php # Nur Besitzer kann lesen/schreiben
```
## 🔒 Best Practices
### Was du TUN solltest:
`config.php` mit restriktiven Berechtigungen (600 oder 640)
✅ Regelmäßig das SMTP-Passwort ändern
✅ HTTPS verwenden (SSL-Zertifikat)
✅ PHP-Error-Logs regelmäßig prüfen
`config.php.example` als Vorlage pflegen
### Was du NICHT tun solltest:
`config.php` ins Git-Repository committen
❌ Passwörter in öffentlichen Dateien speichern
`.htaccess` löschen oder deaktivieren
❌ Debug-Modus in Produktion aktivieren
❌ Passwörter per E-Mail oder unsichere Kanäle teilen
## 📁 Dateistruktur
```
Webseite/
├── config.php # ❗ NICHT ins Git! (wird ignoriert)
├── config.php.example # ✅ Vorlage (ohne echte Passwörter)
├── send-mail.php # Mailer-Script
├── .htaccess # Zugriffsbeschränkungen
├── .gitignore # Ignoriert sensible Dateien
├── vendor/ # PHPMailer-Bibliothek
└── ...
```
## 🔐 Zusätzliche Sicherheitsempfehlungen
### 1. Umgebungsvariablen (fortgeschritten)
Noch sicherer: Verwende Umgebungsvariablen statt PHP-Dateien
- Bei Shared Hosting oft nicht verfügbar
- Bei VPS/Dedicated Server: `.env` mit php-dotenv
### 2. Zwei-Faktor-Authentifizierung
Aktiviere 2FA für:
- E-Mail-Account (kontakt@webfarben.net)
- Server/FTP-Zugang
- Git-Repository
### 3. SSL/TLS-Zertifikat
- Stelle sicher, dass HTTPS aktiv ist
- Erzwinge HTTPS-Umleitung in .htaccess
### 4. Regelmäßige Updates
- PHPMailer regelmäßig aktualisieren
- PHP-Version aktuell halten
- Server-Software patchen
## 🆘 Was tun bei Kompromittierung?
Falls das Passwort kompromittiert wurde:
1. **Sofort Passwort ändern** im E-Mail-Account
2. **config.php aktualisieren** mit neuem Passwort
3. **Server-Logs prüfen** auf verdächtige Aktivitäten
4. **Alle Zugriffe prüfen** (FTP, SSH, Admin-Panels)
5. **Optional:** Alle Passwörter rotieren
## 📞 Support
Bei Fragen zur Sicherheit:
- Prüfe die PHP-Error-Logs
- Kontaktiere deinen Hosting-Provider
- Dokumentation von PHPMailer: https://github.com/PHPMailer/PHPMailer
---
**Wichtig:** Diese Datei (SECURITY.md) kann ins Git-Repository committed werden,
da sie keine sensiblen Informationen enthält.

201
agb.html Normal file
View File

@@ -0,0 +1,201 @@
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>AGB - Frida und Fred</title>
<!-- Favicons -->
<link rel="icon" type="image/x-icon" href="favicon.ico">
<link rel="icon" type="image/png" sizes="32x32" href="favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="favicon-16x16.png">
<link rel="apple-touch-icon" sizes="180x180" href="apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="192x192" href="android-chrome-192x192.png">
<link rel="icon" type="image/png" sizes="512x512" href="android-chrome-512x512.png">
<link href="lib/bootstrap.min.css" rel="stylesheet">
<link href="lib/fontawesome.min.css" rel="stylesheet">
<link href="css/style.css" rel="stylesheet">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Playfair+Display:wght@700;900&family=Lato:wght@300;400;700&display=swap" rel="stylesheet">
</head>
<body>
<!-- Top Bar -->
<div class="top-bar">
<div class="container-fluid px-5">
<span class="top-item"><i class="fas fa-map-marker-alt"></i> Untere Bachgasse 3, 93047 Regensburg</span>
<a class="top-item" href="tel:+4994160093260"><i class="fas fa-phone"></i> 0941 60093260</a>
<a class="top-item" href="mailto:info@frida-fred.com"><i class="fas fa-envelope"></i> info@frida-fred.com</a>
</div>
</div>
<!-- Navigation -->
<nav class="navbar navbar-expand-lg navbar-light sticky-top">
<div class="container-fluid px-5">
<a class="navbar-brand" href="index.html">Frida & Fred</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav ms-auto">
<li class="nav-item"><a class="nav-link" href="index.html#about">Über uns</a></li>
<li class="nav-item"><a class="nav-link" href="index.html#produkte">Produkte</a></li>
<li class="nav-item"><a class="nav-link" href="index.html#services">Services</a></li>
<li class="nav-item"><a class="nav-link" href="index.html#events">Events</a></li>
<li class="nav-item"><a class="nav-link" href="lieferanten.html">Lieferanten</a></li>
<li class="nav-item"><a class="nav-link" href="index.html#contact">Kontakt</a></li>
</ul>
</div>
</div>
</nav>
<!-- AGB Section -->
<section class="section-impressum">
<div class="container-fluid px-5 py-5">
<h1 class="section-heading text-center mb-5">Allgemeine Geschäftsbedingungen</h1>
<div class="impressum-content">
<h3>§ 1 Geltung, Begriffsdefinitionen</h3>
<p>(1) Frida Allgäuer Schmankerl, Untere Bachgasse 3, 93047 Regensburg, Deutschland (im Folgenden: „wir" oder „Frida Allgäuer Schmankerl") betreibt unter der Webseite https://frida-fred.com einen Online-Shop für Waren. Die nachfolgenden allgemeinen Geschäftsbedingungen gelten für alle Leistungen zwischen uns und unseren Kunden (im Folgenden: „Kunde" oder „Sie") in ihrer zum Zeitpunkt der Bestellung gültigen Fassung, soweit nicht etwas anderes ausdrücklich vereinbart wurde.</p>
<p>(2) „Verbraucher" im Sinne dieser Geschäftsbedingungen ist jede natürliche Person, die ein Rechtsgeschäft zu Zwecken abschließt, die überwiegend weder ihrer gewerblichen noch ihrer selbständigen beruflichen Tätigkeit zugerechnet werden können. „Unternehmer" ist eine natürliche oder juristische Person oder eine rechtsfähige Personengesellschaft, die bei Abschluss eines Rechtsgeschäfts in Ausübung ihrer gewerblichen oder selbständigen beruflichen Tätigkeit handelt, wobei eine rechtsfähige Personengesellschaft eine Personengesellschaft ist, die mit der Fähigkeit ausgestattet ist, Rechte zu erwerben und Verbindlichkeiten einzugehen.</p>
<h3>§ 2 Zustandekommen der Verträge, Speicherung des Vertragstextes</h3>
<p>(1) Die folgenden Regelungen über den Vertragsabschluss gelten für Bestellanfragen über unseren Online-Shop.</p>
<p>(2) Unsere Produktdarstellungen im Internet sind unverbindlich und kein verbindliches Angebot zum Abschluss eines Vertrages.</p>
<p>(3) Bei Eingang einer Anfrage in unserem Online-Shop gelten folgende Regelungen: Der Kunde gibt eine Anfrage ab, indem er die in unserem Online-Shop vorgesehene Anfrageprozedur erfolgreich durchläuft. Die Anfrage erfolgt in folgenden Schritten:</p>
<ol>
<li>Auswahl der gewünschten Ware,</li>
<li>Hinzufügen der Produkte durch Anklicken des entsprechenden Buttons (z.B. „Produkt anfragen", „Anfragen" o.ä.),</li>
<li>Prüfung der Angaben im Anfrageformular,</li>
<li>Eingabe/Prüfung der Kontaktdaten, Bestätigung der AGB und Widerrufsbelehrung,</li>
<li>Abschluss der Bestellanfrage durch Betätigung des Buttons „Anfrage senden", „Absenden" o.ä. Dies stellt Ihre verbindliche Anfrage dar.</li>
<li>Der Vertrag kommt zustande, indem wir mit Ihnen innerhalb von drei Werktagen bei der angegebenen E-Mail-Adresse Kontakt aufnehmen und die Bestellbestätigung per Mail besprechen.</li>
</ol>
<p>(4) Im Falle des Vertragsschlusses kommt der Vertrag mit Frida Allgäuer Schmankerl, Untere Bachgasse 3, 93047 Regensburg, Deutschland zustande.</p>
<p>(5) Vor der Bestellung können die Vertragsdaten über die Druckfunktion des Browsers ausgedruckt oder elektronisch gesichert werden. Die Abwicklung der Bestellung und Übermittlung aller im Zusammenhang mit dem Vertragsschluss erforderlichen Informationen, insbesondere der Bestelldaten, der AGB und der Widerrufsbelehrung, erfolgt per E-Mail nach dem Auslösen der Bestellung durch Sie, zum Teil automatisiert. Wir speichern den Vertragstext nach Vertragsschluss nicht.</p>
<p>(6) Eingabefehler können mittels der üblichen Tastatur-, Maus- und Browser-Funktionen (z.B. »Zurück-Button« des Browsers) berichtigt werden. Sie können auch dadurch berichtigt werden, dass Sie den Bestellvorgang vorzeitig abbrechen, das Browserfenster schließen und den Vorgang wiederholen.</p>
<p>(7) Die Abwicklung der Bestellung und Übermittlung aller im Zusammenhang mit dem Vertragsschluss erforderlichen Informationen erfolgt per E-Mail zum Teil automatisiert. Sie haben deshalb sicherzustellen, dass die von Ihnen bei uns hinterlegte E-Mail-Adresse zutreffend ist, der Empfang der E-Mails technisch sichergestellt und insbesondere nicht durch SPAM-Filter verhindert wird.</p>
<h3>§ 3 Gegenstand des Vertrages und wesentliche Merkmale der Produkte</h3>
<p>(1) Bei unserem Online-Shop ist Vertragsgegenstand:</p>
<ol>
<li>Der Verkauf von Waren. Die konkret angebotenen Waren können Sie unseren Artikelseiten entnehmen.</li>
</ol>
<p>(2) Die wesentlichen Merkmale der Ware finden sich in der Artikelbeschreibung. Sofern die vereinbarte Beschaffenheit der Ware von deren üblichen Beschaffenheit und Verwendungsvoraussetzungen abweicht, wird darauf in der Artikelbeschreibung ausdrücklich hingewiesen (negative Beschaffenheitsvereinbarung). Soweit der Kunde seine ausdrückliche Einwilligung in die negative Beschaffenheitsabweichung erteilt hat, definiert diese den Vertragsgegenstand.</p>
<h3>§ 4 Preise, Versandkosten und Lieferung</h3>
<p>(1) Die in den jeweiligen Angeboten angeführten Preise sowie die Versandkosten sind Gesamtpreise und beinhalten alle Preisbestandteile einschließlich aller anfallenden Steuern. Bei Waren mit variierenden Mengenangaben (bspw. Käse) informieren wir Sie nach Ihrer Anfrage über den entsprechenden Preis.</p>
<p>(2) Der jeweilige Kaufpreis ist vor der Lieferung des Produktes zu leisten (Vorkasse), es sei denn, wir bieten ausdrücklich den Kauf auf Rechnung an. Die Ihnen zur Verfügung stehenden Zahlungsarten sind unter einer entsprechend bezeichneten Schaltfläche im Online-Shop oder im jeweiligen Angebot ausgewiesen. Soweit bei den einzelnen Zahlungsarten nicht anders angegeben, sind die Zahlungsansprüche sofort zur Zahlung fällig. Bei Abholung vor Ort ist auch eine Bezahlung vor Ort gewünscht.</p>
<p>(3) Zusätzlich zu den angegebenen Preisen können für die Lieferung von Produkten Versandkosten anfallen, sofern der jeweilige Artikel nicht als versandkostenfrei ausgewiesen ist. Die Versandkosten werden Ihnen auf den Angeboten, ggf. im Warenkorbsystem und auf der Bestellübersicht nochmals deutlich mitgeteilt. Zudem informieren wir Sie nach Ihrer Anfrage über die Versandkosten.</p>
<p>(4) Alle angebotenen Produkte sind, sofern nicht in der Produktbeschreibung deutlich anders angegeben, sofort versandfertig (Lieferzeit: 3 Werktage).</p>
<h3>§ 5 Zurückbehaltungsrecht, Eigentumsvorbehalt</h3>
<p>(1) Ein Zurückbehaltungsrecht können Sie nur ausüben, soweit es sich um Forderungen aus demselben Vertragsverhältnis handelt.</p>
<p>(2) Die Ware bleibt bis zur vollständigen Zahlung des Kaufpreises unser Eigentum.</p>
<h3>§ 6 Widerrufsrecht</h3>
<p>Als Verbraucher haben Sie ein Widerrufsrecht. Dieses richtet sich nach unserer Widerrufsbelehrung.</p>
<h3>§ 7 Haftung</h3>
<p>(1) Vorbehaltlich der nachfolgenden Ausnahmen ist unsere Haftung für vertragliche Pflichtverletzungen sowie aus unerlaubter Handlung auf Vorsatz oder grobe Fahrlässigkeit beschränkt.</p>
<p>(2) Wir haften bei leichter Fahrlässigkeit im Falle der Verletzung des Lebens, des Körpers, der Gesundheit oder bei Verletzung einer vertragswesentlichen Pflicht unbeschränkt. Wenn wir durch leichte Fahrlässigkeit mit der Leistung in Verzug geraten sind, wenn die Leistung unmöglich geworden ist oder wenn wir eine vertragswesentliche Pflicht verletzt haben, ist die Haftung für darauf zurückzuführende Sach- und Vermögensschäden auf den vertragstypisch vorhersehbaren Schaden begrenzt. Eine vertragswesentliche Pflicht ist eine solche, deren Erfüllung die ordnungsgemäße Durchführung des Vertrages überhaupt erst ermöglicht, deren Verletzung die Erreichung des Vertragszwecks gefährdet und auf deren Einhaltung Sie regelmäßig vertrauen dürfen. Dazu gehört insbesondere unsere Pflicht zum Tätigwerden und der Erfüllung der vertraglich geschuldeten Leistung, die in § 3 beschrieben wird.</p>
<h3>§ 8 Vertragssprache</h3>
<p>Als Vertragssprache steht ausschließlich Deutsch zur Verfügung.</p>
<h3>§ 9 Gewährleistung</h3>
<p>(1) Die Gewährleistung richtet sich nach den gesetzlichen Bestimmungen.</p>
<p>(2) Als Verbraucher werden Sie gebeten, die Sache/die digitalen Güter oder die erbrachte Dienstleistung bei Vertragserfüllung umgehend auf Vollständigkeit, offensichtliche Mängel und Transportschäden zu überprüfen und uns sowie dem Spediteur Beanstandungen schnellstmöglich mitzuteilen. Kommen Sie dem nicht nach, hat dies natürlich keine Auswirkung auf Ihre gesetzlichen Gewährleistungsansprüche.</p>
<h3>§ 10 Schlussbestimmungen/Streitbeilegung</h3>
<p>(1) Es gilt deutsches Recht. Bei Verbrauchern gilt diese Rechtswahl nur, soweit hierdurch der durch zwingende Bestimmungen des Rechts des Staates des gewöhnlichen Aufenthaltes des Verbrauchers gewährte Schutz nicht entzogen wird (Günstigkeitsprinzip).</p>
<p>(2) Die Bestimmungen des UN-Kaufrechts finden ausdrücklich keine Anwendung.</p>
<p>(3) Sofern es sich beim Kunden um einen Kaufmann, eine juristische Person des öffentlichen Rechts oder um ein öffentlich-rechtliches Sondervermögen handelt, ist Gerichtsstand für alle Streitigkeiten aus Vertragsverhältnissen zwischen dem Kunden und dem Anbieter der Sitz des Anbieters.</p>
</div>
</div>
</section>
<!-- Footer -->
<footer class="site-footer">
<div class="container-fluid px-5">
<div class="footer-content">
<div class="footer-column">
<h4>Frida & Fred</h4>
<p>Ihre Adresse für Allgäuer Bio-Spezialitäten in Regensburg.</p>
<p style="margin-bottom: 0.5rem;">
<i class="fas fa-map-marker-alt" style="color: var(--secondary-color); margin-right: 8px;"></i>
Untere Bachgasse 3<br>
<i class="fas fa-city" style="color: var(--secondary-color); margin-right: 8px;"></i>
93047 Regensburg
</p>
<p style="margin-bottom: 0.5rem;">
<i class="fas fa-phone" style="color: var(--secondary-color); margin-right: 8px;"></i>
<a href="tel:+4994160093260">0941 60093260</a><br>
<i class="fas fa-mobile" style="color: var(--secondary-color); margin-right: 8px;"></i>
<a href="tel:+49015119426530">0151 19426530</a>
</p>
<p style="margin-bottom: 1.5rem;">
<i class="fas fa-envelope" style="color: var(--secondary-color); margin-right: 8px;"></i>
<a href="mailto:info@frida-fred.com">info@frida-fred.com</a>
</p>
<div class="social-links">
<!-- <a href="#" title="Facebook"><i class="fab fa-facebook-f"></i></a> -->
<a href="https://www.instagram.com/fridaundfred_regensburg?igsh=MXd4Nm91dHR3ejZ6YQ==" title="Instagram"><i class="fab fa-instagram"></i></a>
<!-- <a href="#" title="Twitter"><i class="fab fa-twitter"></i></a> -->
</div>
</div>
<div class="footer-column">
<h4>Öffnungszeiten</h4>
<p style="margin-bottom: 0.5rem;">
<strong>Montag:</strong><br>
Geschlossen
</p>
<p style="margin-bottom: 0;">
<strong>Dienstag - Samstag:</strong><br>
09:00 19:00 Uhr
</p>
</div>
<div class="footer-column">
<h4>Navigation</h4>
<ul>
<li><a href="index.html#about">Über uns</a></li>
<li><a href="index.html#produkte">Produkte</a></li>
<li><a href="index.html#services">Services</a></li>
<li><a href="lieferanten.html">Lieferanten</a></li>
</ul>
</div>
<div class="footer-column">
<h4>Rechtliches</h4>
<ul>
<li><a href="datenschutz.html">Datenschutz</a></li>
<li><a href="impressum.html">Impressum</a></li>
<li><a href="agb.html">AGB</a></li>
</ul>
</div>
</div>
<div class="footer-bottom">
<p>&copy; 2026 Frida & Fred. Alle Rechte vorbehalten.</p>
</div>
</div>
</footer>
<script src="lib/bootstrap.bundle.min.js"></script>
<!-- Back to Top Button -->
<a href="#" class="back-to-top" id="backToTop" aria-label="Nach oben scrollen">
<i class="fas fa-chevron-up"></i>
</a>
<script>
// Show/hide back to top button
window.addEventListener('scroll', function() {
const backToTop = document.getElementById('backToTop');
if (window.pageYOffset > 300) {
backToTop.classList.add('visible');
} else {
backToTop.classList.remove('visible');
}
});
</script>
</body>
</html>

BIN
android-chrome-192x192.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

BIN
android-chrome-512x512.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 194 KiB

19
api/.htaccess Normal file
View File

@@ -0,0 +1,19 @@
# Verhindere direkten Zugriff auf config.php
<Files "config.php">
Order Allow,Deny
Deny from all
</Files>
# Verhindere direkten Zugriff auf send-mail.php via GET
<Files "send-mail.php">
<Limit GET>
Order Allow,Deny
Deny from all
</Limit>
</Files>
# Verstecke sensible Dateien
<FilesMatch "^(config\.php|config\.php\.example|\..*|composer\..*)">
Order Allow,Deny
Deny from all
</FilesMatch>

27
api/config.php.example Normal file
View File

@@ -0,0 +1,27 @@
<?php
/**
* Konfigurationsdatei VORLAGE für Frida & Fred Kontaktformular
*
* ANLEITUNG:
* 1. Kopiere diese Datei und benenne sie in "config.php" um
* 2. Trage deine echten SMTP-Zugangsdaten ein
* 3. config.php wird automatisch von Git ignoriert (.gitignore)
*/
// SMTP-Konfiguration
define('SMTP_HOST', 'mail.webfarben.net'); // SMTP-Server
define('SMTP_PORT', 587); // Port (587 für TLS, 465 für SSL)
define('SMTP_USERNAME', 'frida@webfarben.net'); // SMTP-Benutzername
define('SMTP_PASSWORD', 'DEIN_PASSWORT_HIER'); // ← PASSWORT HIER EINTRAGEN
define('SMTP_SECURE', 'tls'); // Verschlüsselung: 'tls' oder 'ssl'
define('SMTP_FROM_EMAIL', 'frida@webfarben.net'); // Absender-E-Mail
define('SMTP_FROM_NAME', 'Frida & Fred Kontaktformular'); // Absender-Name
// Empfänger
define('RECIPIENT_EMAIL', 'frida@webfarben.net'); // Empfänger der Kontaktanfragen
define('RECIPIENT_NAME', 'Frida & Fred'); // Name des Empfängers
// Weitere Einstellungen
define('FORM_NAME', 'Frida & Fred Kontaktformular');
define('RATE_LIMIT_SECONDS', 60); // Max. 1 Nachricht pro Minute
define('MAX_MESSAGE_LENGTH', 5000);

285
api/send-mail.php Normal file
View File

@@ -0,0 +1,285 @@
<?php
/**
* Kontaktformular Mailer für Frida & Fred
* SMTP E-Mail-Versand mit Spam-Schutz und Validierung
*/
// Output Buffering aktivieren, um saubere JSON-Antwort zu gewährleisten
ob_start();
// Fehleranzeige für Debugging (in Produktion ausschalten)
error_reporting(E_ALL);
ini_set('display_errors', 0); // Wichtig: Fehler nicht direkt ausgeben
ini_set('log_errors', 1);
// PHPMailer laden
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
require __DIR__ . '/../vendor/autoload.php';
// Output Buffer leeren vor Session-Start
ob_clean();
// Session starten für Rate-Limiting
session_start();
// Konfiguration laden
if (!file_exists(__DIR__ . '/config.php')) {
ob_clean();
http_response_code(500);
echo json_encode([
'success' => false,
'message' => 'Konfigurationsfehler. Bitte kontaktieren Sie den Administrator.'
]);
exit;
}
require_once __DIR__ . '/config.php';
// Header für JSON-Response setzen
header('Content-Type: application/json; charset=utf-8');
// Nur POST-Requests erlauben
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
ob_clean();
http_response_code(405);
echo json_encode([
'success' => false,
'message' => 'Nur POST-Requests erlaubt.'
]);
exit;
}
/**
* Rate-Limiting prüfen
*/
function checkRateLimit() {
if (isset($_SESSION['last_submission'])) {
$timeSinceLastSubmit = time() - $_SESSION['last_submission'];
if ($timeSinceLastSubmit < RATE_LIMIT_SECONDS) {
return [
'allowed' => false,
'wait_time' => RATE_LIMIT_SECONDS - $timeSinceLastSubmit
];
}
}
return ['allowed' => true];
}
/**
* Eingabe bereinigen und validieren
*/
function sanitizeInput($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data, ENT_QUOTES, 'UTF-8');
return $data;
}
/**
* E-Mail-Adresse validieren
*/
function validateEmail($email) {
return filter_var($email, FILTER_VALIDATE_EMAIL) !== false;
}
/**
* CSRF-Token validieren (einfache Implementierung)
*/
function validateCSRF($token) {
// Erwarteter Token-Wert (sollte mit dem im Formular übereinstimmen)
return $token === 'frida-fred-csrf-2026';
}
// Rate-Limiting prüfen
$rateLimitCheck = checkRateLimit();
if (!$rateLimitCheck['allowed']) {
ob_clean();
http_response_code(429);
echo json_encode([
'success' => false,
'message' => 'Bitte warten Sie ' . $rateLimitCheck['wait_time'] . ' Sekunden, bevor Sie erneut eine Nachricht senden.'
]);
exit;
}
// Honeypot-Feld prüfen (sollte leer sein)
if (!empty($_POST['website'])) {
ob_clean();
http_response_code(400);
echo json_encode([
'success' => false,
'message' => 'Spam erkannt.'
]);
exit;
}
// CSRF-Token prüfen
if (!isset($_POST['csrf_token']) || !validateCSRF($_POST['csrf_token'])) {
ob_clean();
http_response_code(403);
echo json_encode([
'success' => false,
'message' => 'Ungültiger Sicherheitstoken.'
]);
exit;
}
// Formularfelder auslesen und validieren
$name = isset($_POST['name']) ? sanitizeInput($_POST['name']) : '';
$email = isset($_POST['email']) ? sanitizeInput($_POST['email']) : '';
$subject = isset($_POST['subject']) ? sanitizeInput($_POST['subject']) : '';
$message = isset($_POST['message']) ? sanitizeInput($_POST['message']) : '';
// Pflichtfelder prüfen
if (empty($name) || empty($email) || empty($subject) || empty($message)) {
ob_clean();
http_response_code(400);
echo json_encode([
'success' => false,
'message' => 'Bitte füllen Sie alle erforderlichen Felder aus.'
]);
exit;
}
// E-Mail-Adresse validieren
if (!validateEmail($email)) {
ob_clean();
http_response_code(400);
echo json_encode([
'success' => false,
'message' => 'Bitte geben Sie eine gültige E-Mail-Adresse ein.'
]);
exit;
}
// Nachrichtenlänge prüfen
if (strlen($message) > MAX_MESSAGE_LENGTH) {
ob_clean();
http_response_code(400);
echo json_encode([
'success' => false,
'message' => 'Ihre Nachricht ist zu lang. Maximal ' . MAX_MESSAGE_LENGTH . ' Zeichen erlaubt.'
]);
exit;
}
// E-Mail-Inhalt erstellen
$emailSubject = 'Kontaktanfrage: ' . $subject;
$emailBodyText = "Neue Kontaktanfrage über " . FORM_NAME . "\n\n";
$emailBodyText .= "Name: " . $name . "\n";
$emailBodyText .= "E-Mail: " . $email . "\n";
$emailBodyText .= "Betreff: " . $subject . "\n\n";
$emailBodyText .= "Nachricht:\n" . $message . "\n\n";
$emailBodyText .= "---\n";
$emailBodyText .= "Gesendet am: " . date('d.m.Y H:i:s') . "\n";
$emailBodyText .= "IP-Adresse: " . $_SERVER['REMOTE_ADDR'] . "\n";
// HTML-Version der E-Mail
$emailBodyHTML = '
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<style>
body { font-family: Arial, sans-serif; line-height: 1.6; color: #333; }
.container { max-width: 600px; margin: 0 auto; padding: 20px; }
.header { background-color: #C4B5A0; color: white; padding: 20px; text-align: center; }
.content { background-color: #f8f7f4; padding: 20px; margin-top: 20px; }
.field { margin-bottom: 15px; }
.label { font-weight: bold; color: #2c2c2c; }
.footer { margin-top: 20px; padding-top: 20px; border-top: 1px solid #ddd; font-size: 12px; color: #666; }
</style>
</head>
<body>
<div class="container">
<div class="header">
<h2>Neue Kontaktanfrage</h2>
</div>
<div class="content">
<div class="field">
<span class="label">Von:</span> ' . htmlspecialchars($name) . '
</div>
<div class="field">
<span class="label">E-Mail:</span> <a href="mailto:' . htmlspecialchars($email) . '">' . htmlspecialchars($email) . '</a>
</div>
<div class="field">
<span class="label">Betreff:</span> ' . htmlspecialchars($subject) . '
</div>
<div class="field">
<span class="label">Nachricht:</span><br>
' . nl2br(htmlspecialchars($message)) . '
</div>
</div>
<div class="footer">
Gesendet am: ' . date('d.m.Y H:i:s') . '<br>
IP-Adresse: ' . $_SERVER['REMOTE_ADDR'] . '
</div>
</div>
</body>
</html>
';
// PHPMailer-Instanz erstellen
$mail = new PHPMailer(true);
try {
// SMTP-Konfiguration
$mail->isSMTP();
$mail->Host = SMTP_HOST;
$mail->SMTPAuth = true;
$mail->Username = SMTP_USERNAME;
$mail->Password = SMTP_PASSWORD;
$mail->SMTPSecure = SMTP_SECURE;
$mail->Port = SMTP_PORT;
$mail->CharSet = 'UTF-8';
// Debug-Ausgabe deaktivieren (für Produktion)
$mail->SMTPDebug = 0;
$mail->Debugoutput = function($str, $level) {
// Debug-Ausgaben unterdrücken
};
// Absender
$mail->setFrom(SMTP_FROM_EMAIL, SMTP_FROM_NAME);
$mail->addReplyTo($email, $name);
// Empfänger
$mail->addAddress(RECIPIENT_EMAIL, RECIPIENT_NAME);
// E-Mail-Inhalt
$mail->isHTML(true);
$mail->Subject = $emailSubject;
$mail->Body = $emailBodyHTML;
$mail->AltBody = $emailBodyText;
// E-Mail senden
$mail->send();
// Zeitstempel für Rate-Limiting speichern
$_SESSION['last_submission'] = time();
// Output Buffer leeren
ob_clean();
http_response_code(200);
echo json_encode([
'success' => true,
'message' => 'Vielen Dank! Ihre Nachricht wurde erfolgreich versendet. Wir werden uns bald bei Ihnen melden.'
]);
} catch (Exception $e) {
// Fehler beim E-Mail-Versand
// Output Buffer leeren
ob_clean();
http_response_code(500);
echo json_encode([
'success' => false,
'message' => 'Es gab ein Problem beim Senden Ihrer Nachricht. Bitte versuchen Sie es später erneut oder kontaktieren Sie uns direkt per E-Mail.'
// 'error' => $mail->ErrorInfo // Nur für Debugging aktivieren!
]);
}
exit;

BIN
apple-touch-icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

1465
css/style.css Normal file

File diff suppressed because it is too large Load Diff

280
datenschutz.html Normal file
View File

@@ -0,0 +1,280 @@
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Datenschutz - Frida und Fred</title>
<!-- Favicons -->
<link rel="icon" type="image/x-icon" href="favicon.ico">
<link rel="icon" type="image/png" sizes="32x32" href="favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="favicon-16x16.png">
<link rel="apple-touch-icon" sizes="180x180" href="apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="192x192" href="android-chrome-192x192.png">
<link rel="icon" type="image/png" sizes="512x512" href="android-chrome-512x512.png">
<link href="lib/bootstrap.min.css" rel="stylesheet">
<link href="lib/fontawesome.min.css" rel="stylesheet">
<link href="css/style.css" rel="stylesheet">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Playfair+Display:wght@700;900&family=Lato:wght@300;400;700&display=swap" rel="stylesheet">
</head>
<body>
<!-- Top Bar -->
<div class="top-bar">
<div class="container-fluid px-5">
<span class="top-item"><i class="fas fa-map-marker-alt"></i> Untere Bachgasse 3, 93047 Regensburg</span>
<a class="top-item" href="tel:+4994160093260"><i class="fas fa-phone"></i> 0941 60093260</a>
<a class="top-item" href="mailto:info@frida-fred.com"><i class="fas fa-envelope"></i> info@frida-fred.com</a>
</div>
</div>
<!-- Navigation -->
<nav class="navbar navbar-expand-lg navbar-light sticky-top">
<div class="container-fluid px-5">
<a class="navbar-brand" href="index.html">Frida & Fred</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav ms-auto">
<li class="nav-item"><a class="nav-link" href="index.html#about">Über uns</a></li>
<li class="nav-item"><a class="nav-link" href="index.html#produkte">Produkte</a></li>
<li class="nav-item"><a class="nav-link" href="index.html#services">Services</a></li>
<li class="nav-item"><a class="nav-link" href="index.html#events">Events</a></li>
<li class="nav-item"><a class="nav-link" href="lieferanten.html">Lieferanten</a></li>
<li class="nav-item"><a class="nav-link" href="index.html#contact">Kontakt</a></li>
</ul>
</div>
</div>
</nav>
<!-- Datenschutz Section -->
<section class="section-impressum">
<div class="container-fluid px-5 py-5">
<h1 class="section-heading text-center mb-5">Datenschutzerklärung</h1>
<div class="impressum-content">
<h2>1. Datenschutz auf einen Blick</h2>
<h3>Allgemeine Hinweise</h3>
<p>Die folgenden Hinweise geben einen einfachen Überblick darüber, was mit Ihren personenbezogenen Daten passiert, wenn Sie diese Website besuchen. Personenbezogene Daten sind alle Daten, mit denen Sie persönlich identifiziert werden können. Ausführliche Informationen zum Thema Datenschutz entnehmen Sie unserer unter diesem Text aufgeführten Datenschutzerklärung.</p>
<h3>Datenerfassung auf dieser Website</h3>
<h4>Wer ist verantwortlich für die Datenerfassung auf dieser Website?</h4>
<p>Die Datenverarbeitung auf dieser Website erfolgt durch den Websitebetreiber. Dessen Kontaktdaten können Sie dem Abschnitt „Hinweis zur Verantwortlichen Stelle" in dieser Datenschutzerklärung entnehmen.</p>
<h4>Wie erfassen wir Ihre Daten?</h4>
<p>Ihre Daten werden zum einen dadurch erhoben, dass Sie uns diese mitteilen. Hierbei kann es sich z. B. um Daten handeln, die Sie in ein Kontaktformular eingeben.</p>
<p>Andere Daten werden automatisch oder nach Ihrer Einwilligung beim Besuch der Website durch unsere IT-Systeme erfasst. Das sind vor allem technische Daten (z. B. Internetbrowser, Betriebssystem oder Uhrzeit des Seitenaufrufs). Die Erfassung dieser Daten erfolgt automatisch, sobald Sie diese Website betreten.</p>
<h4>Wofür nutzen wir Ihre Daten?</h4>
<p>Ein Teil der Daten wird erhoben, um eine fehlerfreie Bereitstellung der Website zu gewährleisten. Andere Daten können zur Analyse Ihres Nutzerverhaltens verwendet werden.</p>
<h4>Welche Rechte haben Sie bezüglich Ihrer Daten?</h4>
<p>Sie haben jederzeit das Recht, unentgeltlich Auskunft über Herkunft, Empfänger und Zweck Ihrer gespeicherten personenbezogenen Daten zu erhalten. Sie haben außerdem ein Recht, die Berichtigung oder Löschung dieser Daten zu verlangen. Wenn Sie eine Einwilligung zur Datenverarbeitung erteilt haben, können Sie diese Einwilligung jederzeit für die Zukunft widerrufen. Außerdem haben Sie das Recht, unter bestimmten Umständen die Einschränkung der Verarbeitung Ihrer personenbezogenen Daten zu verlangen. Des Weiteren steht Ihnen ein Beschwerderecht bei der zuständigen Aufsichtsbehörde zu.</p>
<p>Hierzu sowie zu weiteren Fragen zum Thema Datenschutz können Sie sich jederzeit an uns wenden.</p>
<h2>2. Hosting und Content Delivery Networks (CDN)</h2>
<h3>Externes Hosting</h3>
<p>Diese Website wird bei einem externen Dienstleister gehostet (Hoster). Die personenbezogenen Daten, die auf dieser Website erfasst werden, werden auf den Servern des Hosters gespeichert. Hierbei kann es sich v. a. um IP-Adressen, Kontaktanfragen, Meta- und Kommunikationsdaten, Vertragsdaten, Kontaktdaten, Namen, Websitezugriffe und sonstige Daten, die über eine Website generiert werden, handeln.</p>
<p>Der Einsatz des Hosters erfolgt zum Zwecke der Vertragserfüllung gegenüber unseren potenziellen und bestehenden Kunden (Art. 6 Abs. 1 lit. b DSGVO) und im Interesse einer sicheren, schnellen und effizienten Bereitstellung unseres Online-Angebots durch einen professionellen Anbieter (Art. 6 Abs. 1 lit. f DSGVO).</p>
<p>Unser Hoster wird Ihre Daten nur insoweit verarbeiten, wie dies zur Erfüllung seiner Leistungspflichten erforderlich ist und unsere Weisungen in Bezug auf diese Daten befolgen.</p>
<p><strong>Wir setzen folgenden Hoster ein:</strong></p>
<p>
ALL-INKL.COM Neue Medien Münnich<br>
Inhaber: René Münnich<br>
Hauptstraße 68<br>
D-02742 Friedersdorf
</p>
<h4>Abschluss eines Vertrages über Auftragsverarbeitung</h4>
<p>Um die datenschutzkonforme Verarbeitung zu gewährleisten, haben wir einen Vertrag über Auftragsverarbeitung mit unserem Hoster geschlossen.</p>
<h2>3. Allgemeine Hinweise und Pflichtinformationen</h2>
<h3>Datenschutz</h3>
<p>Die Betreiber dieser Seiten nehmen den Schutz Ihrer persönlichen Daten sehr ernst. Wir behandeln Ihre personenbezogenen Daten vertraulich und entsprechend der gesetzlichen Datenschutzvorschriften sowie dieser Datenschutzerklärung.</p>
<p>Wenn Sie diese Website benutzen, werden verschiedene personenbezogene Daten erhoben. Personenbezogene Daten sind Daten, mit denen Sie persönlich identifiziert werden können. Die vorliegende Datenschutzerklärung erläutert, welche Daten wir erheben und wofür wir sie nutzen. Sie erläutert auch, wie und zu welchem Zweck das geschieht.</p>
<p>Wir weisen darauf hin, dass die Datenübertragung im Internet (z. B. bei der Kommunikation per E-Mail) Sicherheitslücken aufweisen kann. Ein lückenloser Schutz der Daten vor dem Zugriff durch Dritte ist nicht möglich.</p>
<h3>Hinweis zur verantwortlichen Stelle</h3>
<p>Die verantwortliche Stelle für die Datenverarbeitung auf dieser Website ist:</p>
<p>
Frida Allgäuer Schmankerl<br>
Kerstin Jacky<br>
Untere Bachgasse 3<br>
93047 Regensburg
</p>
<p>
Telefon: <a href="tel:+4994160093260">0941 60093260</a><br>
E-Mail: <a href="mailto:info@frida-fred.com">info@frida-fred.com</a>
</p>
<p>Verantwortliche Stelle ist die natürliche oder juristische Person, die allein oder gemeinsam mit anderen über die Zwecke und Mittel der Verarbeitung von personenbezogenen Daten (z. B. Namen, E-Mail-Adressen o. Ä.) entscheidet.</p>
<h3>Speicherdauer</h3>
<p>Soweit innerhalb dieser Datenschutzerklärung keine speziellere Speicherdauer genannt wurde, verbleiben Ihre personenbezogenen Daten bei uns, bis der Zweck für die Datenverarbeitung entfällt. Wenn Sie ein berechtigtes Löschersuchen geltend machen oder eine Einwilligung zur Datenverarbeitung widerrufen, werden Ihre Daten gelöscht, sofern wir keinen anderen rechtlich zulässigen Gründe für die Speicherung Ihrer personenbezogenen Daten haben (z.B. steuer- oder handelsrechtliche Aufbewahrungsfristen); im letztgenannten Fall erfolgt die Löschung nach Fortfall dieser Gründe.</p>
<h3>Widerruf Ihrer Einwilligung zur Datenverarbeitung</h3>
<p>Viele Datenverarbeitungsvorgänge sind nur mit Ihrer ausdrücklichen Einwilligung möglich. Sie können eine bereits erteilte Einwilligung jederzeit widerrufen. Die Rechtmäßigkeit der bis zum Widerruf erfolgten Datenverarbeitung bleibt vom Widerruf unberührt.</p>
<h3>Widerspruchsrecht gegen die Datenerhebung in besonderen Fällen sowie gegen Direktwerbung (Art. 21 DSGVO)</h3>
<p><strong>WENN DIE DATENVERARBEITUNG AUF GRUNDLAGE VON ART. 6 ABS. 1 LIT. E ODER F DSGVO ERFOLGT, HABEN SIE JEDERZEIT DAS RECHT, AUS GRÜNDEN, DIE SICH AUS IHRER BESONDEREN SITUATION ERGEBEN, GEGEN DIE VERARBEITUNG IHRER PERSONENBEZOGENEN DATEN WIDERSPRUCH EINZULEGEN; DIES GILT AUCH FÜR EIN AUF DIESE BESTIMMUNGEN GESTÜTZTES PROFILING. DIE JEWEILIGE RECHTSGRUNDLAGE, AUF DENEN EINE VERARBEITUNG BERUHT, ENTNEHMEN SIE DIESER DATENSCHUTZERKLÄRUNG. WENN SIE WIDERSPRUCH EINLEGEN, WERDEN WIR IHRE BETROFFENEN PERSONENBEZOGENEN DATEN NICHT MEHR VERARBEITEN, ES SEI DENN, WIR KÖNNEN ZWINGENDE SCHUTZWÜRDIGE GRÜNDE FÜR DIE VERARBEITUNG NACHWEISEN, DIE IHRE INTERESSEN, RECHTE UND FREIHEITEN ÜBERWIEGEN ODER DIE VERARBEITUNG DIENT DER GELTENDMACHUNG, AUSÜBUNG ODER VERTEIDIGUNG VON RECHTSANSPRÜCHEN (WIDERSPRUCH NACH ART. 21 ABS. 1 DSGVO).</strong></p>
<p><strong>WERDEN IHRE PERSONENBEZOGENEN DATEN VERARBEITET, UM DIREKTWERBUNG ZU BETREIBEN, SO HABEN SIE DAS RECHT, JEDERZEIT WIDERSPRUCH GEGEN DIE VERARBEITUNG SIE BETREFFENDER PERSONENBEZOGENER DATEN ZUM ZWECKE DERARTIGER WERBUNG EINZULEGEN; DIES GILT AUCH FÜR DAS PROFILING, SOWEIT ES MIT SOLCHER DIREKTWERBUNG IN VERBINDUNG STEHT. WENN SIE WIDERSPRECHEN, WERDEN IHRE PERSONENBEZOGENEN DATEN ANSCHLIESSEND NICHT MEHR ZUM ZWECKE DER DIREKTWERBUNG VERWENDET (WIDERSPRUCH NACH ART. 21 ABS. 2 DSGVO).</strong></p>
<h3>Beschwerderecht bei der zuständigen Aufsichtsbehörde</h3>
<p>Im Falle von Verstößen gegen die DSGVO steht den Betroffenen ein Beschwerderecht bei einer Aufsichtsbehörde, insbesondere in dem Mitgliedstaat ihres gewöhnlichen Aufenthalts, ihres Arbeitsplatzes oder des Orts des mutmaßlichen Verstoßes zu. Das Beschwerderecht besteht unbeschadet anderweitiger verwaltungsrechtlicher oder gerichtlicher Rechtsbehelfe.</p>
<h3>Recht auf Datenübertragbarkeit</h3>
<p>Sie haben das Recht, Daten, die wir auf Grundlage Ihrer Einwilligung oder in Erfüllung eines Vertrags automatisiert verarbeiten, an sich oder an einen Dritten in einem gängigen, maschinenlesbaren Format aushändigen zu lassen. Sofern Sie die direkte Übertragung der Daten an einen anderen Verantwortlichen verlangen, erfolgt dies nur, soweit es technisch machbar ist.</p>
<h3>SSL- bzw. TLS-Verschlüsselung</h3>
<p>Diese Seite nutzt aus Sicherheitsgründen und zum Schutz der Übertragung vertraulicher Inhalte, wie zum Beispiel Bestellungen oder Anfragen, die Sie an uns als Seitenbetreiber senden, eine SSL- bzw. TLS-Verschlüsselung. Eine verschlüsselte Verbindung erkennen Sie daran, dass die Adresszeile des Browsers von „http://" auf „https://" wechselt und an dem Schloss-Symbol in Ihrer Browserzeile.</p>
<p>Wenn die SSL- bzw. TLS-Verschlüsselung aktiviert ist, können die Daten, die Sie an uns übermitteln, nicht von Dritten mitgelesen werden.</p>
<h3>Auskunft, Löschung und Berichtigung</h3>
<p>Sie haben im Rahmen der geltenden gesetzlichen Bestimmungen jederzeit das Recht auf unentgeltliche Auskunft über Ihre gespeicherten personenbezogenen Daten, deren Herkunft und Empfänger und den Zweck der Datenverarbeitung und ggf. ein Recht auf Berichtigung oder Löschung dieser Daten. Hierzu sowie zu weiteren Fragen zum Thema personenbezogene Daten können Sie sich jederzeit an uns wenden.</p>
<h3>Recht auf Einschränkung der Verarbeitung</h3>
<p>Sie haben das Recht, die Einschränkung der Verarbeitung Ihrer personenbezogenen Daten zu verlangen. Hierzu können Sie sich jederzeit an uns wenden. Das Recht auf Einschränkung der Verarbeitung besteht in folgenden Fällen:</p>
<ul>
<li>Wenn Sie die Richtigkeit Ihrer bei uns gespeicherten personenbezogenen Daten bestreiten, benötigen wir in der Regel Zeit, um dies zu überprüfen. Für die Dauer der Prüfung haben Sie das Recht, die Einschränkung der Verarbeitung Ihrer personenbezogenen Daten zu verlangen.</li>
<li>Wenn die Verarbeitung Ihrer personenbezogenen Daten unrechtmäßig geschah/geschieht, können Sie statt der Löschung die Einschränkung der Datenverarbeitung verlangen.</li>
<li>Wenn wir Ihre personenbezogenen Daten nicht mehr benötigen, Sie sie jedoch zur Ausübung, Verteidigung oder Geltendmachung von Rechtsansprüchen benötigen, haben Sie das Recht, statt der Löschung die Einschränkung der Verarbeitung Ihrer personenbezogenen Daten zu verlangen.</li>
<li>Wenn Sie einen Widerspruch nach Art. 21 Abs. 1 DSGVO eingelegt haben, muss eine Abwägung zwischen Ihren und unseren Interessen vorgenommen werden. Solange noch nicht feststeht, wessen Interessen überwiegen, haben Sie das Recht, die Einschränkung der Verarbeitung Ihrer personenbezogenen Daten zu verlangen.</li>
</ul>
<p>Wenn Sie die Verarbeitung Ihrer personenbezogenen Daten eingeschränkt haben, dürfen diese Daten von ihrer Speicherung abgesehen nur mit Ihrer Einwilligung oder zur Geltendmachung, Ausübung oder Verteidigung von Rechtsansprüchen oder zum Schutz der Rechte einer anderen natürlichen oder juristischen Person oder aus Gründen eines wichtigen öffentlichen Interesses der Europäischen Union oder eines Mitgliedstaats verarbeitet werden.</p>
<h2>4. Datenerfassung auf dieser Website</h2>
<h3>Cookies</h3>
<p>Unsere Internetseiten verwenden so genannte „Cookies". Cookies sind kleine Textdateien und richten auf Ihrem Endgerät keinen Schaden an. Sie werden entweder vorübergehend für die Dauer einer Sitzung (Session-Cookies) oder dauerhaft (permanente Cookies) auf Ihrem Endgerät gespeichert. Session-Cookies werden nach Ende Ihres Besuchs automatisch gelöscht. Permanente Cookies bleiben auf Ihrem Endgerät gespeichert, bis Sie diese selbst löschen oder eine automatische Löschung durch Ihren Webbrowser erfolgt.</p>
<p>Cookies haben verschiedene Funktionen. Zahlreiche Cookies sind technisch notwendig, da bestimmte Websitefunktionen ohne diese nicht funktionieren würden. Andere Cookies dienen dazu, das Nutzerverhalten auszuwerten oder Werbung anzuzeigen.</p>
<p>Sie können Ihren Browser so einstellen, dass Sie über das Setzen von Cookies informiert werden und Cookies nur im Einzelfall erlauben, die Annahme von Cookies für bestimmte Fälle oder generell ausschließen sowie das automatische Löschen der Cookies beim Schließen des Browsers aktivieren. Bei der Deaktivierung von Cookies kann die Funktionalität dieser Website eingeschränkt sein.</p>
<h3>Server-Log-Dateien</h3>
<p>Der Provider der Seiten erhebt und speichert automatisch Informationen in so genannten Server-Log-Dateien, die Ihr Browser automatisch an uns übermittelt. Dies sind:</p>
<ul>
<li>Browsertyp und Browserversion</li>
<li>verwendetes Betriebssystem</li>
<li>Referrer URL</li>
<li>Hostname des zugreifenden Rechners</li>
<li>Uhrzeit der Serveranfrage</li>
<li>IP-Adresse</li>
</ul>
<p>Eine Zusammenführung dieser Daten mit anderen Datenquellen wird nicht vorgenommen.</p>
<p>Die Erfassung dieser Daten erfolgt auf Grundlage von Art. 6 Abs. 1 lit. f DSGVO. Der Websitebetreiber hat ein berechtigtes Interesse an der technisch fehlerfreien Darstellung und der Optimierung seiner Website hierzu müssen die Server-Log-Files erfasst werden.</p>
<h3>Kontaktformular</h3>
<p>Wenn Sie uns per Kontaktformular Anfragen zukommen lassen, werden Ihre Angaben aus dem Anfrageformular inklusive der von Ihnen dort angegebenen Kontaktdaten zwecks Bearbeitung der Anfrage und für den Fall von Anschlussfragen bei uns gespeichert. Diese Daten geben wir nicht ohne Ihre Einwilligung weiter.</p>
<p>Die Verarbeitung dieser Daten erfolgt auf Grundlage von Art. 6 Abs. 1 lit. b DSGVO, sofern Ihre Anfrage mit der Erfüllung eines Vertrags zusammenhängt oder zur Durchführung vorvertraglicher Maßnahmen erforderlich ist. In allen übrigen Fällen beruht die Verarbeitung auf unserem berechtigten Interesse an der effektiven Bearbeitung der an uns gerichteten Anfragen (Art. 6 Abs. 1 lit. f DSGVO) oder auf Ihrer Einwilligung (Art. 6 Abs. 1 lit. a DSGVO) sofern diese abgefragt wurde.</p>
<p>Die von Ihnen im Kontaktformular eingegebenen Daten verbleiben bei uns, bis Sie uns zur Löschung auffordern, Ihre Einwilligung zur Speicherung widerrufen oder der Zweck für die Datenspeicherung entfällt (z. B. nach abgeschlossener Bearbeitung Ihrer Anfrage). Zwingende gesetzliche Bestimmungen insbesondere Aufbewahrungsfristen bleiben unberührt.</p>
<h3>Anfrage per E-Mail, Telefon oder Telefax</h3>
<p>Wenn Sie uns per E-Mail, Telefon oder Telefax kontaktieren, wird Ihre Anfrage inklusive aller daraus hervorgehenden personenbezogenen Daten (Name, Anfrage) zum Zwecke der Bearbeitung Ihres Anliegens bei uns gespeichert und verarbeitet. Diese Daten geben wir nicht ohne Ihre Einwilligung weiter.</p>
<p>Die Verarbeitung dieser Daten erfolgt auf Grundlage von Art. 6 Abs. 1 lit. b DSGVO, sofern Ihre Anfrage mit der Erfüllung eines Vertrags zusammenhängt oder zur Durchführung vorvertraglicher Maßnahmen erforderlich ist. In allen übrigen Fällen beruht die Verarbeitung auf unserem berechtigten Interesse an der effektiven Bearbeitung der an uns gerichteten Anfragen (Art. 6 Abs. 1 lit. f DSGVO) oder auf Ihrer Einwilligung (Art. 6 Abs. 1 lit. a DSGVO) sofern diese abgefragt wurde.</p>
<p>Die von Ihnen an uns per Kontaktanfragen übersandten Daten verbleiben bei uns, bis Sie uns zur Löschung auffordern, Ihre Einwilligung zur Speicherung widerrufen oder der Zweck für die Datenspeicherung entfällt (z. B. nach abgeschlossener Bearbeitung Ihres Anliegens). Zwingende gesetzliche Bestimmungen insbesondere gesetzliche Aufbewahrungsfristen bleiben unberührt.</p>
<h2>5. Plugins und Tools</h2>
<h3>Google Web Fonts</h3>
<p>Diese Seite nutzt zur einheitlichen Darstellung von Schriftarten so genannte Web Fonts, die von Google bereitgestellt werden. Beim Aufruf einer Seite lädt Ihr Browser die benötigten Web Fonts in ihren Browsercache, um Texte und Schriftarten korrekt anzuzeigen.</p>
<p>Zu diesem Zweck muss der von Ihnen verwendete Browser Verbindung zu den Servern von Google aufnehmen. Hierdurch erlangt Google Kenntnis darüber, dass über Ihre IP-Adresse diese Website aufgerufen wurde. Die Nutzung von Google WebFonts erfolgt auf Grundlage von Art. 6 Abs. 1 lit. f DSGVO. Der Websitebetreiber hat ein berechtigtes Interesse an der einheitlichen Darstellung des Schriftbildes auf seiner Website. Sofern eine entsprechende Einwilligung abgefragt wurde, erfolgt die Verarbeitung ausschließlich auf Grundlage von Art. 6 Abs. 1 lit. a DSGVO; die Einwilligung ist jederzeit widerrufbar.</p>
<p>Wenn Ihr Browser Web Fonts nicht unterstützt, wird eine Standardschrift von Ihrem Computer genutzt.</p>
<p>Weitere Informationen zu Google Web Fonts finden Sie unter <a href="https://developers.google.com/fonts/faq" target="_blank" rel="noopener noreferrer">https://developers.google.com/fonts/faq</a> und in der Datenschutzerklärung von Google: <a href="https://policies.google.com/privacy?hl=de" target="_blank" rel="noopener noreferrer">https://policies.google.com/privacy?hl=de</a>.</p>
<h3>Font Awesome (lokales Hosting)</h3>
<p>Diese Seite nutzt zur einheitlichen Darstellung von Schriftarten Font Awesome. Font Awesome ist lokal installiert. Eine Verbindung zu Servern von Fonticons, Inc. findet dabei nicht statt.</p>
<p>Weitere Informationen zu Font Awesome finden Sie in der Datenschutzerklärung für Font Awesome unter: <a href="https://fontawesome.com/privacy" target="_blank" rel="noopener noreferrer">https://fontawesome.com/privacy</a>.</p>
<p class="mt-5"><small>Quelle: <a href="https://www.e-recht24.de" target="_blank" rel="noopener noreferrer">https://www.e-recht24.de</a></small></p>
</div>
</div>
</section>
<!-- Footer -->
<footer class="site-footer">
<div class="container-fluid px-5">
<div class="footer-content">
<div class="footer-column">
<h4>Frida & Fred</h4>
<p>Ihre Adresse für Allgäuer Bio-Spezialitäten in Regensburg.</p>
<p style="margin-bottom: 0.5rem;">
<i class="fas fa-map-marker-alt" style="color: var(--secondary-color); margin-right: 8px;"></i>
Untere Bachgasse 3<br>
<i class="fas fa-city" style="color: var(--secondary-color); margin-right: 8px;"></i>
93047 Regensburg
</p>
<p style="margin-bottom: 0.5rem;">
<i class="fas fa-phone" style="color: var(--secondary-color); margin-right: 8px;"></i>
<a href="tel:+4994160093260">0941 60093260</a><br>
<i class="fas fa-mobile" style="color: var(--secondary-color); margin-right: 8px;"></i>
<a href="tel:+49015119426530">0151 19426530</a>
</p>
<p style="margin-bottom: 1.5rem;">
<i class="fas fa-envelope" style="color: var(--secondary-color); margin-right: 8px;"></i>
<a href="mailto:info@frida-fred.com">info@frida-fred.com</a>
</p>
<div class="social-links">
<!-- <a href="#" title="Facebook"><i class="fab fa-facebook-f"></i></a> -->
<a href="https://www.instagram.com/fridaundfred_regensburg?igsh=MXd4Nm91dHR3ejZ6YQ==" title="Instagram"><i class="fab fa-instagram"></i></a>
<!-- <a href="#" title="Twitter"><i class="fab fa-twitter"></i></a> -->
</div>
</div>
<div class="footer-column">
<h4>Öffnungszeiten</h4>
<p style="margin-bottom: 0.5rem;">
<strong>Montag:</strong><br>
Geschlossen
</p>
<p style="margin-bottom: 0;">
<strong>Dienstag - Samstag:</strong><br>
09:00 19:00 Uhr
</p>
</div>
<div class="footer-column">
<h4>Navigation</h4>
<ul>
<li><a href="index.html#about">Über uns</a></li>
<li><a href="index.html#produkte">Produkte</a></li>
<li><a href="index.html#services">Services</a></li>
<li><a href="lieferanten.html">Lieferanten</a></li>
</ul>
</div>
<div class="footer-column">
<h4>Rechtliches</h4>
<ul>
<li><a href="datenschutz.html">Datenschutz</a></li>
<li><a href="impressum.html">Impressum</a></li>
<li><a href="agb.html">AGB</a></li>
</ul>
</div>
</div>
<div class="footer-bottom">
<p>&copy; 2026 Frida & Fred. Alle Rechte vorbehalten.</p>
</div>
</div>
</footer>
<script src="lib/bootstrap.bundle.min.js"></script>
<!-- Back to Top Button -->
<a href="#" class="back-to-top" id="backToTop" aria-label="Nach oben scrollen">
<i class="fas fa-chevron-up"></i>
</a>
<script>
// Show/hide back to top button
window.addEventListener('scroll', function() {
const backToTop = document.getElementById('backToTop');
if (window.pageYOffset > 300) {
backToTop.classList.add('visible');
} else {
backToTop.classList.remove('visible');
}
});
</script>
</body>
</html>

BIN
favicon-16x16.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 809 B

BIN
favicon-32x32.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

BIN
favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 191 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 128 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 465 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 313 KiB

BIN
img/frida.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

BIN
img/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

BIN
img/puntzelhof.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 538 KiB

BIN
img/sell_gmachts.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 MiB

BIN
img/slider01.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

BIN
img/weingut_aufricht.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 198 KiB

BIN
img/weingut_kress.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 368 KiB

196
impressum.html Normal file
View File

@@ -0,0 +1,196 @@
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Impressum - Frida und Fred</title>
<!-- Favicons -->
<link rel="icon" type="image/x-icon" href="favicon.ico">
<link rel="icon" type="image/png" sizes="32x32" href="favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="favicon-16x16.png">
<link rel="apple-touch-icon" sizes="180x180" href="apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="192x192" href="android-chrome-192x192.png">
<link rel="icon" type="image/png" sizes="512x512" href="android-chrome-512x512.png">
<link href="lib/bootstrap.min.css" rel="stylesheet">
<link href="lib/fontawesome.min.css" rel="stylesheet">
<link href="css/style.css" rel="stylesheet">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Playfair+Display:wght@700;900&family=Lato:wght@300;400;700&display=swap" rel="stylesheet">
</head>
<body>
<!-- Top Bar -->
<div class="top-bar">
<div class="container-fluid px-5">
<span class="top-item"><i class="fas fa-map-marker-alt"></i> Untere Bachgasse 3, 93047 Regensburg</span>
<a class="top-item" href="tel:+4994160093260"><i class="fas fa-phone"></i> 0941 60093260</a>
<a class="top-item" href="mailto:info@frida-fred.com"><i class="fas fa-envelope"></i> info@frida-fred.com</a>
</div>
</div>
<!-- Navigation -->
<nav class="navbar navbar-expand-lg navbar-light sticky-top">
<div class="container-fluid px-5">
<a class="navbar-brand" href="index.html">Frida & Fred</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav ms-auto">
<li class="nav-item"><a class="nav-link" href="index.html#about">Über uns</a></li>
<li class="nav-item"><a class="nav-link" href="index.html#produkte">Produkte</a></li>
<li class="nav-item"><a class="nav-link" href="index.html#services">Services</a></li>
<li class="nav-item"><a class="nav-link" href="index.html#events">Events</a></li>
<li class="nav-item"><a class="nav-link" href="lieferanten.html">Lieferanten</a></li>
<li class="nav-item"><a class="nav-link" href="index.html#contact">Kontakt</a></li>
</ul>
</div>
</div>
</nav>
<!-- Impressum Section -->
<section class="section-impressum">
<div class="container-fluid px-5 py-5">
<h1 class="section-heading text-center mb-5">Impressum</h1>
<div class="impressum-content">
<h3>Angaben gemäß §5 TMG</h3>
<p>
Frida Allgäuer Schmankerl<br>
Untere Bachgasse 3<br>
93047 Regensburg
</p>
<p>
Vertreten durch Kerstin Jacky
</p>
<p>
Steuernummer: 244/263/42908<br>
Ust-ID: DE334887112
</p>
<h3>Kontakt</h3>
<p>
Telefon: <a href="tel:+4994160093260">0941 60093260</a> oder WhatsApp: <a href="tel:+4915119426530">0151 19426530</a><br>
Telefax: 0941 60093261<br>
E-Mail: <a href="mailto:info@frida-fred.com">info@frida-fred.com</a>
</p>
<p>
Folgt uns auf Instagram: <a href="https://www.instagram.com/fridaundfred_regensburg/?hl=de" target="_blank" rel="noopener noreferrer">@fridaundfred_regensburg</a>
</p>
<h3>Öffnungszeiten</h3>
<p>
Montag: geschlossen<br>
Dienstag: 09:00 - 19:00 Uhr<br>
Mittwoch: 09:00 - 19:00 Uhr<br>
Donnerstag: 09:00 - 19:00 Uhr<br>
Freitag: 09:00 - 19:00 Uhr<br>
Samstag: 09:00 - 19:00 Uhr<br>
Sonntag: geschlossen
</p>
<h2 class="mt-5">Haftungsausschluss (Disclaimer)</h2>
<h4>Haftung für Inhalte</h4>
<p>
Als Diensteanbieter sind wir gemäß § 7 Abs.1 TMG für eigene Inhalte auf diesen Seiten nach den allgemeinen Gesetzen verantwortlich. Nach §§ 8 bis 10 TMG sind wir als Diensteanbieter jedoch nicht verpflichtet, übermittelte oder gespeicherte fremde Informationen zu überwachen oder nach Umständen zu forschen, die auf eine rechtswidrige Tätigkeit hinweisen. Verpflichtungen zur Entfernung oder Sperrung der Nutzung von Informationen nach den allgemeinen Gesetzen bleiben hiervon unberührt. Eine diesbezügliche Haftung ist jedoch erst ab dem Zeitpunkt der Kenntnis einer konkreten Rechtsverletzung möglich. Bei Bekanntwerden von entsprechenden Rechtsverletzungen werden wir diese Inhalte umgehend entfernen.
</p>
<h4>Haftung für Links</h4>
<p>
Unser Angebot enthält Links zu externen Webseiten Dritter, auf deren Inhalte wir keinen Einfluss haben. Deshalb können wir für diese fremden Inhalte auch keine Gewähr übernehmen. Für die Inhalte der verlinkten Seiten ist stets der jeweilige Anbieter oder Betreiber der Seiten verantwortlich. Die verlinkten Seiten wurden zum Zeitpunkt der Verlinkung auf mögliche Rechtsverstöße überprüft. Rechtswidrige Inhalte waren zum Zeitpunkt der Verlinkung nicht erkennbar. Eine permanente inhaltliche Kontrolle der verlinkten Seiten ist jedoch ohne konkrete Anhaltspunkte einer Rechtsverletzung nicht zumutbar. Bei Bekanntwerden von Rechtsverletzungen werden wir derartige Links umgehend entfernen.
</p>
<h4>Urheberrecht</h4>
<p>
Die durch die Seitenbetreiber erstellten Inhalte und Werke auf diesen Seiten unterliegen dem deutschen Urheberrecht. Die Vervielfältigung, Bearbeitung, Verbreitung und jede Art der Verwertung außerhalb der Grenzen des Urheberrechtes bedürfen der schriftlichen Zustimmung des jeweiligen Autors bzw. Erstellers. Downloads und Kopien dieser Seite sind nur für den privaten, nicht kommerziellen Gebrauch gestattet. Soweit die Inhalte auf dieser Seite nicht vom Betreiber erstellt wurden, werden die Urheberrechte Dritter beachtet. Insbesondere werden Inhalte Dritter als solche gekennzeichnet. Sollten Sie trotzdem auf eine Urheberrechtsverletzung aufmerksam werden, bitten wir um einen entsprechenden Hinweis. Bei Bekanntwerden von Rechtsverletzungen werden wir derartige Inhalte umgehend entfernen.
</p>
</div>
</div>
</section>
<!-- Footer -->
<footer class="site-footer">
<div class="container-fluid px-5">
<div class="footer-content">
<div class="footer-column">
<h4>Frida & Fred</h4>
<p>Ihre Adresse für Allgäuer Bio-Spezialitäten in Regensburg.</p>
<p style="margin-bottom: 0.5rem;">
<i class="fas fa-map-marker-alt" style="color: var(--secondary-color); margin-right: 8px;"></i>
Untere Bachgasse 3<br>
<i class="fas fa-city" style="color: var(--secondary-color); margin-right: 8px;"></i>
93047 Regensburg
</p>
<p style="margin-bottom: 0.5rem;">
<i class="fas fa-phone" style="color: var(--secondary-color); margin-right: 8px;"></i>
<a href="tel:+4994160093260">0941 60093260</a><br>
<i class="fas fa-mobile" style="color: var(--secondary-color); margin-right: 8px;"></i>
<a href="tel:+49015119426530">0151 19426530</a>
</p>
<p style="margin-bottom: 1.5rem;">
<i class="fas fa-envelope" style="color: var(--secondary-color); margin-right: 8px;"></i>
<a href="mailto:info@frida-fred.com">info@frida-fred.com</a>
</p>
<div class="social-links">
<!-- <a href="#" title="Facebook"><i class="fab fa-facebook-f"></i></a> -->
<a href="https://www.instagram.com/fridaundfred_regensburg?igsh=MXd4Nm91dHR3ejZ6YQ==" title="Instagram"><i class="fab fa-instagram"></i></a>
<!-- <a href="#" title="Twitter"><i class="fab fa-twitter"></i></a> -->
</div>
</div>
<div class="footer-column">
<h4>Öffnungszeiten</h4>
<p style="margin-bottom: 0.5rem;">
<strong>Montag:</strong><br>
Geschlossen
</p>
<p style="margin-bottom: 0;">
<strong>Dienstag - Samstag:</strong><br>
09:00 19:00 Uhr
</p>
</div>
<div class="footer-column">
<h4>Navigation</h4>
<ul>
<li><a href="index.html#about">Über uns</a></li>
<li><a href="index.html#produkte">Produkte</a></li>
<li><a href="index.html#services">Services</a></li>
<li><a href="lieferanten.html">Lieferanten</a></li>
</ul>
</div>
<div class="footer-column">
<h4>Rechtliches</h4>
<ul>
<li><a href="datenschutz.html">Datenschutz</a></li>
<li><a href="impressum.html">Impressum</a></li>
<li><a href="agb.html">AGB</a></li>
</ul>
</div>
</div>
<div class="footer-bottom">
<p>&copy; 2026 Frida & Fred. Alle Rechte vorbehalten.</p>
</div>
</div>
</footer>
<script src="lib/bootstrap.bundle.min.js"></script>
<!-- Back to Top Button -->
<a href="#" class="back-to-top" id="backToTop" aria-label="Nach oben scrollen">
<i class="fas fa-chevron-up"></i>
</a>
<script>
// Show/hide back to top button
window.addEventListener('scroll', function() {
const backToTop = document.getElementById('backToTop');
if (window.pageYOffset > 300) {
backToTop.classList.add('visible');
} else {
backToTop.classList.remove('visible');
}
});
</script>
</body>
</html>

716
index.html Normal file
View File

@@ -0,0 +1,716 @@
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Frida und Fred - Feinkostgeschäft in Regensburg</title>
<!-- Favicons -->
<link rel="icon" type="image/x-icon" href="favicon.ico">
<link rel="icon" type="image/png" sizes="32x32" href="favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="favicon-16x16.png">
<link rel="apple-touch-icon" sizes="180x180" href="apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="192x192" href="android-chrome-192x192.png">
<link rel="icon" type="image/png" sizes="512x512" href="android-chrome-512x512.png">
<link href="lib/bootstrap.min.css" rel="stylesheet">
<link href="lib/fontawesome.min.css" rel="stylesheet">
<link href="css/style.css" rel="stylesheet">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Playfair+Display:wght@700;900&family=Lato:wght@300;400;700&display=swap" rel="stylesheet">
</head>
<body>
<!-- Top Bar -->
<div class="top-bar">
<div class="container-fluid px-5">
<span class="top-item"><i class="fas fa-map-marker-alt"></i> Untere Bachgasse 3, 93047 Regensburg</span>
<a class="top-item" href="tel:+4994160093260"><i class="fas fa-phone"></i> 0941 60093260</a>
<a class="top-item" href="mailto:info@frida-fred.com"><i class="fas fa-envelope"></i> info@frida-fred.com</a>
</div>
</div>
<!-- Navigation -->
<nav class="navbar navbar-expand-lg navbar-light sticky-top">
<div class="container-fluid px-5">
<a class="navbar-brand" href="index.html">Frida & Fred</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav ms-auto">
<li class="nav-item"><a class="nav-link" href="#about">Über uns</a></li>
<li class="nav-item"><a class="nav-link" href="#produkte">Produkte</a></li>
<li class="nav-item"><a class="nav-link" href="#services">Services</a></li>
<li class="nav-item"><a class="nav-link" href="#events">Events</a></li>
<li class="nav-item"><a class="nav-link" href="lieferanten.html">Lieferanten</a></li>
<li class="nav-item"><a class="nav-link" href="#contact">Kontakt</a></li>
</ul>
</div>
</div>
</nav>
<!-- Hero Section -->
<section class="hero" id="home">
<div class="hero-content">
<div class="hero-text">
<h1 class="hero-title">Schmankerl und Kaffee<br>in Bio-Qualität</h1>
<p class="hero-subtitle">Handverlesene Produkte von regionalen Produzenten</p>
<a href="#produkte" class="btn-cta">Zu unseren Produkten</a>
</div>
<div class="hero-image">
<img src="img/logo.png" alt="Frida & Fred Logo" class="hero-logo">
</div>
</div>
</section>
<!-- About Section -->
<section id="about" class="section-about">
<div class="container-fluid px-5">
<h2 class="section-heading text-center mb-5">Gutes tut uns gut Schmankerl und Kaffee in Regensburg</h2>
<div class="about-layout">
<div class="about-text">
<h3>Natur, die man schmeckt</h3>
<p>Wir glauben daran, dass echter Geschmack durch Respekt entsteht. Respekt vor der Natur, den Tieren und dem Handwerk. Wenn wir schätzen, was die Natur uns gibt, entsteht Qualität, die nicht nur gut schmeckt, sondern auch gut tut.</p>
<h3>Tradition trifft Moderne</h3>
<p>Hinter Frida & Fred stehen wir [Dein Name], geprüfte Restaurantmeisterin und Caffeebarista. Seit 2015 lebe ich in Regensburg und bringe das Beste aus meiner alten Heimat in meine neue.</p>
<h3>Warum bei uns probieren?</h3>
<ul>
<li><strong>Echte Herkunft:</strong> Produkte von Familienbetrieben, die Tradition und Moderne verbinden.</li>
<li><strong>Natürlich &amp; Bekömmlich:</strong> Keine unnötigen Zusätze, dafür voller Geschmack und gute Verträglichkeit.</li>
<li><strong>Mit Liebe ausgewählt:</strong> Jedes Produkt hat seine eigene Geschichte, die ich gerne mit euch teile.</li>
</ul>
<p>Kommt vorbei und probiert euch durch unser Sortiment!</p>
</div>
<div class="about-image">
<img src="img/frida.jpg" alt="Frida & Fred Geschäft" class="about-img">
</div>
</div>
</div>
</section>
<!-- Products Section -->
<section id="produkte" class="section-products">
<div class="container-fluid px-5">
<h2 class="section-heading text-center mb-5">Unsere Produkte</h2>
<div class="products-grid">
<div class="product-item">
<div class="product-icon">
<i class="fas fa-wine-bottle"></i>
</div>
<h3>Weine</h3>
<p>Exquisite Weine aus dem Allgäu und darüber hinaus. Sorgfältig ausgewählte Sorten für jeden Geschmack und Anlass.</p>
</div>
<div class="product-item">
<div class="product-icon">
<i class="fas fa-cheese"></i>
</div>
<h3>Käse</h3>
<p>Heumilch Käsespezialitäten von lokalen Käsemeistern. Von mild bis würzig für jeden Käseliebhaber das Richtige.</p>
</div>
<div class="product-item">
<div class="product-icon">
<i class="fas fa-mug-hot"></i>
</div>
<h3>Kaffee</h3>
<p>Hochwertiger Bio-Kaffee & feines Gebäck. Genießen Sie unser intensives Aroma direkt hier im Laden oder nehmen Sie Ihr frisch gemahlen Kaffee mit nach Hause.</p>
</div>
<div class="product-item">
<div class="product-icon">
<i class="fas fa-jar"></i>
</div>
<h3>Sell Gmachts</h3>
<p>Tee, Kräuter , Pesto, Essig &Öl Konfitüren und Marmeladen. Handwerklich hergestellt nach bewährten Rezepten.</p>
</div>
<div class="product-item">
<div class="product-icon">
<i class="fas fa-egg"></i>
</div>
<h3>Frühstück</h3>
<p>Klein aber fein</p>
</div>
<div class="product-item">
<div class="product-icon">
<i class="fas fa-plate-wheat"></i>
</div>
<h3>Mittagessen</h3>
<p>Klein Aber fein</p>
</div>
</div>
</div>
</section>
<!-- Services Section -->
<section id="services" class="section-services">
<div class="container-fluid px-5">
<h2 class="section-heading text-center mb-5">Unsere Services</h2>
<div class="services-grid">
<div class="service-card" style="--bg-image: url('../img/services/geschenkkorb.jpg')">
<div class="service-img"></div>
<h3>Geschenkkörbe</h3>
<p>Individuell zusammengestellte Geschenkkörbe mit unseren besten Produkten. Perfekt für jeden Anlass!</p>
</div>
<div class="service-card" style="--bg-image: url('../img/services/kaeseplatte.jpg')">
<div class="service-img"></div>
<h3>Käseplatten</h3>
<p>Kunstvolle Käseplatten für Ihre Veranstaltung. Frisch zusammengestellt nach Ihren Wünschen.</p>
</div>
<div class="service-card" style="--bg-image: url('../img/services/Weintastings.jpg')">
<div class="service-img"></div>
<h3>Weintastings</h3>
<p>Professionelle Weinverkostungen mit Expertenwissen. Entdecken Sie neue Geschmackserlebnisse!</p>
</div>
</div>
</div>
</section>
<!-- Events Section -->
<section id="events" class="section-events">
<div class="container-fluid px-5">
<h2 class="section-heading text-center mb-3">Weinreisen & Käsetastings</h2>
<p class="section-subtitle text-center mb-5">Entdecken Sie unsere kulinarischen Erlebnisse eine Weinreise von Lindau über Hagnau bis nach Überlingen mit exquisiten Weinen und unserem leckeren Bio-Heumilchkäse. Jedes Tasting ist auch eine Käseverkostung mit verschiedenen Allgäuer Käsespezialitäten.</p>
<!-- Events Carousel -->
<div id="eventsCarousel" class="carousel slide events-carousel" data-bs-ride="carousel" data-bs-interval="6000">
<div class="carousel-indicators">
<button type="button" data-bs-target="#eventsCarousel" data-bs-slide-to="0" class="active" aria-current="true" aria-label="Slide 1"></button>
<button type="button" data-bs-target="#eventsCarousel" data-bs-slide-to="1" aria-label="Slide 2"></button>
<button type="button" data-bs-target="#eventsCarousel" data-bs-slide-to="2" aria-label="Slide 3"></button>
<button type="button" data-bs-target="#eventsCarousel" data-bs-slide-to="3" aria-label="Slide 4"></button>
<button type="button" data-bs-target="#eventsCarousel" data-bs-slide-to="4" aria-label="Slide 5"></button>
</div>
<div class="carousel-inner">
<!-- Slide 1: Events Info -->
<div class="carousel-item active">
<div class="events-info">
<h3>Ihre Weinreise & Käseverkostung bei Frida & Fred</h3>
<p>Der Abend in der Frida beinhaltet eine Weinreise mit 5-7 Weinen und natürlich unserem leckeren Heumilchkäse. Auch für Häppchen ist selbstverständlich gesorgt. Bei Allergenen oder Ernährungspräferenzen gehen wir gerne auf individuelle Wünsche ein!</p>
<hr style="border: none; border-top: 1px solid var(--secondary-color); margin: 30px 0;">
<img src="img/slider01.jpg" alt="Weinreise und Käseverkostung" style="width: 100%; max-width: 600px; margin: 20px auto 0; display: block; border-radius: 8px;">
</div>
</div>
<!-- Slide 2: Event Details -->
<div class="carousel-item">
<div class="event-details">
<h3 style="grid-column: 1 / -1; margin-bottom: 10px;">Weinreisen 2026</h3>
<div class="event-detail-item">
<i class="fas fa-wine-glass-alt"></i>
<div>
<strong>Weintasting</strong>
<p>5-7 exquisite Weine vom Bodensee von Lindau über Hagnau bis Überlingen</p>
</div>
</div>
<div class="event-detail-item">
<i class="fas fa-euro-sign"></i>
<div>
<strong>Preis pro Person</strong>
<p>70€</p>
</div>
</div>
<div class="event-detail-item">
<i class="fas fa-users"></i>
<div>
<strong>Hinweis</strong>
<p>Da unsere Räumlichkeiten begrenzt sind, vergesst nicht eure Personenanzahl anzugeben.</p>
</div>
</div>
<div class="event-detail-item">
<i class="fas fa-envelope"></i>
<div>
<strong>Anmeldung</strong>
<p>Per E-Mail an <a href="mailto:info@frida-fred.com">info@frida-fred.com</a> oder telefonisch/WhatsApp: <a href="tel:+49015119426530">0151 19426530</a></p>
</div>
</div>
</div>
</div>
<!-- Slide 3: Weinreisen Termine -->
<div class="carousel-item">
<div class="events-dates">
<h3>Weinreisen Termine 2026</h3>
<div class="dates-grid">
<div class="date-card wine-event">
<div class="date-icon">
<i class="fas fa-wine-glass-alt"></i>
</div>
<div class="date-info">
<span class="date-day">Samstag</span>
<span class="date-number">23. Januar</span>
</div>
</div>
<div class="date-card wine-event">
<div class="date-icon">
<i class="fas fa-wine-glass-alt"></i>
</div>
<div class="date-info">
<span class="date-day">Samstag</span>
<span class="date-number">21. Februar</span>
</div>
</div>
<div class="date-card wine-event">
<div class="date-icon">
<i class="fas fa-wine-glass-alt"></i>
</div>
<div class="date-info">
<span class="date-day">Samstag</span>
<span class="date-number">21. März</span>
</div>
</div>
<div class="date-card wine-event">
<div class="date-icon">
<i class="fas fa-wine-glass-alt"></i>
</div>
<div class="date-info">
<span class="date-day">Donnerstag</span>
<span class="date-number">02. April</span>
</div>
</div>
<div class="date-card wine-event">
<div class="date-icon">
<i class="fas fa-wine-glass-alt"></i>
</div>
<div class="date-info">
<span class="date-day">Samstag</span>
<span class="date-number">20. Juni</span>
</div>
</div>
<div class="date-card wine-event">
<div class="date-icon">
<i class="fas fa-wine-glass-alt"></i>
</div>
<div class="date-info">
<span class="date-day">Samstag</span>
<span class="date-number">19. September</span>
</div>
</div>
<div class="date-card wine-event">
<div class="date-icon">
<i class="fas fa-wine-glass-alt"></i>
</div>
<div class="date-info">
<span class="date-day">Donnerstag</span>
<span class="date-number">30. Oktober</span>
</div>
</div>
<div class="date-card wine-event">
<div class="date-icon">
<i class="fas fa-wine-glass-alt"></i>
</div>
<div class="date-info">
<span class="date-day">Samstag</span>
<span class="date-number">17. Oktober</span>
</div>
</div>
<div class="date-card wine-event">
<div class="date-icon">
<i class="fas fa-wine-glass-alt"></i>
</div>
<div class="date-info">
<span class="date-day">Dienstag</span>
<span class="date-number">29. Dezember</span>
</div>
</div>
</div>
<!-- <div class="events-cta">
<a href="mailto:info@frida-fred.com" class="btn-cta">Jetzt anmelden</a>
</div> -->
</div>
</div>
<!-- Slide 4: Event Details (Käse) -->
<div class="carousel-item">
<div class="event-details">
<h3 style="grid-column: 1 / -1; margin-bottom: 10px;">Käsetastings 2026</h3>
<div class="event-detail-item">
<i class="fas fa-cheese"></i>
<div>
<strong>Käsetasting</strong>
<p>Verschiedene Heumilchkäse-Spezialitäten, perfekt auf die Weine abgestimmt</p>
</div>
</div>
<div class="event-detail-item">
<i class="fas fa-euro-sign"></i>
<div>
<strong>Preis pro Person</strong>
<p>50€</p>
</div>
</div>
<div class="event-detail-item">
<i class="fas fa-users"></i>
<div>
<strong>Hinweis</strong>
<p>Da unsere Räumlichkeiten begrenzt sind, vergesst nicht eure Personenanzahl anzugeben.</p>
</div>
</div>
<div class="event-detail-item">
<i class="fas fa-envelope"></i>
<div>
<strong>Anmeldung</strong>
<p>Per E-Mail an <a href="mailto:info@frida-fred.com">info@frida-fred.com</a> oder telefonisch/WhatsApp: <a href="tel:+49015119426530">0151 19426530</a></p>
</div>
</div>
</div>
</div>
<!-- Slide 5: Käsetastings Termine -->
<div class="carousel-item">
<div class="events-dates">
<h3>Käsetastings Termine 2026</h3>
<div class="dates-grid">
<div class="date-card cheese-event">
<div class="date-icon">
<i class="fas fa-cheese"></i>
</div>
<div class="date-info">
<span class="date-day">Donnerstag</span>
<span class="date-number">06. Februar</span>
</div>
</div>
<div class="date-card cheese-event">
<div class="date-icon">
<i class="fas fa-cheese"></i>
</div>
<div class="date-info">
<span class="date-day">Donnerstag</span>
<span class="date-number">06. März</span>
</div>
</div>
<div class="date-card cheese-event">
<div class="date-icon">
<i class="fas fa-cheese"></i>
</div>
<div class="date-info">
<span class="date-day">Donnerstag</span>
<span class="date-number">03. April</span>
</div>
</div>
<div class="date-card cheese-event">
<div class="date-icon">
<i class="fas fa-cheese"></i>
</div>
<div class="date-info">
<span class="date-day">Donnerstag</span>
<span class="date-number">08. Mai</span>
</div>
</div>
<div class="date-card cheese-event">
<div class="date-icon">
<i class="fas fa-cheese"></i>
</div>
<div class="date-info">
<span class="date-day">Donnerstag</span>
<span class="date-number">03. Juli</span>
</div>
</div>
<div class="date-card cheese-event">
<div class="date-icon">
<i class="fas fa-cheese"></i>
</div>
<div class="date-info">
<span class="date-day">Donnerstag</span>
<span class="date-number">04. September</span>
</div>
</div>
<div class="date-card cheese-event">
<div class="date-icon">
<i class="fas fa-cheese"></i>
</div>
<div class="date-info">
<span class="date-day">Donnerstag</span>
<span class="date-number">09. Oktober</span>
</div>
</div>
<div class="date-card cheese-event">
<div class="date-icon">
<i class="fas fa-cheese"></i>
</div>
<div class="date-info">
<span class="date-day">Donnerstag</span>
<span class="date-number">06. November</span>
</div>
</div>
</div>
<!-- <div class="events-cta">
<a href="mailto:info@frida-fred.com" class="btn-cta">Jetzt anmelden</a>
</div> -->
</div>
</div>
</div>
<!-- Carousel Controls -->
<button class="carousel-control-prev" type="button" data-bs-target="#eventsCarousel" data-bs-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="visually-hidden">Previous</span>
</button>
<button class="carousel-control-next" type="button" data-bs-target="#eventsCarousel" data-bs-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="visually-hidden">Next</span>
</button>
</div>
</div>
</section>
<!-- Contact Section -->
<section id="contact" class="section-contact">
<div class="container-fluid px-5">
<h2 class="section-heading text-center mb-5">Kontakt</h2>
<div class="contact-layout">
<div class="contact-column">
<div class="contact-card">
<h3><i class="fas fa-map-marker-alt"></i> Hier finden Sie uns</h3>
<div class="map-embed">
<iframe src="https://www.google.com/maps?q=Untere+Bachgasse+3,+93047+Regensburg&output=embed" title="Standort Frida & Fred Ladenlokal" loading="lazy" allowfullscreen referrerpolicy="no-referrer-when-downgrade"></iframe>
</div>
</div>
</div>
<div class="contact-column">
<div class="contact-card">
<h3><i class="fas fa-envelope"></i> Schreiben Sie uns</h3>
<form id="contactForm" class="contact-form" method="POST" action="api/send-mail.php" novalidate>
<input type="hidden" name="csrf_token" value="frida-fred-csrf-2026">
<input type="text" name="website" style="display: none;" tabindex="-1" autocomplete="off">
<div class="form-group">
<label for="name">Name *</label>
<input type="text" id="name" name="name" class="form-control" autocomplete="name" required aria-required="true">
</div>
<div class="form-group">
<label for="email">E-Mail *</label>
<input type="email" id="email" name="email" class="form-control" autocomplete="email" required aria-required="true">
</div>
<div class="form-group">
<label for="subject">Betreff *</label>
<input type="text" id="subject" name="subject" class="form-control" autocomplete="off" required aria-required="true">
</div>
<div class="form-group">
<label for="message">Nachricht *</label>
<textarea id="message" name="message" class="form-control" rows="4" autocomplete="off" required aria-required="true"></textarea>
</div>
<button type="submit" class="btn btn-submit">Nachricht senden</button>
</form>
<div id="formMessage" class="form-message" style="display: none;"></div>
</div>
</div>
</div>
</div>
</section>
<!-- Footer -->
<footer class="site-footer">
<div class="container-fluid px-5">
<div class="footer-content">
<div class="footer-column">
<h4>Frida & Fred</h4>
<p>Ihre Adresse für Allgäuer Bio-Spezialitäten in Regensburg.</p>
<p style="margin-bottom: 0.5rem;">
<i class="fas fa-map-marker-alt" style="color: var(--secondary-color); margin-right: 8px;"></i>
Untere Bachgasse 3<br>
<i class="fas fa-city" style="color: var(--secondary-color); margin-right: 8px;"></i>
93047 Regensburg
</p>
<p style="margin-bottom: 0.5rem;">
<i class="fas fa-phone" style="color: var(--secondary-color); margin-right: 8px;"></i>
<a href="tel:+4994160093260">0941 60093260</a><br>
<i class="fas fa-mobile" style="color: var(--secondary-color); margin-right: 8px;"></i>
<a href="tel:+49015119426530">0151 19426530</a>
</p>
<p style="margin-bottom: 1.5rem;">
<i class="fas fa-envelope" style="color: var(--secondary-color); margin-right: 8px;"></i>
<a href="mailto:info@frida-fred.com">info@frida-fred.com</a>
</p>
<div class="social-links">
<!-- <a href="#" title="Facebook"><i class="fab fa-facebook-f"></i></a> -->
<a href="https://www.instagram.com/fridaundfred_regensburg?igsh=MXd4Nm91dHR3ejZ6YQ==" title="Instagram"><i class="fab fa-instagram"></i></a>
<!-- <a href="#" title="Twitter"><i class="fab fa-twitter"></i></a> -->
</div>
</div>
<div class="footer-column">
<h4>Öffnungszeiten</h4>
<p style="margin-bottom: 0.5rem;">
<strong>Montag:</strong><br>
Geschlossen
</p>
<p style="margin-bottom: 0;">
<strong>Dienstag - Samstag:</strong><br>
09:00 19:00 Uhr
</p>
</div>
<div class="footer-column">
<h4>Navigation</h4>
<ul>
<li><a href="#about">Über uns</a></li>
<li><a href="#produkte">Produkte</a></li>
<li><a href="#services">Services</a></li>
<li><a href="lieferanten.html">Lieferanten</a></li>
</ul>
</div>
<div class="footer-column">
<h4>Rechtliches</h4>
<ul>
<li><a href="datenschutz.html">Datenschutz</a></li>
<li><a href="impressum.html">Impressum</a></li>
<li><a href="agb.html">AGB</a></li>
</ul>
</div>
</div>
<div class="footer-bottom">
<p>&copy; 2026 Frida & Fred. Alle Rechte vorbehalten.</p>
</div>
</div>
</footer>
<script src="lib/bootstrap.bundle.min.js"></script>
<script>
// Smooth scrolling for internal links
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener('click', function (e) {
e.preventDefault();
const target = document.querySelector(this.getAttribute('href'));
if (target) {
target.scrollIntoView({
behavior: 'smooth',
block: 'start'
});
}
});
});
// Active nav link on scroll
window.addEventListener('scroll', function() {
let current = '';
const sections = document.querySelectorAll('section');
sections.forEach(section => {
const sectionTop = section.offsetTop;
const sectionHeight = section.clientHeight;
if (pageYOffset >= sectionTop - 200) {
current = section.getAttribute('id');
}
});
document.querySelectorAll('.nav-link').forEach(link => {
link.classList.remove('active');
if (link.getAttribute('href') === '#' + current) {
link.classList.add('active');
}
});
});
// Contact Form Handler
const contactForm = document.getElementById('contactForm');
const formMessage = document.getElementById('formMessage');
if (contactForm) {
contactForm.addEventListener('submit', function(e) {
e.preventDefault();
// Honeypot check
const honeypot = document.querySelector('input[name="website"]').value;
if (honeypot) {
console.warn('Bot detection triggered');
return false;
}
// Form validation
if (!contactForm.checkValidity()) {
formMessage.classList.remove('success');
formMessage.classList.add('error');
formMessage.textContent = 'Bitte füllen Sie alle erforderlichen Felder aus.';
formMessage.style.display = 'block';
return false;
}
// Email validation
const emailInput = document.getElementById('email');
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
if (!emailRegex.test(emailInput.value)) {
formMessage.classList.remove('success');
formMessage.classList.add('error');
formMessage.textContent = 'Bitte geben Sie eine gültige E-Mail-Adresse ein.';
formMessage.style.display = 'block';
return false;
}
// Submit button deaktivieren während des Sendens
const submitButton = contactForm.querySelector('button[type="submit"]');
const originalButtonText = submitButton.textContent;
submitButton.disabled = true;
submitButton.textContent = 'Wird gesendet...';
// Formular als FormData sammeln
const formData = new FormData(contactForm);
// AJAX-Request an send-mail.php
fetch('api/send-mail.php', {
method: 'POST',
body: formData
})
.then(response => response.json())
.then(data => {
// Submit button wieder aktivieren
submitButton.disabled = false;
submitButton.textContent = originalButtonText;
if (data.success) {
formMessage.classList.remove('error');
formMessage.classList.add('success');
formMessage.textContent = data.message;
formMessage.style.display = 'block';
// Formular zurücksetzen
contactForm.reset();
// Nachricht nach 7 Sekunden ausblenden
setTimeout(() => {
formMessage.style.display = 'none';
}, 7000);
} else {
formMessage.classList.remove('success');
formMessage.classList.add('error');
formMessage.textContent = data.message;
formMessage.style.display = 'block';
}
})
.catch(error => {
// Submit button wieder aktivieren
submitButton.disabled = false;
submitButton.textContent = originalButtonText;
console.error('Fehler:', error);
formMessage.classList.remove('success');
formMessage.classList.add('error');
formMessage.textContent = 'Es gab ein Problem beim Senden Ihrer Nachricht. Bitte versuchen Sie es später erneut.';
formMessage.style.display = 'block';
});
return false;
});
}
</script>
<!-- Back to Top Button -->
<a href="#" class="back-to-top" id="backToTop" aria-label="Nach oben scrollen">
<i class="fas fa-chevron-up"></i>
</a>
<script>
// Show/hide back to top button
window.addEventListener('scroll', function() {
const backToTop = document.getElementById('backToTop');
if (window.pageYOffset > 300) {
backToTop.classList.add('visible');
} else {
backToTop.classList.remove('visible');
}
});
</script>
</body>
</html>

7
lib/bootstrap.bundle.min.js vendored Normal file

File diff suppressed because one or more lines are too long

6
lib/bootstrap.min.css vendored Normal file

File diff suppressed because one or more lines are too long

BIN
lib/fa-solid-900.woff2 Normal file

Binary file not shown.

9
lib/fontawesome.min.css vendored Normal file

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

253
lieferanten.html Normal file
View File

@@ -0,0 +1,253 @@
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Unsere Lieferanten - Frida und Fred</title>
<!-- Favicons -->
<link rel="icon" type="image/x-icon" href="favicon.ico">
<link rel="icon" type="image/png" sizes="32x32" href="favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="favicon-16x16.png">
<link rel="apple-touch-icon" sizes="180x180" href="apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="192x192" href="android-chrome-192x192.png">
<link rel="icon" type="image/png" sizes="512x512" href="android-chrome-512x512.png">
<link href="lib/bootstrap.min.css" rel="stylesheet">
<link href="lib/fontawesome.min.css" rel="stylesheet">
<link href="css/style.css" rel="stylesheet">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Playfair+Display:wght@700;900&family=Lato:wght@300;400;700&display=swap" rel="stylesheet">
</head>
<body>
<!-- Top Bar -->
<div class="top-bar">
<div class="container-fluid px-5">
<span class="top-item"><i class="fas fa-map-marker-alt"></i> Untere Bachgasse 3, 93047 Regensburg</span>
<a class="top-item" href="tel:+4994160093260"><i class="fas fa-phone"></i> 0941 60093260</a>
<a class="top-item" href="mailto:info@frida-fred.com"><i class="fas fa-envelope"></i> info@frida-fred.com</a>
</div>
</div>
<!-- Navigation -->
<nav class="navbar navbar-expand-lg navbar-light sticky-top">
<div class="container-fluid px-5">
<a class="navbar-brand" href="index.html">Frida & Fred</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav ms-auto">
<li class="nav-item"><a class="nav-link" href="index.html#about">Über uns</a></li>
<li class="nav-item"><a class="nav-link" href="index.html#produkte">Produkte</a></li>
<li class="nav-item"><a class="nav-link" href="index.html#services">Services</a></li>
<li class="nav-item"><a class="nav-link" href="index.html#events">Events</a></li>
<li class="nav-item"><a class="nav-link active" href="lieferanten.html">Lieferanten</a></li>
<li class="nav-item"><a class="nav-link" href="index.html#contact">Kontakt</a></li>
</ul>
</div>
</div>
</nav>
<!-- Suppliers Section -->
<section id="lieferanten" class="section-suppliers">
<div class="container-fluid px-5">
<h2 class="section-heading text-center mb-3">Unsere Lieferanten</h2>
<p class="section-subtitle text-center mb-5">Wir arbeiten mit handverlesenen Produzenten zusammen, die unsere Werte teilen und hochwertige Bio-Produkte herstellen.</p>
<div class="suppliers-grid">
<div class="supplier-card">
<img src="https://frida-fred.com/wp-content/uploads/elementor/thumbs/liferant-baldauf-oxtu87bv6c9as07ddbndrkbajq9xunvvwprli30114.png" alt="Käserei Baldauf" class="supplier-image">
<!-- <div class="supplier-icon">
<i class="fas fa-cow"></i>
</div> -->
<h3>Käserei Baldauf</h3>
<p>Gegründet 1862 und seit fünf Generationen im Besitz der Familie Baldauf. Specialisiert auf beste Allgäuer Käsespezialitäten aus Heumilch. Für ihre Käseherstellung wird ausschließlich naturbelassene Heumilch verwendet.</p>
<a href="https://www.baldauf-kaese.de/" target="_blank" rel="noopener noreferrer" class="link-arrow">Produkte entdecken</a>
</div>
<div class="supplier-card">
<img src="https://weingut-haug.de/index.php?rex_media_file=picknick_0081.jpg&rex_media_type=modulevideo" alt="Weingut Haug" class="supplier-image">
<!-- <div class="supplier-icon">
<i class="fas fa-wine-bottle"></i>
</div> -->
<h3>Weingut Haug</h3>
<p>Hochwertige Weine vom Bodensee. Das Weingut Haug steht für traditionelle Weinbaukunst und nachhaltige Anbaumethoden in der Region Lindau.</p>
<a href="https://weingut-haug.de/" target="_blank" rel="noopener noreferrer" class="link-arrow">Produkte entdecken</a>
</div>
<div class="supplier-card">
<img src="https://www.weber-roesterei.de/content/images_con/17020422247222.jpg" alt="Rösterei Weber" class="supplier-image">
<!-- <div class="supplier-icon">
<i class="fas fa-coffee"></i>
</div> -->
<h3>Rösterei Weber</h3>
<p>Hochwertige handwerklich geröstete Kaffeespezialitäten. Rösterei Weber garantiert faire Sourcing-Praktiken und höchste Qualitätsstandards für alle Kaffeesorten.</p>
<a href="https://www.weber-roesterei.de/" target="_blank" rel="noopener noreferrer" class="link-arrow">Produkte entdecken</a>
</div>
<div class="supplier-card">
<img src="img/puntzelhof.jpg" alt="Puntzelhof" class="supplier-image">
<!-- <div class="supplier-icon">
<i class="fas fa-handshake"></i>
</div> -->
<h3>Puntzelhof</h3>
<p>Naturverbundenes Familienunternehmen spezialisiert auf selbstgemachte Köstlichkeiten wie Marmelade, Honig, Senf und Essig. Nur natürliche Zutaten aus eigenem Bauerngarten und umliegenden Wiesen frei von Chemie und Pestiziden.</p>
<a href="https://frida-allgaeuer-schmankerl.de/marken/puntzelhof/" target="_blank" rel="noopener noreferrer" class="link-arrow">Produkte entdecken</a>
</div>
<div class="supplier-card">
<img src="https://allgaeuer-naturprodukte.de/thumbnail/24/8e/48/1686903376/allgaeuer-naturprodukte-shop_800x800.jpg" alt="Aurelia Kräuter" class="supplier-image">
<!-- <div class="supplier-icon">
<i class="fas fa-leaf"></i>
</div> -->
<h3>Aurelia Kräuter</h3>
<p>Hochwertige Kräuterspezialitäten mit Leidenschaft angebaut und verarbeitet. Aurelia bietet getrocknete und frische Bio-Kräuter für Küche, Tee und Wellness.</p>
<a href="https://allgaeuer-naturprodukte.de/" target="_blank" rel="noopener noreferrer" class="link-arrow">Produkte entdecken</a>
</div>
<div class="supplier-card">
<img src="img/weingut_aufricht.png" alt="Weingut Aufricht" class="supplier-image">
<!-- <div class="supplier-icon">
<i class="fas fa-leaf"></i>
</div> -->
<h3>Weingut Aufricht</h3>
<p>Das Weingut Aufricht aus Hagnau am Bodensee produziert exquisite Weine mit großer Sorgfalt. Natürliche Weinherstellung mit modernster Technik.</p>
<a href="#" target="_blank" rel="noopener noreferrer" class="link-arrow">Produkte entdecken</a>
</div>
<div class="supplier-card">
<img src="img/sell_gmachts.jpg" alt="Sell G'machts" class="supplier-image">
<!-- <div class="supplier-icon">
<i class="fas fa-jar"></i>
</div> -->
<h3>Sell G'machts</h3>
<p>Traditionelle Allgäuer Spezialitäten mit handwerklicher Herstellung. Konfitüren, Marmeladen und Feinkost nach bewährten Rezepten der Region.</p>
<a href="#" target="_blank" rel="noopener noreferrer" class="link-arrow">Produkte entdecken</a>
</div>
<div class="supplier-card">
<img src="img/weingut_kress.jpg" alt="Weingut Kress" class="supplier-image">
<!-- <div class="supplier-icon">
<i class="fas fa-wine-bottle"></i>
</div> -->
<h3>Weingut Kress</h3>
<p>Qualitätsweine vom Bodensee aus dem Hause Kress in Überlingen. Bekannt für elegante und ausdrucksstarke Weine aus nachhaltiger Produktion.</p>
<a href="#" target="_blank" rel="noopener noreferrer" class="link-arrow">Produkte entdecken</a>
</div>
</div>
</div>
</section>
<!-- Footer -->
<footer class="site-footer">
<div class="container-fluid px-5">
<div class="footer-content">
<div class="footer-column">
<h4>Frida & Fred</h4>
<p>Ihre Adresse für Allgäuer Bio-Spezialitäten in Regensburg.</p>
<p style="margin-bottom: 0.5rem;">
<i class="fas fa-map-marker-alt" style="color: var(--secondary-color); margin-right: 8px;"></i>
Untere Bachgasse 3<br>
<i class="fas fa-city" style="color: var(--secondary-color); margin-right: 8px;"></i>
93047 Regensburg
</p>
<p style="margin-bottom: 0.5rem;">
<i class="fas fa-phone" style="color: var(--secondary-color); margin-right: 8px;"></i>
<a href="tel:+4994160093260">0941 60093260</a><br>
<i class="fas fa-mobile" style="color: var(--secondary-color); margin-right: 8px;"></i>
<a href="tel:+49015119426530">0151 19426530</a>
</p>
<p style="margin-bottom: 1.5rem;">
<i class="fas fa-envelope" style="color: var(--secondary-color); margin-right: 8px;"></i>
<a href="mailto:info@frida-fred.com">info@frida-fred.com</a>
</p>
<div class="social-links">
<!-- <a href="#" title="Facebook"><i class="fab fa-facebook-f"></i></a> -->
<a href="https://www.instagram.com/fridaundfred_regensburg?igsh=MXd4Nm91dHR3ejZ6YQ==" title="Instagram"><i class="fab fa-instagram"></i></a>
<!-- <a href="#" title="Twitter"><i class="fab fa-twitter"></i></a> -->
</div>
</div>
<div class="footer-column">
<h4>Öffnungszeiten</h4>
<p style="margin-bottom: 0.5rem;">
<strong>Montag:</strong><br>
Geschlossen
</p>
<p style="margin-bottom: 0;">
<strong>Dienstag - Samstag:</strong><br>
09:00 19:00 Uhr
</p>
</div>
<div class="footer-column">
<h4>Navigation</h4>
<ul>
<li><a href="index.html#about">Über uns</a></li>
<li><a href="index.html#produkte">Produkte</a></li>
<li><a href="index.html#services">Services</a></li>
<li><a href="lieferanten.html">Lieferanten</a></li>
</ul>
</div>
<div class="footer-column">
<h4>Rechtliches</h4>
<ul>
<li><a href="#">Datenschutz</a></li>
<li><a href="#">Impressum</a></li>
<li><a href="#">AGB</a></li>
</ul>
</div>
</div>
<div class="footer-bottom">
<p>&copy; 2026 Frida & Fred. Alle Rechte vorbehalten. | <a href="datenschutz.html">Datenschutz</a> | <a href="impressum.html">Impressum</a> | <a href="agb.html">AGB</a></p>
</div>
</div>
</footer>
<script src="lib/bootstrap.bundle.min.js"></script>
<script>
// Smooth scrolling for internal links
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener('click', function (e) {
e.preventDefault();
const target = document.querySelector(this.getAttribute('href'));
if (target) {
target.scrollIntoView({
behavior: 'smooth',
block: 'start'
});
}
});
});
// Active nav link on scroll
window.addEventListener('scroll', function() {
let current = '';
const sections = document.querySelectorAll('section');
sections.forEach(section => {
const sectionTop = section.offsetTop;
const sectionHeight = section.clientHeight;
if (pageYOffset >= sectionTop - 200) {
current = section.getAttribute('id');
}
});
document.querySelectorAll('.nav-link').forEach(link => {
link.classList.remove('active');
if (link.getAttribute('href') === '#' + current) {
link.classList.add('active');
}
});
});
</script>
<!-- Back to Top Button -->
<a href="#" class="back-to-top" id="backToTop" aria-label="Nach oben scrollen">
<i class="fas fa-chevron-up"></i>
</a>
<script>
// Show/hide back to top button
window.addEventListener('scroll', function() {
const backToTop = document.getElementById('backToTop');
if (window.pageYOffset > 300) {
backToTop.classList.add('visible');
} else {
backToTop.classList.remove('visible');
}
});
</script>
</body>
</html>

1
site.webmanifest Normal file
View File

@@ -0,0 +1 @@
{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"}