diff --git a/Dockerfile b/Dockerfile index d0d4b6f..a5cf7d4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -7,4 +7,5 @@ RUN npm run build FROM nginx:alpine COPY --from=build /app/dist /usr/share/nginx/html +COPY nginx.conf /etc/nginx/conf.d/default.conf EXPOSE 80 diff --git a/nginx.conf b/nginx.conf new file mode 100644 index 0000000..f749e02 --- /dev/null +++ b/nginx.conf @@ -0,0 +1,9 @@ +server { + listen 80; + root /usr/share/nginx/html; + index index.html; + + location / { + try_files $uri $uri/ /index.html; + } +} diff --git a/src/App.tsx b/src/App.tsx index 4ea3fb6..6c0a946 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -8,8 +8,15 @@ import Process from './components/Process'; import Audience from './components/Audience'; import CTASection from './components/CTASection'; import Footer from './components/Footer'; +import PrivacyPolicyPage from './components/PrivacyPolicyPage'; function App() { + const path = window.location.pathname.replace(/\/$/, '') || '/'; + + if (path === '/privacy') { + return ; + } + return (
diff --git a/src/components/Footer.tsx b/src/components/Footer.tsx index 4ec9ffc..aab1dbe 100644 --- a/src/components/Footer.tsx +++ b/src/components/Footer.tsx @@ -36,8 +36,8 @@ const Footer = () => {

Prywatność

diff --git a/src/components/PrivacyPolicyPage.tsx b/src/components/PrivacyPolicyPage.tsx new file mode 100644 index 0000000..6381a0f --- /dev/null +++ b/src/components/PrivacyPolicyPage.tsx @@ -0,0 +1,45 @@ +import React from 'react'; +import { useT } from '../i18n'; +import Footer from './Footer'; + +const PrivacyPolicyPage = () => { + const t = useT(); + + return ( +
+
+
+ + humanAI + + + {t.privacy.backToHome} + +
+
+ +
+

{t.privacy.title}

+

{t.privacy.lastUpdated}

+

{t.privacy.intro}

+ +
+ {t.privacy.sections.map((section, i) => ( +
+

{section.title}

+ {section.body.split('\n\n').map((paragraph, i) => ( +

+ {paragraph} +

+ ))} +
+ ))} +
+
+ +
+ ); +}; + +export default PrivacyPolicyPage; diff --git a/src/i18n/en.ts b/src/i18n/en.ts index 873a55b..5ea23fa 100644 --- a/src/i18n/en.ts +++ b/src/i18n/en.ts @@ -21,4 +21,36 @@ export const en = { generic: 'Please try again or email us directly at hello@gethumanai.pl.', }, }, + privacy: { + title: 'Privacy Policy', + lastUpdated: 'Last updated: June 2026', + intro: 'This privacy policy describes how humanAI (gethumanai.pl) processes personal data and protects the privacy of its users.', + backToHome: '← Back to homepage', + sections: [ + { + title: '1. Data Controller', + body: 'The data controller is humanAI, reachable at hello@gethumanai.pl. For any privacy-related questions, please contact us at that address.', + }, + { + title: '2. Contact Form', + body: 'When you fill out the contact form on our website, we collect your name, email address, and the content of your message. This data is used solely to respond to your enquiry and is not shared with any third parties.', + }, + { + title: '3. Analytics and Website Statistics', + body: 'We use Umami Analytics — an open-source tool hosted on our own servers (stats.gethumanai.pl). Umami collects anonymous visit statistics: page views, traffic source, approximate country, device type, operating system, and browser.\n\nUmami does not use cookies and does not track users across sessions. The data collected is fully anonymised and cannot be used to identify any individual. All data remains on our servers and is not shared with third parties.\n\nYou can prevent statistics from being collected by disabling JavaScript in your browser or using a script-blocking extension.', + }, + { + title: '4. Cookies', + body: 'Our website does not use cookies for tracking or advertising purposes. We do not set any analytics or marketing cookies. Umami Analytics, which we use, is intentionally designed as a cookie-free tool — all data is collected anonymously at the session level and is not stored in your browser.', + }, + { + title: '5. Your Rights', + body: 'You have the right to access, correct, delete, and object to the processing of your personal data. To exercise these rights, please write to hello@gethumanai.pl.', + }, + { + title: '6. Changes to This Policy', + body: 'We reserve the right to update this privacy policy. Any significant changes will be announced on this page.', + }, + ], + }, }; diff --git a/src/i18n/pl.ts b/src/i18n/pl.ts index b6d5aff..bdd7459 100644 --- a/src/i18n/pl.ts +++ b/src/i18n/pl.ts @@ -21,4 +21,36 @@ export const pl = { generic: 'Spróbuj ponownie lub napisz bezpośrednio na hello@gethumanai.pl.', }, }, + privacy: { + title: 'Polityka prywatności', + lastUpdated: 'Ostatnia aktualizacja: czerwiec 2026', + intro: 'Niniejsza polityka prywatności opisuje, w jaki sposób humanAI (gethumanai.pl) przetwarza dane osobowe i dba o prywatność użytkowników.', + backToHome: '← Wróć na stronę główną', + sections: [ + { + title: '1. Administrator danych', + body: 'Administratorem danych osobowych jest humanAI, dostępny pod adresem hello@gethumanai.pl. W sprawach dotyczących prywatności możesz skontaktować się z nami, pisząc na ten adres.', + }, + { + title: '2. Formularz kontaktowy', + body: 'Gdy wypełniasz formularz kontaktowy na naszej stronie, zbieramy Twoje imię, adres e-mail oraz treść wiadomości. Dane te są wykorzystywane wyłącznie w celu odpowiedzi na Twoje zapytanie i nie są udostępniane podmiotom trzecim.', + }, + { + title: '3. Analityka i statystyki odwiedzin', + body: 'Używamy narzędzia Umami Analytics — oprogramowania open-source zainstalowanego na naszych własnych serwerach (stats.gethumanai.pl). Umami zbiera anonimowe statystyki odwiedzin: liczba odsłon, źródło ruchu, przybliżony kraj, typ urządzenia, system operacyjny i przeglądarka.\n\nUmami nie używa plików cookies ani nie śledzi użytkowników między sesjami. Zbierane dane są w pełni anonimowe i nie pozwalają na identyfikację konkretnej osoby. Dane pozostają na naszych serwerach i nie są przekazywane podmiotom trzecim.\n\nMożesz zablokować zbieranie statystyk, wyłączając JavaScript w przeglądarce lub korzystając z rozszerzenia blokującego skrypty.', + }, + { + title: '4. Pliki cookies', + body: 'Nasza strona internetowa nie używa plików cookies do śledzenia użytkowników ani celów reklamowych. Nie instalujemy żadnych analitycznych ani marketingowych plików cookies. Umami Analytics, z którego korzystamy, celowo zaprojektowano jako narzędzie wolne od cookies — wszystkie dane zbierane są anonimowo na poziomie sesji i nie są zapisywane w Twojej przeglądarce.', + }, + { + title: '5. Twoje prawa', + body: 'Masz prawo do dostępu do swoich danych, ich sprostowania, usunięcia oraz wniesienia sprzeciwu wobec ich przetwarzania. Aby skorzystać z tych praw, napisz na hello@gethumanai.pl.', + }, + { + title: '6. Zmiany polityki prywatności', + body: 'Zastrzegamy sobie prawo do zmiany niniejszej polityki prywatności. O wszelkich istotnych zmianach będziemy informować na tej stronie.', + }, + ], + }, };