diff --git a/.env.example b/.env.example
index bdaef77..e27a96b 100644
--- a/.env.example
+++ b/.env.example
@@ -31,3 +31,9 @@ EMAIL_HOST_PASSWORD=your-app-specific-password
# The base URL of the backend API (e.g., https://holy.narl.io/api/)
VITE_API_URL=http://localhost:8000/api/
VITE_ALLOWED_HOSTS=localhost
+
+# --- Impressum / Contact Details (Legal) ---
+VITE_IMPRESSUM_NAME="Your Name or Project Name"
+VITE_IMPRESSUM_STREET="Your Street Address"
+VITE_IMPRESSUM_CITY="Postal Code and City"
+VITE_IMPRESSUM_EMAIL="your-support@email.com"
diff --git a/docker-compose.yml b/docker-compose.yml
index 5c7dba2..063d1b8 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -29,6 +29,10 @@ services:
context: ./frontend
args:
- VITE_API_URL=https://holy.narl.io/api/
+ - VITE_IMPRESSUM_NAME=${VITE_IMPRESSUM_NAME}
+ - VITE_IMPRESSUM_STREET=${VITE_IMPRESSUM_STREET}
+ - VITE_IMPRESSUM_CITY=${VITE_IMPRESSUM_CITY}
+ - VITE_IMPRESSUM_EMAIL=${VITE_IMPRESSUM_EMAIL}
container_name: holy-frontend
restart: unless-stopped
networks:
diff --git a/frontend/Dockerfile b/frontend/Dockerfile
index acbe73a..fa016c0 100644
--- a/frontend/Dockerfile
+++ b/frontend/Dockerfile
@@ -7,7 +7,16 @@ COPY . .
# Pass VITE environment variables during build
ARG VITE_API_URL
+ARG VITE_IMPRESSUM_NAME
+ARG VITE_IMPRESSUM_STREET
+ARG VITE_IMPRESSUM_CITY
+ARG VITE_IMPRESSUM_EMAIL
+
ENV VITE_API_URL=${VITE_API_URL}
+ENV VITE_IMPRESSUM_NAME=${VITE_IMPRESSUM_NAME}
+ENV VITE_IMPRESSUM_STREET=${VITE_IMPRESSUM_STREET}
+ENV VITE_IMPRESSUM_CITY=${VITE_IMPRESSUM_CITY}
+ENV VITE_IMPRESSUM_EMAIL=${VITE_IMPRESSUM_EMAIL}
RUN npm run build
diff --git a/frontend/src/pages/About.tsx b/frontend/src/pages/About.tsx
index c6e835b..2f4a057 100644
--- a/frontend/src/pages/About.tsx
+++ b/frontend/src/pages/About.tsx
@@ -47,16 +47,16 @@ const About: React.FC = () => {
Impressum
Angaben gemäß § 5 TMG:
- [Your Name or Project Name]
- [Your Street Address]
- [Postal Code and City]
+ {import.meta.env.VITE_IMPRESSUM_NAME || '[Your Name or Project Name]'}
+ {import.meta.env.VITE_IMPRESSUM_STREET || '[Your Street Address]'}
+ {import.meta.env.VITE_IMPRESSUM_CITY || '[Postal Code and City]'}
Germany
Kontakt:
- E-Mail: [Your Support Email Address]
+ E-Mail: {import.meta.env.VITE_IMPRESSUM_EMAIL || '[Your Support Email Address]'}
Internet: holy.narl.io
@@ -64,9 +64,9 @@ const About: React.FC = () => {
Verantwortlich für den Inhalt nach § 55 Abs. 2 RStV:
- [Your Name]
- [Your Street Address]
- [Postal Code and City]
+ {import.meta.env.VITE_IMPRESSUM_NAME || '[Your Name]'}
+ {import.meta.env.VITE_IMPRESSUM_STREET || '[Your Street Address]'}
+ {import.meta.env.VITE_IMPRESSUM_CITY || '[Postal Code and City]'}
diff --git a/frontend/src/pages/MainPage.tsx b/frontend/src/pages/MainPage.tsx
index 579596f..b700d7f 100644
--- a/frontend/src/pages/MainPage.tsx
+++ b/frontend/src/pages/MainPage.tsx
@@ -210,246 +210,123 @@ const MainPage: React.FC = () => {
const currentTop = topFlavors[activeIndex];
const featuredReview = currentTop?.ratings?.find(r => r.comment) || null;
- return (
-
-
-
- {/* 1. Hero Section / Activity Feed */}
-
- {isLoggedIn ? (
-
- theme.palette.mode === 'dark'
-
- ? 'linear-gradient(180deg, rgba(0,0,0,0.3) 0%, rgba(0,0,0,0) 100%)'
-
- : 'linear-gradient(180deg, rgba(0,0,0,0.05) 0%, rgba(0,0,0,0) 100%)',
-
- borderBottom: '1px solid',
-
- borderColor: 'divider',
-
- mb: 4
-
- }}>
-
-
-
-
-
-
-
- Community Activity
-
- Latest reviews from people you follow
-
-
-
-
-
+ return (
+
+ {/* Hero Section / Activity Feed */}
+ {isLoggedIn ? (
+ theme.palette.mode === 'dark'
+ ? 'linear-gradient(180deg, rgba(0,0,0,0.3) 0%, rgba(0,0,0,0) 100%)'
+ : 'linear-gradient(180deg, rgba(0,0,0,0.05) 0%, rgba(0,0,0,0) 100%)',
+ borderBottom: '1px solid',
+ borderColor: 'divider',
+ mb: 4
+ }}>
+
+
+
+ Community Activity
+ Latest reviews from people you follow
-
-
-
- {feedRatings.length === 0 ? (
-
-
-
- Your feed is a bit quiet
-
- Follow more users to see their activity here!
-
-
-
-
-
- ) : (
-
-
-
- {feedRatings.map(rating => (
-
-
-
-
-
-
-
-
-
-
-
- {!rating.user_avatar && rating.user.charAt(0).toUpperCase()}
-
-
-
- {rating.user}
-
-
-
- rated
-
-
-
-
-
- {new Date(rating.created_at).toLocaleDateString()}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {rating.flavor_name}
-
-
-
-
-
-
-
- {/* Compact rating for anything below Large desktop to prevent cutoffs */}
-
-
-
-
-
- {rating.score}/10
-
-
-
-
-
-
-
- {rating.score}/10
-
-
-
-
-
-
-
-
-
-
-
-
-
- ))}
-
-
-
- )}
-
-
-
-
-
- ) : (
-
- theme.palette.mode === 'dark'
-
- ? 'linear-gradient(135deg, #1a1a2e 0%, #16213e 100%)'
-
- : 'linear-gradient(135deg, #fdf6f7 0%, #f8e1e5 100%)',
-
- textAlign: 'center',
-
- borderBottom: '1px solid rgba(255,255,255,0.1)',
-
- width: '100%',
-
- boxSizing: 'border-box',
-
- overflow: 'hidden'
-
- }}
-
- >
-
-
-
- The Ultimate Holy Archive
-
-
-
-
-
- Browse every flavor ever released, discover new favorites, and share your ratings with the community.
-
-
-
-
-
-
-
-
- )}
-
-
-
-
-
-
-
-
-
-
-
-
+ {feedRatings.length === 0 ? (
+
+ Your feed is a bit quiet
+ Follow more users to see their activity here!
+ Explore Flavors
+
+ ) : (
+
+ {feedRatings.map(rating => (
+
+
+
+
+
+ {!rating.user_avatar && rating.user.charAt(0).toUpperCase()}
+
+ {rating.user}
+
+ rated
+
+
+ {new Date(rating.created_at).toLocaleDateString()}
+
+
+
+
+
+
+
+ {rating.flavor_name}
+
+
+
+ {/* Compact rating for anything below Large desktop to prevent cutoffs */}
+
+
+ {rating.score}/10
+
+
+
+ {rating.score}/10
+
+
+
+
+
+
+ ))}
+
+ )}
+
+
+ ) : (
+ theme.palette.mode === 'dark'
+ ? 'linear-gradient(135deg, #1a1a2e 0%, #16213e 100%)'
+ : 'linear-gradient(135deg, #fdf6f7 0%, #f8e1e5 100%)',
+ textAlign: 'center',
+ borderBottom: '1px solid rgba(255,255,255,0.1)',
+ width: '100%',
+ boxSizing: 'border-box',
+ overflow: 'hidden'
+ }}
+ >
+
+ The Ultimate Holy Archive
+
+
+ Browse every flavor ever released, discover new favorites, and share your ratings with the community.
+
+
+
+ Join Community
+
+
+ What is this for?
+
+
+
+ )}
+
+
{/* Hall of Fame Carousel - SIDE BY SIDE */}
{topFlavors.length > 0 && currentTop && (