Skip to content

Commit d2b5189

Browse files
Dale KunceDale Kunce
authored andcommitted
Implement GDPR compliance and fix font sizing issues
- Add comprehensive GDPR compliance features: * Self-hosted fonts (Raleway, Lato, Hind) to replace Google Fonts API * Cookie consent banner with proper transparency and styling * GDPR-compliant Google Analytics implementation * Comprehensive privacy policy pages with HOT OSM-based content * Multilingual privacy policy support (EN, FR, ES, CS) * Section linking with anchor navigation for privacy policy - Fix typography and font sizing inconsistencies: * Establish proper base font-size (16px) on html element * Create consistent heading hierarchy (h1-h6) with responsive scaling * Convert all hardcoded pixel font sizes to rem units * Standardize component font sizes across blog, landing, and base styles * Implement proper rem-based typography system for better accessibility - Code organization improvements: * Move cookie consent styles to dedicated SCSS file * Organize font declarations in separate _fonts.scss * Improve SCSS architecture and maintainability Closes #387
1 parent 10e6dd6 commit d2b5189

20 files changed

+1098
-24
lines changed

app/_data/cs.yml

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -513,3 +513,47 @@ months:
513513
- Říjen
514514
- Listopad
515515
- Prosinec
516+
517+
####################
518+
## GDPR COMPLIANCE #
519+
####################
520+
gdpr:
521+
banner:
522+
title: "Souhlas s Cookies"
523+
message: "Používáme cookies k analýze návštěvnosti webu a zlepšení vašeho zážitku. Přijetím našeho používání cookies budou vaše data agregována se všemi ostatními uživatelskými daty pro analytické účely."
524+
accept: "Přijmout"
525+
reject: "Odmítnout"
526+
learn_more: "Více Informací"
527+
privacy_policy:
528+
title: "Zásady Ochrany Osobních Údajů"
529+
url: "/privacy-policy/"
530+
last_updated: "Poslední aktualizace: 5. října 2025"
531+
overview_title: "Přehled"
532+
overview_text: "Missing Maps se zavazuje chránit vaše soukromí. Tyto Zásady Ochrany Osobních Údajů vysvětlují, jak shromažďujeme, používáme a chráníme vaše informace při navštívě našich webových stránek."
533+
data_collection_title: "Sběr Dat"
534+
data_collection_text: "Shromažďujeme informace pro zlepšení vašeho zážitku a pochopení toho, jak jsou naše webové stránky používány. To zahrnuje:"
535+
data_types:
536+
- "Analytická data prostřednictvím Google Analytics (pouze s vaším souhlasem)"
537+
- "IP adresa (anonymizovaná pro analýzy)"
538+
- "Informace o prohlížeči a zařízení"
539+
- "Navštívené stránky a čas strávený na webu"
540+
cookies_title: "Cookies"
541+
cookies_text: "Používáme cookies pouze pro analytické účely. Používání cookies můžete ovládat prostřednictvím našeho souhlasného banneru. Používáme:"
542+
cookie_types:
543+
- "Základní cookies: Potřebné pro funkcionalitu webu"
544+
- "Analytické cookies: Google Analytics (pouze se souhlasem)"
545+
your_rights_title: "Vaše Práva"
546+
your_rights_text: "Pod GDPR máte právo na:"
547+
rights_list:
548+
- "Přístup k vašim osobním datům"
549+
- "Opravu nepřesných dat"
550+
- "Smazání vašich dat"
551+
- "Namítní proti zpracování dat"
552+
- "Zrušení souhlasu kdykoli"
553+
third_parties_title: "Služby Třetích Stran"
554+
third_parties_text: "Používáme Google Analytics pro analýzu webu (pouze s vaším souhlasem). Google Analytics je nakonfigurován s anonymizací IP a respektuje vaše volby soukromí."
555+
contact_title: "Kontaktujte Nás"
556+
contact_text: "Pokud máte otázky ohledně těchto Zásad Ochrany Osobních Údajů, kontaktujte nás prostřednictvím našich webových stránek nebo GitHub repozitáře."
557+
analytics_notice: "Analytické sledování je aktuálně"
558+
analytics_enabled: "povoleno"
559+
analytics_disabled: "zakázáno"

