diff --git a/frontend/public/content/about-us.md b/frontend/public/content/about-us.md
index 5c5ba71..01c4287 100644
--- a/frontend/public/content/about-us.md
+++ b/frontend/public/content/about-us.md
@@ -1,9 +1,33 @@
-Hi, I’m Radek – a software engineer, a West Coast Swing dancer and the person behind **spotlight.cam**.
+Hi, I'm Radek – a software engineer, a West Coast Swing dancer and the person behind **spotlight.cam**.
-Spotlight.cam is a project built by someone who actually stands in the same registration lines, dances in the same heats and scrolls through the same event pages as you :P
+Spotlight.cam is a project built by someone who actually stands in the same registration lines, dances in the same heats and scrolls through the same event pages as you :P
-If we ever meet at an event, I’ll probably be somewhere near the dance floor, probably pressing “record” on someone’s spotlight.
+If we ever meet at an event, I'll probably be somewhere near the dance floor, probably pressing "record" on someone's spotlight.
-To be fair, the original idea for this service was actually dropped on me by a friend who was tired of hunting for someone to film her dances – I just did what any backend developer / DevOps / Linux admin would do: said “okay, that shouldn’t be that hard… right?”, opened my editor, set up a few servers and scripts… and suddenly we had a new project on our hands 😅 I also had a not-so-secret teammate: AI. Without it, this would probably still be stuck in my “one day” folder for about a year 😄
\ No newline at end of file
+To be fair, the original idea for this service was actually dropped on me by a friend who was tired of hunting for someone to film her dances – I just did what any backend developer / DevOps / Linux admin would do: said "okay, that shouldn't be that hard… right?", opened my editor, set up a few servers and scripts… and suddenly we had a new project on our hands 😅 I also had a not-so-secret teammate: AI. Without it, this would probably still be stuck in my "one day" folder for about a year 😄
+
+---
+
+## Privacy & Cookies
+
+We use cookies and similar technologies to provide you with a better experience. Here's what you should know:
+
+### What cookies do we use?
+
+- **Essential cookies**: Required for authentication and core functionality (login sessions, security)
+- **Analytics**: To understand how people use the platform and improve it
+- **Preferences**: To remember your settings and preferences
+
+### Your data
+
+We respect your privacy and comply with GDPR/RODO regulations. We:
+- Only collect data necessary for the service to function
+- Never sell your personal information to third parties
+- Store your data securely
+- Allow you to delete your account and data at any time
+
+### Contact
+
+If you have any questions about privacy or cookies, feel free to reach out through our [contact page](/contact).
\ No newline at end of file
diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx
index 8e7f5e0..9a69c50 100644
--- a/frontend/src/App.jsx
+++ b/frontend/src/App.jsx
@@ -26,6 +26,7 @@ import HowItWorksPage from './pages/HowItWorksPage';
import NotFoundPage from './pages/NotFoundPage';
import VerificationBanner from './components/common/VerificationBanner';
import InstallPWA from './components/pwa/InstallPWA';
+import CookieConsent from './components/common/CookieConsent';
// Protected Route Component with Verification Banner
const ProtectedRoute = ({ children }) => {
@@ -77,6 +78,9 @@ function App() {
{/* PWA Install Prompt */}
+ {/* Cookie Consent Banner */}
+
+
{/* Toast Notifications */}
{
+ const [isVisible, setIsVisible] = useState(false);
+
+ useEffect(() => {
+ // Check if user has already consented
+ const hasConsented = localStorage.getItem('cookieConsent');
+ if (!hasConsented) {
+ // Show banner after a short delay for better UX
+ setTimeout(() => setIsVisible(true), 1000);
+ }
+ }, []);
+
+ const handleAccept = () => {
+ localStorage.setItem('cookieConsent', 'accepted');
+ setIsVisible(false);
+ };
+
+ const handleDecline = () => {
+ localStorage.setItem('cookieConsent', 'declined');
+ setIsVisible(false);
+ };
+
+ if (!isVisible) return null;
+
+ return (
+
+
+
+
+ {/* Icon */}
+
+
+
+
+
+
+ {/* Content */}
+
+
+ We use cookies
+
+
+ We use cookies and similar technologies to enhance your experience, analyze site traffic,
+ and for authentication purposes. By clicking "Accept", you consent to our use of cookies.{' '}
+
+ Learn more
+
+