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! + + + ) : ( + + {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. + + + + + + + )} + + {/* Hall of Fame Carousel - SIDE BY SIDE */} {topFlavors.length > 0 && currentTop && (