app/_data/en.yml

Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -508,3 +508,112 @@ months:
508508
- October
509509
- November
510510
- December
511+
512+
####################
513+
## GDPR COMPLIANCE #
514+
####################
515+
gdpr:
516+
banner:
517+
title: "Cookie Consent"
518+
message: "We use cookies to analyze website traffic and improve your experience. By accepting our use of cookies, your data will be aggregated with all other user data for analytics purposes."
519+
accept: "Accept"
520+
reject: "Reject"
521+
learn_more: "Learn More"
522+
privacy_policy:
523+
title: "Privacy Policy"
524+
url: "/privacy-policy/"
525+
last_updated: "Last updated: October 5, 2025"
526+
overview_title: "Overview"
527+
overview_text: "In general, we collect information about the actions that you take on our website, and we use this information to provide our services to you. You can access most features without creating an account or providing us with personal information. We use Google Analytics, a web analytics tool, to help us analyze data on website traffic and page views. We take steps to protect the personal information you provide us, such as by limiting access to the information to trained staff and volunteers, and only sharing your information as needed to provide services to you. We also provide you with certain choices regarding your personal information, and we aim to honor your preferences."
528+
529+
sections_title: "This Privacy Policy Contains the Following Sections:"
530+
sections_list:
531+
- "Information We Collect From You and How We Collect It"
532+
- "How And Why We Use the Information We Collect"
533+
- "How and When We Share Information"
534+
- "How We Protect Your Information"
535+
- "Your Choices Regarding Your Personal Information"
536+
- "Third-Party Websites and Services"
537+
- "Children's Privacy"
538+
- "Modifications to This Privacy Policy"
539+
- "How to Contact Us"
540+
541+
data_collection_title: "Information We Collect From You and How We Collect It"
542+
data_collection_text: "Depending on how you use our website and its features, we may collect information about you (sometimes referred to as \"personal information\"). The type of personal information we collect from or about you may include: name, email address, location information, and any other information you choose to provide to us. We may also collect information about the device you are using, such as the device's IP address."
543+
data_collection_when: "We may collect this information when you:"
544+
data_types:
545+
- "Contact us through the website or send an email"
546+
- "Sign up for our mailing list or newsletter"
547+
- "Connect with us via social media platforms"
548+
- "Use various functions of our website"
549+
- "Visit our website (through analytics)"
550+
551+
third_party_info_title: "Information Collected from Third Parties"
552+
third_party_info_text: "We may also collect information about you from third parties. In particular, if you have an OpenStreetMap (OSM) account, we may receive your user ID and display name for that account and information regarding your actions on OSM. Additionally, if you choose to authenticate using a social media account (e.g., Facebook or Google), we may collect, store, and use information you make available through that social media account. We treat any personal information we receive from these third parties consistent with this Privacy Policy."
553+
554+
cookies_title: "Cookies and Similar Technologies"
555+
cookies_text: "When you use our website, we, or third parties operating on our behalf, use cookies and similar technologies to collect information about the features that you access and use, and about the browser and computer or device you use to access our website. A cookie is a tiny file that a website stores on a visitor's computer or device. Missing Maps uses cookies to help us understand and remember your preferences and make our website more easily navigable and useful for you. We also use cookies to help us monitor and track how features are being used and evaluate the effectiveness of email campaigns."
556+
cookies_analytics: "We use Google Analytics across our website to help us collect the following information:"
557+
cookie_types:
558+
- "Log Information: information about visitors, including IP address, operating system, and browser ID"
559+
- "Usage Information: information about how visitors interact with our website, including what webpages were visited and for how long, the website the visitor navigated from, and the actions taken while using our website"
560+
561+
cookie_refuse_title: "How to Refuse the Use of Cookies"
562+
cookie_refuse_text: "Most browsers include tools to help you manage cookies. For example, you should be able to choose to have your browser warn you each time a cookie is being sent, or you can choose to turn off (i.e., refuse to accept) all cookies. Each browser is different, however, so please consult your browser's \"Help\" menu to learn the correct way to modify how your browser handles cookies. You can find more information about cookies and how to disable cookies at www.allaboutcookies.org. Keep in mind that we need certain information in order for our website to function properly. If you disable cookies, you may no longer be able to use or access some features of our website."
563+
564+
usage_title: "How And Why We Use the Information We Collect"
565+
usage_purposes_title: "Purposes for Using Information"
566+
usage_text: "Missing Maps may use your information in the following ways:"
567+
usage_purposes:
568+
- "To provide our services to you"
569+
- "To improve our website in order to better serve you"
570+
- "To communicate with you, respond to your communications with us, or to provide you with technical support"
571+
- "To monitor and prevent any problems with our website"
572+
- "To detect, investigate, and prevent activities that may violate our policies or be illegal"
573+
- "To serve our legitimate business purposes"
574+
- "To comply with our legal obligations"
575+
usage_retention: "We may also maintain and use information in de-identified or aggregated forms that do not identify you. We will retain your information for no longer than is necessary for the purposes for which it is processed."
576+
577+
legal_bases_title: "Legal Bases for Collecting and Using Information"
578+
legal_bases_text: "For those visitors whose personal information is subject to EU data protection laws, the legal bases for processing your information as set out in this Privacy Policy are as follows: (1) The processing is necessary in order to fulfill our contractual commitments to you; (2) The processing is necessary for us to comply with a legal obligation; (3) We have a legitimate interest in processing your information – for example, to provide and update our services, to improve our services so that we can offer you an even better user experience, to safeguard our services, to communicate with you, to measure, gauge, and improve the effectiveness of our services, and better understand user retention and attrition, to monitor and prevent any problems with our services, and to personalize your experience; or (4) You have given us your consent – for example before we place certain cookies on your device and access and analyze them later on."
579+
580+
sharing_title: "How and When We Share Information"
581+
sharing_text: "We may share information about you in limited circumstances for the purposes described in this Privacy Policy and with appropriate safeguards on your privacy and the security of your personal information. In particular:"
582+
sharing_circumstances:
583+
- "Service administrators: Depending on the services used, administrators or other authorized users, which may include Missing Maps team members or designated volunteers working on Missing Maps' behalf, may have access to your username, email address, or other personal information."
584+
- "Independent contractors or vendors: We may disclose information about you to independent contractors, vendors, and/or other third parties working on our behalf in connection with providing you our services. We require all third parties that have access to your personal information to handle it consistent with this Privacy Policy."
585+
- "Partners, affiliates, or other third parties in connection with a merger, acquisition, or change in leadership: In the event Missing Maps merges with or is acquired by another organization, or undergoes a restructuring, change in leadership or other similar significant organizational change, we may disclose and transfer your personal information to authorized third parties in connection with that event."
586+
587+
protection_title: "How We Protect Your Information"
588+
protection_text: "We use appropriate administrative, technical, and physical measures designed to prevent unauthorized access, improper use or disclosure, unauthorized modification or unlawful destruction or accidental loss of personal information. Although we exercise reasonable care in providing secure transmission of information and storage of the information provided to us through our website, no method of transmission over the Internet, and no means of electronic or physical storage, is absolutely secure. Accordingly, we cannot ensure or warrant the security of any information you transmit to us."
589+
590+
your_rights_title: "Your Choices Regarding Your Personal Information"
591+
your_rights_text: "Certain local laws establish rights for consumers who are subject to their protections. For example, the European Union's General Data Protection Regulation provides for the following rights for individuals whose data is collected in the EU:"
592+
rights_list:
593+
- "Right to request access to your personal data"
594+
- "Right to request correction or deletion of your personal data"
595+
- "Right to object to our use and processing of your personal data"
596+
- "Right to request that we limit our use and processing of your personal data"
597+
- "Right to request portability of your personal data"
598+
rights_note: "While these rights are not absolute – e.g., we do not have to delete your data if we need the data for compliance with a legal obligation – and they are not legally required in every jurisdiction in which we collect data, Missing Maps wants to make it easy and straightforward for all our users to enjoy these rights. We provide you with several choices when it comes to information about you:"
599+
choices_list:
600+
- "Opt-Out of Electronic Communications: You may opt out of receiving messages from Missing Maps. Just follow the instructions in those messages. If you opt out of receiving marketing messages from us, we may still send you other non-commercial messages, like those about legal notices."
601+
- "Do Not Track: Missing Maps responds to \"do not track\" signals, so you may elect to use this signal in your browser settings."
602+
- "Set Your Browser to Reject Cookies: As mentioned above, you can usually choose to set your browser to remove or reject browser cookies before using Missing Maps' services, with the drawback that certain features may not function properly without the aid of cookies."
603+
604+
exercise_rights_text: "If you have any questions or otherwise would like to contact us about one of these rights, you can email [email protected] to ask a question or request to exercise one of your rights. We will consider all requests and provide our response within the time period stated by applicable law. We may request you provide us with information necessary to confirm your identity before responding to your request – this is solely to protect you, and we will not use any of the information you provide us to confirm your identity for anything other than confirming your identity."
605+
606+
third_parties_title: "Third-Party Websites and Services"
607+
third_parties_text: "Our website may include links to third-party websites and services that are not owned or controlled by us, such as GitHub, social media platforms like Twitter, Facebook, and LinkedIn. We have no control over, and assume no responsibility for, the content, privacy policies, or practices of any third-party websites or services. If you choose to use any third-party websites or services, the collection, use, and disclosure of your information on those websites will be subject to the privacy policies of these websites and services."
608+
609+
children_title: "Children's Privacy"
610+
children_text: "We encourage youth to volunteer with Missing Maps under the supervision of their parent or guardian, and are committed to protecting the privacy of children who use our website. We do not knowingly collect personal information from children under 16. However, depending on how you use our website, we may collect and use information about your child that you provide to us. Before we collect any such information, we will seek your permission. If we become aware we are processing the data of a child under the age of 16 without parental consent, we will take reasonable steps to delete such information as required under applicable laws. If you believe we might have personal information from or about a child under 16, please contact us at [email protected]."
611+
612+
modifications_title: "Modifications to This Privacy Policy"
613+
modifications_text: "We may modify this Privacy Policy from time to time. All such changes will be reflected on this page and the date of revision will be noted at the top of the Privacy Policy. Please check the Policy periodically for updates."
614+
615+
contact_title: "Contact Us"
616+
contact_text: "If you have a question about this Privacy Policy, please contact us at [email protected]. Missing Maps is part of the Humanitarian OpenStreetMap Team, a 501(c)(3) not-for-profit organization and global community."
617+
analytics_notice: "Analytics tracking is currently"
618+
analytics_enabled: "enabled"
619+
analytics_disabled: "disabled"

