Skip to content

Privacy policy consent #38

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Apr 12, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .ai/tech-stack.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ AI - Komunikacja z modelami przez usługę Openrouter.ai:
CI/CD i Hosting:

- Github Actions do tworzenia pipeline'ów CI/CD
- Cloudflare Pages do hostingu - workflow `master.yml`

Testing:

Expand Down
18 changes: 18 additions & 0 deletions .cursor/rules/astro.mdc
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
description: Building server-side Astro pages
globs:
alwaysApply: false
---
### Guidelines for Astro

- Use content collections with type safety for blog posts, documentation, etc.
- Leverage Server Endpoints for API routes
- Use POST, GET - uppercase format for endpoint handlers
- Use `export const prerender = false` for API routes
- Use zod for input validation in API routes
- Implement or reuse middleware for request/response modification
- Use image optimization with the Astro Image integration
- Implement hybrid rendering with server-side rendering where needed
- Use Astro.cookies for server-side cookie management
- Leverage import.meta.env for environment variables
- Always check if you're asked to create public or private pages (if public, update `src/middleware/index.ts`) to allow non-auth browsing
3 changes: 1 addition & 2 deletions .github/workflows/master.yml
Original file line number Diff line number Diff line change
Expand Up @@ -68,11 +68,10 @@ jobs:

- name: Build Astro site
env:
# Environment variables needed for the build process
# These should be configured as secrets in the 'production' environment on GitHub
PUBLIC_ENV_NAME: ${{ secrets.PUBLIC_ENV_NAME }}
SUPABASE_URL: ${{ secrets.SUPABASE_URL }}
SUPABASE_PUBLIC_KEY: ${{ secrets.SUPABASE_PUBLIC_KEY }}
SUPABASE_SERVICE_ROLE_KEY: ${{ secrets.SUPABASE_SERVICE_ROLE_KEY }}
run: npm run build

- name: Deploy to Cloudflare Pages
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/pull-request.yml
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@ jobs:
echo "PUBLIC_ENV_NAME=${{ secrets.PUBLIC_ENV_NAME }}" > .env.integration
echo "SUPABASE_URL=${{ secrets.SUPABASE_URL }}" >> .env.integration
echo "SUPABASE_PUBLIC_KEY=${{ secrets.SUPABASE_PUBLIC_KEY }}" >> .env.integration
echo "SUPABASE_SERVICE_ROLE_KEY=${{ secrets.SUPABASE_SERVICE_ROLE_KEY }}" >> .env.integration
echo "E2E_USERNAME_ID=${{ secrets.E2E_USERNAME_ID }}" >> .env.integration
echo "E2E_USERNAME=${{ secrets.E2E_USERNAME }}" >> .env.integration
echo "E2E_PASSWORD=${{ secrets.E2E_PASSWORD }}" >> .env.integration
Expand Down
1 change: 1 addition & 0 deletions astro.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ export default defineConfig({
schema: {
SUPABASE_URL: envField.string({ context: 'server', access: 'secret' }),
SUPABASE_PUBLIC_KEY: envField.string({ context: 'server', access: 'secret' }),
SUPABASE_SERVICE_ROLE_KEY: envField.string({ context: 'server', access: 'secret' }),
},
},
vite: {
Expand Down
45 changes: 45 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"type": "module",
"version": "0.0.1",
"scripts": {
"dev": "astro dev",
"dev": "astro dev -- --mode local",
"dev:e2e": "npm run astro dev -- --mode integration",
"build": "astro build",
"preview": "astro preview",
Expand Down Expand Up @@ -44,6 +44,7 @@
},
"devDependencies": {
"@playwright/test": "1.51.1",
"@tailwindcss/typography": "0.5.16",
"@testing-library/dom": "10.4.0",
"@testing-library/jest-dom": "6.6.3",
"@testing-library/react": "16.2.0",
Expand Down
108 changes: 108 additions & 0 deletions src/assets/privacy-policy/pp-13-04-2025-en.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
# Privacy Policy – 10xRules.ai

**Last updated:** April 13, 2025

## 1. Data Controller

The data controller is the Przeprogramowani team (Przemek Smyrdek and Marcin Czarkowski), responsible for the development of the "10xRules.ai" application, based in Poland.

You can contact the Data Controller at: [email protected]

## 2. Scope of Collected Data

As part of using the 10xRules.ai application, we collect the following data:

- Basic user profile: email address
- Encrypted password (managed by Supabase Auth)

## 3. Legal Basis for Processing

The processing of personal data takes place on the basis of:

- Article 6(1)(b) GDPR – processing is necessary for the performance of a contract to which the data subject is party (using the 10xRules.ai application constitutes entering into an agreement for the provision of electronic services)
- Article 6(1)(f) GDPR – processing is necessary for the purposes of the legitimate interests pursued by the controller (ensuring the security and functionality of the application)

## 4. Purposes of Data Processing

Personal data is processed for the purpose of:

- Enabling registration and login to the 10xRules.ai application
- Ensuring the proper functioning of all application features
- Ensuring security of application usage
- Contact regarding technical matters and handling user requests

## 5. Optional Account Creation

Creating an account in the 10xRules.ai application is completely optional. The application offers a basic range of functions without the need for registration. However, creating a user account provides access to additional functionalities:

- Creating and managing your own collections of rules
- Personalization of existing rules
- Saving user preferences

By creating an account, the user consents to the processing of their data in accordance with this Privacy Policy.

## 6. Method and Location of Processing

- The application is hosted on Cloudflare infrastructure, which may use servers in various locations, including outside the European Economic Area.
- Data is stored in the Supabase database located in the eu-central-1 region (Frankfurt, Germany), which means that the main user data remains within the European Union.

## 7. Data Retention Period

Users' personal data is stored for the period of having an active account in the 10xRules.ai application. After deleting the account, the data is permanently removed from our systems, with the exception of data that may be stored longer due to applicable law (e.g., billing data).

## 8. Data Recipients

User data is not shared with any external companies besides the service providers necessary for the application to function:

- Supabase – provider of database and authentication services
- Cloudflare – provider of hosting and security services

The listed service providers have access to user data only to the extent necessary to provide their services and are subject to appropriate data protection obligations.

## 9. Transfer of Data to Third Countries

In connection with the use of Cloudflare services, some data may be processed on servers located outside the European Economic Area (EEA). In such cases, we ensure that data transfer takes place with appropriate safeguards, such as standard contractual clauses approved by the European Commission.

## 10. Cookies and Other Tracking Technologies

The 10xRules.ai application uses basic cookies necessary for the proper functioning of the application, in particular for managing user sessions and ensuring security. These cookies are necessary for using the application and do not require separate user consent in accordance with legal regulations.

## 11. Automated Decision-Making and Profiling

The 10xRules.ai application does not use automated decision-making or profiling within the meaning of GDPR.

## 12. User Rights

Each user has the following rights:

- Right of access to their personal data
- Right to rectification (correction) of their data
- Right to erasure of data (right to be forgotten)
- Right to restriction of processing
- Right to data portability
- Right to object to the processing of data
- Right to withdraw consent at any time, if processing is based on consent
- Right to lodge a complaint with a supervisory authority (President of the Personal Data Protection Office)

To exercise the above rights, please contact us at: [email protected]

To delete your account, please send a message to [email protected] with a request to delete the account.

## 13. Security

We make every effort to secure user data by using, among others:

- Password encryption (we never store passwords in plain text)
- Security measures offered by Cloudflare and Supabase platforms
- Connection encryption using HTTPS protocol
- Regular security updates

## 14. Changes to the Privacy Policy

The Controller reserves the right to make changes to the Privacy Policy. Users will be informed of any changes via email associated with the user's account. Continued use of the application after the changes have been made constitutes acceptance of the new version of the Privacy Policy.

## 15. Final Provisions

- The application may contain links to external websites or services; we are not responsible for their privacy policies.
- By using the 10xRules.ai application, the user accepts this Privacy Policy.
- In matters not regulated by this Privacy Policy, the relevant provisions of law shall apply, in particular Regulation (EU) 2016/679 of the European Parliament and of the Council of 27 April 2016 (GDPR).
108 changes: 108 additions & 0 deletions src/assets/privacy-policy/pp-13-04-2025-pl.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
# Polityka Prywatności – 10xRules.ai

**Data ostatniej aktualizacji:** 13 kwietnia 2025

## 1. Administrator Danych

Administratorem danych osobowych jest zespół Przeprogramowani (Przemek Smyrdek i Marcin Czarkowski), odpowiedzialny za rozwój aplikacji „10xRules.ai", z siedzibą w Polsce.

Kontakt z Administratorem możliwy jest pod adresem e-mail: [email protected]

## 2. Zakres Gromadzonych Danych

W ramach korzystania z aplikacji 10xRules.ai gromadzimy następujące dane:

- Podstawowy profil użytkownika: adres e-mail
- Zaszyfrowane hasło (zarządzane przez Supabase Auth)

## 3. Podstawa Prawna Przetwarzania

Przetwarzanie danych osobowych odbywa się na podstawie:

- Art. 6 ust. 1 lit. b RODO – przetwarzanie jest niezbędne do wykonania umowy, której stroną jest osoba, której dane dotyczą (korzystanie z aplikacji 10xRules.ai stanowi zawarcie umowy o świadczenie usług drogą elektroniczną)
- Art. 6 ust. 1 lit. f RODO – przetwarzanie jest niezbędne do celów wynikających z prawnie uzasadnionych interesów realizowanych przez administratora (zapewnienie bezpieczeństwa i funkcjonalności aplikacji)

## 4. Cele Przetwarzania Danych

Dane osobowe są przetwarzane w celu:

- Umożliwienia rejestracji i logowania do aplikacji 10xRules.ai
- Zapewnienia prawidłowego funkcjonowania wszystkich funkcji aplikacji
- Zapewnienia bezpieczeństwa korzystania z aplikacji
- Kontaktu w sprawach technicznych i obsługi zgłoszeń użytkowników

## 5. Opcjonalność Posiadania Konta

Zakładanie konta w aplikacji 10xRules.ai jest całkowicie opcjonalne. Aplikacja oferuje podstawowy zakres funkcji bez konieczności rejestracji. Jednakże utworzenie konta użytkownika zapewnia dostęp do dodatkowych funkcjonalności:

- Tworzenie i zarządzanie własnymi kolekcjami reguł
- Personalizacja istniejących reguł
- Zapisywanie preferencji użytkownika

Decydując się na założenie konta, użytkownik wyraża zgodę na przetwarzanie swoich danych zgodnie z niniejszą Polityką Prywatności.

## 6. Sposób i Miejsce Przetwarzania

- Aplikacja jest hostowana na infrastrukturze Cloudflare, która może wykorzystywać serwery w różnych lokalizacjach, w tym poza Europejskim Obszarem Gospodarczym.
- Dane przechowywane są w bazie Supabase zlokalizowanej w regionie eu-central-1 (Frankfurt, Niemcy), co oznacza, że główne dane użytkowników pozostają na terenie Unii Europejskiej.

## 7. Okres Przechowywania Danych

Dane osobowe użytkowników są przechowywane przez okres posiadania aktywnego konta w aplikacji 10xRules.ai. Po usunięciu konta dane są trwale usuwane z naszych systemów, z zastrzeżeniem danych, które mogą być przechowywane dłużej ze względu na obowiązujące przepisy prawa (np. dane rozliczeniowe).

## 8. Odbiorcy Danych

Dane użytkowników nie są udostępniane żadnym firmom zewnętrznym poza dostawcami usług niezbędnych do funkcjonowania aplikacji:

- Supabase – dostawca usług bazodanowych i uwierzytelniania
- Cloudflare – dostawca usług hostingowych i zabezpieczających

Wymienieni dostawcy usług mają dostęp do danych użytkowników wyłącznie w zakresie niezbędnym do świadczenia swoich usług i podlegają odpowiednim zobowiązaniom dotyczącym ochrony danych.

## 9. Przekazywanie Danych do Państw Trzecich

W związku z korzystaniem z usług Cloudflare, niektóre dane mogą być przetwarzane na serwerach zlokalizowanych poza Europejskim Obszarem Gospodarczym (EOG). W takich przypadkach zapewniamy, że transfer danych odbywa się z zachowaniem odpowiednich zabezpieczeń, takich jak standardowe klauzule umowne zatwierdzone przez Komisję Europejską.

## 10. Pliki Cookie i Inne Technologie Śledzenia

Aplikacja 10xRules.ai wykorzystuje podstawowe pliki cookie niezbędne do prawidłowego funkcjonowania aplikacji, w szczególności do zarządzania sesją użytkownika i zapewnienia bezpieczeństwa. Pliki te są niezbędne do korzystania z aplikacji i nie wymagają osobnej zgody użytkownika zgodnie z przepisami prawa.

## 11. Zautomatyzowane Podejmowanie Decyzji i Profilowanie

Aplikacja 10xRules.ai nie wykorzystuje zautomatyzowanego podejmowania decyzji ani profilowania w rozumieniu RODO.

## 12. Prawa Użytkownika

Każdemu użytkownikowi przysługują następujące prawa:

- Prawo dostępu do swoich danych osobowych
- Prawo do sprostowania (poprawiania) swoich danych
- Prawo do usunięcia danych (prawo do bycia zapomnianym)
- Prawo do ograniczenia przetwarzania danych
- Prawo do przenoszenia danych
- Prawo do sprzeciwu wobec przetwarzania danych
- Prawo do cofnięcia zgody w dowolnym momencie, jeżeli przetwarzanie odbywa się na podstawie zgody
- Prawo do wniesienia skargi do organu nadzorczego (Prezes Urzędu Ochrony Danych Osobowych)

W celu realizacji powyższych praw, prosimy o kontakt pod adresem: [email protected]

W celu usunięcia konta należy wysłać wiadomość na adres [email protected] z prośbą o usunięcie konta.

## 13. Bezpieczeństwo

Dokładamy wszelkich starań, aby zabezpieczyć dane użytkowników, stosując m.in.:

- Szyfrowanie haseł (nigdy nie przechowujemy haseł w formie jawnej)
- Zabezpieczenia oferowane przez platformy Cloudflare i Supabase
- Szyfrowanie połączeń za pomocą protokołu HTTPS
- Regularne aktualizacje zabezpieczeń

## 14. Zmiany Polityki Prywatności

Administrator zastrzega sobie prawo do wprowadzania zmian w Polityce Prywatności. O wszelkich zmianach użytkownicy będą informowani za pośrednictwem wiadomości e-mail przypisanej do konta użytkownika. Korzystanie z aplikacji po wprowadzeniu zmian jest równoznaczne z akceptacją nowej wersji Polityki Prywatności.

## 15. Postanowienia Końcowe

- Aplikacja może zawierać linki do zewnętrznych stron lub usług; nie ponosimy odpowiedzialności za ich polityki prywatności.
- Korzystając z aplikacji 10xRules.ai, użytkownik akceptuje niniejszą Politykę Prywatności.
- W sprawach nieuregulowanych niniejszą Polityką Prywatności zastosowanie mają odpowiednie przepisy prawa, w szczególności Rozporządzenie Parlamentu Europejskiego i Rady (UE) 2016/679 z dnia 27 kwietnia 2016 r. (RODO).
30 changes: 30 additions & 0 deletions src/components/auth/SignupForm.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,36 @@ export const SignupForm: React.FC = () => {
{...register('confirmPassword')}
/>

<div className="space-y-2">
<div className="flex items-start">
<div className="flex items-center h-5">
<input
id="privacy-policy"
type="checkbox"
className="w-4 h-4 border border-gray-300 rounded bg-gray-50 focus:ring-3 focus:ring-blue-300 dark:bg-gray-700 dark:border-gray-600 dark:focus:ring-blue-600"
{...register('privacyPolicyConsent')}
disabled={isLoading}
/>
</div>
<div className="ml-3 text-sm">
<label htmlFor="privacy-policy" className="font-medium text-gray-300">
I agree to the{' '}
<a
href="/privacy/en"
className="text-blue-400 hover:text-blue-300"
target="_blank"
rel="noopener noreferrer"
>
Privacy Policy
</a>
</label>
{errors.privacyPolicyConsent && (
<p className="mt-1 text-sm text-red-500">{errors.privacyPolicyConsent.message}</p>
)}
</div>
</div>
</div>

<button
type="submit"
disabled={isLoading}
Expand Down
Loading