app/_data/es.yml

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -504,3 +504,47 @@ months:
504504
- Octubre
505505
- Noviembre
506506
- Diciembre
507+
508+
####################
509+
## GDPR COMPLIANCE #
510+
####################
511+
gdpr:
512+
banner:
513+
title: "Consentimiento de Cookies"
514+
message: "Utilizamos cookies para analizar el tráfico del sitio web y mejorar su experiencia. Al aceptar nuestro uso de cookies, sus datos se agregarán con todos los demás datos de usuarios para fines analíticos."
515+
accept: "Aceptar"
516+
reject: "Rechazar"
517+
learn_more: "Más Información"
518+
privacy_policy:
519+
title: "Política de Privacidad"
520+
url: "/privacy-policy/"
521+
last_updated: "Última actualización: 5 de octubre de 2025"
522+
overview_title: "Resumen"
523+
overview_text: "Missing Maps se compromete a proteger su privacidad. Esta Política de Privacidad explica cómo recopilamos, usamos y protegemos su información cuando visita nuestro sitio web."
524+
data_collection_title: "Recopilación de Datos"
525+
data_collection_text: "Recopilamos información para mejorar su experiencia y entender cómo se usa nuestro sitio web. Esto incluye:"
526+
data_types:
527+
- "Datos analíticos a través de Google Analytics (solo con su consentimiento)"
528+
- "Dirección IP (anonimizada para análisis)"
529+
- "Información del navegador y dispositivo"
530+
- "Páginas visitadas y tiempo en el sitio"
531+
cookies_title: "Cookies"
532+
cookies_text: "Utilizamos cookies solo para fines analíticos. Puede controlar el uso de cookies a través de nuestro banner de consentimiento. Utilizamos:"
533+
cookie_types:
534+
- "Cookies esenciales: Requeridas para la funcionalidad del sitio web"
535+
- "Cookies analíticas: Google Analytics (solo con consentimiento)"
536+
your_rights_title: "Sus Derechos"
537+
your_rights_text: "Bajo el RGPD, usted tiene derecho a:"
538+
rights_list:
539+
- "Acceder a sus datos personales"
540+
- "Corregir datos inexactos"
541+
- "Eliminar sus datos"
542+
- "Oponerse al procesamiento de datos"
543+
- "Retirar el consentimiento en cualquier momento"
544+
third_parties_title: "Servicios de Terceros"
545+
third_parties_text: "Utilizamos Google Analytics para análisis del sitio web (solo con su consentimiento). Google Analytics está configurado con anonimización de IP y respeta sus elecciones de privacidad."
546+
contact_title: "Contáctenos"
547+
contact_text: "Si tiene preguntas sobre esta Política de Privacidad, contáctenos a través de nuestro sitio web o repositorio de GitHub."
548+
analytics_notice: "El seguimiento de análisis está actualmente"
549+
analytics_enabled: "habilitado"
550+
analytics_disabled: "deshabilitado"

0 commit comments

Comments
 (0)