From b43d6b4fdf9d18698b82e53443ab552d97c5ca32 Mon Sep 17 00:00:00 2001 From: Savio Dsouza Date: Mon, 11 May 2026 23:57:53 +0530 Subject: [PATCH 01/10] Add PR validation workflow with contribution rules This workflow validates pull requests by checking for linked issues, required template sections, and conventional commit title format. It provides warnings for missing information and encourages contributors to combine related changes. Signed-off-by: Om Kartike --- .github/workflows/pr-validator.yml | 154 +++++++++++++++++++++++++++++ 1 file changed, 154 insertions(+) create mode 100644 .github/workflows/pr-validator.yml diff --git a/.github/workflows/pr-validator.yml b/.github/workflows/pr-validator.yml new file mode 100644 index 0000000..d60f5b0 --- /dev/null +++ b/.github/workflows/pr-validator.yml @@ -0,0 +1,154 @@ +name: ๐Ÿ›ก๏ธ PR Validation & Contribution Rules + +on: + pull_request: + types: + - opened + - edited + - synchronize + +permissions: + pull-requests: write + issues: read + contents: read + +concurrency: + group: pr-validation-${{ github.event.pull_request.number }} + cancel-in-progress: true + +jobs: + validate-pr: + runs-on: ubuntu-latest + + steps: + - name: Validate PR + uses: actions/github-script@v8 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + script: | + const pr = context.payload.pull_request; + + const owner = context.repo.owner; + const repo = context.repo.repo; + const prNumber = pr.number; + + const body = pr.body || ''; + const title = pr.title || ''; + const username = pr.user.login; + + const lowerBody = body.toLowerCase(); + + let warnings = []; + + // โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ + // Ignore bots + // โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ + if (pr.user.type === 'Bot') { + core.info('Ignoring bot PR'); + return; + } + + // โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ + // Check linked issue + // โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ + const issueRegex = + /(close|closes|closed|fix|fixes|fixed|resolve|resolves|resolved)\s+#\d+/i; + + const hasLinkedIssue = issueRegex.test(body); + + if (!hasLinkedIssue) { + warnings.push( + 'โŒ This PR does not reference a linked issue.\n\n' + + 'Please add:\n' + + '`Closes #issue-number`' + ); + } + + // โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ + // Detect contribution program + // โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ + const mentionsNSOC = + lowerBody.includes('nsoc'); + + const mentionsGSSOC = + lowerBody.includes('gssoc'); + + if (!mentionsNSOC && !mentionsGSSOC) { + warnings.push( + 'โš ๏ธ Contribution program not detected.\n\n' + + 'Please use the proper PR template:\n' + + '- NSOC template\n' + + '- GSSOC template' + ); + } + + // โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ + // Required template sections + // โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ + const requiredSections = [ + 'description', + 'related issue', + 'type of change', + 'how to test', + 'checklist' + ]; + + for (const section of requiredSections) { + if (!lowerBody.includes(section)) { + warnings.push( + `โš ๏ธ Missing PR template section: \`${section}\`` + ); + } + } + + // โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ + // Conventional commit title validation + // โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ + const conventionalRegex = + /^(feat|fix|docs|style|refactor|perf|test|build|ci|chore)(\(.+\))?: .+/i; + + if (!conventionalRegex.test(title)) { + warnings.push( + 'โš ๏ธ PR title does not follow Conventional Commits format.\n\n' + + 'Examples:\n' + + '- feat: add search filters\n' + + '- fix: resolve mobile navbar overlap\n' + + '- docs: update contribution guide' + ); + } + + // โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ + // Encourage grouped PRs + // โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ + warnings.push( + '๐Ÿ’ก Contributors are encouraged to combine 1โ€“2 related fixes/features into a single focused PR instead of opening many tiny PRs.' + ); + + // โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ + // Warn only (do not close) + // โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ + if (warnings.length > 0) { + const comment = + `## โš ๏ธ PR Validation Warning\n\n` + + `Hi @${username}, thanks for contributing ๐Ÿš€\n\n` + + warnings.map(w => `- ${w}`).join('\n\n') + + `\n\n---\n\n` + + `Please update the PR accordingly. ` + + `This is currently a warning only and does not automatically close the PR.`; + + await github.rest.issues.createComment({ + owner, + repo, + issue_number: prNumber, + body: comment + }); + } else { + await github.rest.issues.createComment({ + owner, + repo, + issue_number: prNumber, + body: + `## โœ… PR Validation Passed\n\n` + + `Thanks @${username}! Your PR follows the repository contribution requirements ๐Ÿš€` + }); + } From cc8eeac33bad50f06f5cd91ca78071782d79e766 Mon Sep 17 00:00:00 2001 From: omkartike Date: Tue, 12 May 2026 00:24:16 +0530 Subject: [PATCH 02/10] Fix Contact button: Add contact section and link - Added a new contact section with links to GitHub profile, issues, and Discord - Updated Contact button href from '#' to '#contact' for smooth scrolling - Added #contact to scroll-margin-top for proper header offset Signed-off-by: Om Kartike --- index.html | 35 +++++++++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/index.html b/index.html index 38704d0..c7309fa 100644 --- a/index.html +++ b/index.html @@ -223,7 +223,7 @@ html { scroll-behavior: smooth; } /* Scroll offset for fixed header */ - #timeline, #orgs, #guide, #watchlist, #issues, #mentors { + #timeline, #orgs, #guide, #watchlist, #issues, #mentors, #contact { scroll-margin-top: 80px; } @@ -983,6 +983,37 @@

Com + +
+
+

Get in Touch

+

Have questions, feedback, or need help? We'd love to hear from you.

+
+ +
+ From 42e95293b66cfb1a6ccc849da90070ee23d3f9c0 Mon Sep 17 00:00:00 2001 From: omkartike Date: Tue, 12 May 2026 01:06:38 +0530 Subject: [PATCH 03/10] fix: resolve privacy policy button not working - Create privacy.html with comprehensive privacy policy content - Update footer Privacy link from href='#' to href='privacy.html' - Maintain consistent styling and navigation across pages Closes #444 Signed-off-by: Om Kartike --- index.html | 2 +- privacy.html | 212 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 213 insertions(+), 1 deletion(-) create mode 100644 privacy.html diff --git a/index.html b/index.html index c7309fa..4501778 100644 --- a/index.html +++ b/index.html @@ -1027,7 +1027,7 @@

Join Discord

diff --git a/privacy.html b/privacy.html new file mode 100644 index 0000000..3a4c0ee --- /dev/null +++ b/privacy.html @@ -0,0 +1,212 @@ + + + + + + Privacy Policy | FindMyGSoC + + + + + + + + + + + + + +
+
+

Privacy Policy

+

Last updated: May 2026

+
+ +
+
+

Introduction

+

+ Welcome to FindMyGSoC ("we," "our," or "us"). We are committed to protecting your privacy and ensuring the security of your personal information. This Privacy Policy explains how we collect, use, disclose, and safeguard your information when you use our website and services. +

+
+ +
+

Information We Collect

+ +

Information You Provide

+

+ We may collect information you directly provide to us, such as when you contact us through our website or participate in surveys. +

+ +

Automatically Collected Information

+

+ When you visit our website, we may automatically collect certain information about your device and usage, including: +

+
    +
  • IP address
  • +
  • Browser type and version
  • +
  • Operating system
  • +
  • Referring website URLs
  • +
  • Pages viewed and time spent on our site
  • +
  • Device identifiers
  • +
+
+ +
+

How We Use Your Information

+

We use the information we collect for various purposes, including:

+
    +
  • To provide and maintain our website and services
  • +
  • To improve our website and develop new features
  • +
  • To communicate with you about our services
  • +
  • To analyze usage patterns and trends
  • +
  • To ensure the security and integrity of our website
  • +
+
+ +
+

Information Sharing

+

+ We do not sell, trade, or otherwise transfer your personal information to third parties without your consent, except as described in this policy. We may share your information in the following circumstances: +

+
    +
  • With service providers who assist us in operating our website
  • +
  • When required by law or to protect our rights
  • +
  • In connection with a business transfer or merger
  • +
+
+ +
+

Data Security

+

+ We implement appropriate technical and organizational measures to protect your personal information against unauthorized access, alteration, disclosure, or destruction. However, no method of transmission over the internet is 100% secure. +

+
+ +
+

Your Rights

+

+ Depending on your location, you may have certain rights regarding your personal information, including: +

+
    +
  • The right to access your personal information
  • +
  • The right to rectify inaccurate information
  • +
  • The right to erase your personal information
  • +
  • The right to restrict processing
  • +
  • The right to data portability
  • +
+
+ +
+

Cookies

+

+ Our website may use cookies and similar technologies to enhance your experience. You can control cookie settings through your browser preferences. +

+
+ +
+

Third-Party Links

+

+ Our website may contain links to third-party websites. We are not responsible for the privacy practices of these external sites. +

+
+ +
+

Children's Privacy

+

+ Our services are not intended for children under 13. We do not knowingly collect personal information from children under 13. +

+
+ +
+

Changes to This Policy

+

+ We may update this Privacy Policy from time to time. We will notify you of any changes by posting the new policy on this page and updating the "Last updated" date. +

+
+ +
+

Contact Us

+

+ If you have any questions about this Privacy Policy, please contact us through our website or GitHub repository. +

+
+
+
+ + +
+
+
+
+
+ G +
+ FindMyGSoC +
+

ยฉ 2026 S3DFX-CYBER ยท Built for the Open Source Community

+
+ +
+
+ + \ No newline at end of file From 04e745b9c0c8ec6bfd3ffb3e2efac0a84f63b9b9 Mon Sep 17 00:00:00 2001 From: omkartike Date: Tue, 12 May 2026 01:41:43 +0530 Subject: [PATCH 04/10] fix: Update mentor contact information for NumFOCUS and omegaUp Resolves #363 #364 This commit updates the mentor contact information for two organizations: NumFOCUS (#363): - Added mailing list: https://groups.google.com/a/numfocus.org/forum/#!forum/gsoc - Added email contact: gsoc@numfocus.org - Updated status to ok (verified and complete) - Added helpful tip for NumFOCUS umbrella organization omegaUp (#364): - Added Discord channels (GSoC candidates and community) - Added GitHub Discussions link - Added 5 named mentors: pabo99, heduenas, Ankitsinghsisodya, carlosabcs, iqbalcodes6602 - Added email contact: hello@omegaup.com - Updated status to ok (verified and complete) - Added helpful tips for arena test and Discord engagement Both organizations now have complete and verified contact information for GSoC 2026 applicants. Signed-off-by: Om Kartike --- data/mentors.json | 79 +++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 66 insertions(+), 13 deletions(-) diff --git a/data/mentors.json b/data/mentors.json index 9113eda..0234ad8 100644 --- a/data/mentors.json +++ b/data/mentors.json @@ -1583,27 +1583,80 @@ "org": "NumFOCUS", "ideasUrl": "https://github.com/numfocus/gsoc/blob/master/2026/ideas-list.md", "channels": [], - "mentors": [ + "mentors": [], + "mailingLists": [ { - "name": "", - "github": "login", - "githubUrl": "https://github.com/login" + "type": "Mailing list", + "url": "https://groups.google.com/a/numfocus.org/forum/#!forum/gsoc", + "label": "NumFOCUS GSoC mailing list" + }, + { + "type": "Email", + "url": "mailto:gsoc@numfocus.org", + "label": "gsoc@numfocus.org" } ], - "mailingLists": [], - "tip": "", + "tip": "NumFOCUS is an umbrella organization. For project-specific questions, contact the individual project communities under the umbrella.", "status": "ok", - "lastFetched": "2026-05-09T16:09:12.548Z" + "lastFetched": "2026-05-12T00:00:00.000Z" }, "omegaUp": { "org": "omegaUp", "ideasUrl": "https://github.com/omegaup/omegaup/wiki/Google-Summer-of-Code", - "channels": [], - "mentors": [], - "mailingLists": [], - "tip": "", - "status": "no-contact-found", - "lastFetched": "2026-05-09T16:09:12.548Z" + "channels": [ + { + "type": "Discord", + "url": "https://discord.gg/gMEMX7Mrwe", + "label": "omegaUp GSoC Discord (Candidates)" + }, + { + "type": "Discord", + "url": "https://discord.gg/K3JFd9d3wk", + "label": "omegaUp Community Discord" + }, + { + "type": "GitHub Discussions", + "url": "https://github.com/omegaup/omegaup/discussions", + "label": "omegaUp GitHub Discussions" + } + ], + "mentors": [ + { + "name": "", + "github": "pabo99", + "githubUrl": "https://github.com/pabo99" + }, + { + "name": "", + "github": "heduenas", + "githubUrl": "https://github.com/heduenas" + }, + { + "name": "", + "github": "Ankitsinghsisodya", + "githubUrl": "https://github.com/Ankitsinghsisodya" + }, + { + "name": "", + "github": "carlosabcs", + "githubUrl": "https://github.com/carlosabcs" + }, + { + "name": "", + "github": "iqbalcodes6602", + "githubUrl": "https://github.com/iqbalcodes6602" + } + ], + "mailingLists": [ + { + "type": "Email", + "url": "mailto:hello@omegaup.com", + "label": "hello@omegaup.com" + } + ], + "tip": "Join the Discord server to get help and connect with mentors. Make sure to solve at least 2 of 3 problems on the GSoC 2026 arena test.", + "status": "ok", + "lastFetched": "2026-05-12T00:00:00.000Z" }, "Open Food Facts": { "org": "Open Food Facts", From 52010662821bcb1ed4596390930d1feb281981ae Mon Sep 17 00:00:00 2001 From: omkartike Date: Tue, 12 May 2026 13:20:14 +0530 Subject: [PATCH 05/10] fix: add SRI and ARIA label to privacy.html for SonarCloud Signed-off-by: Om Kartike --- privacy.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/privacy.html b/privacy.html index 3a4c0ee..3c9ce26 100644 --- a/privacy.html +++ b/privacy.html @@ -6,9 +6,9 @@ Privacy Policy | FindMyGSoC - - - + + + - - + + - - - - - - - - - -
-
-

Privacy Policy

-

Last updated: May 2026

-
- -
-
-

Introduction

-

- Welcome to FindMyGSoC ("we," "our," or "us"). We are committed to protecting your privacy and ensuring the security of your personal information. This Privacy Policy explains how we collect, use, disclose, and safeguard your information when you use our website and services. -

-
- -
-

Information We Collect

- -

Information You Provide

-

- We may collect information you directly provide to us, such as when you contact us through our website or participate in surveys. -

- -

Automatically Collected Information

-

- When you visit our website, we may automatically collect certain information about your device and usage, including: -

-
    -
  • IP address
  • -
  • Browser type and version
  • -
  • Operating system
  • -
  • Referring website URLs
  • -
  • Pages viewed and time spent on our site
  • -
  • Device identifiers
  • -
-
- -
-

How We Use Your Information

-

We use the information we collect for various purposes, including:

-
    -
  • To provide and maintain our website and services
  • -
  • To improve our website and develop new features
  • -
  • To communicate with you about our services
  • -
  • To analyze usage patterns and trends
  • -
  • To ensure the security and integrity of our website
  • -
-
- -
-

Information Sharing

-

- We do not sell, trade, or otherwise transfer your personal information to third parties without your consent, except as described in this policy. We may share your information in the following circumstances: -

-
    -
  • With service providers who assist us in operating our website
  • -
  • When required by law or to protect our rights
  • -
  • In connection with a business transfer or merger
  • -
-
- -
-

Data Security

-

- We implement appropriate technical and organizational measures to protect your personal information against unauthorized access, alteration, disclosure, or destruction. However, no method of transmission over the internet is 100% secure. -

-
- -
-

Your Rights

-

- Depending on your location, you may have certain rights regarding your personal information, including: -

-
    -
  • The right to access your personal information
  • -
  • The right to rectify inaccurate information
  • -
  • The right to erase your personal information
  • -
  • The right to restrict processing
  • -
  • The right to data portability
  • -
-
- -
-

Cookies

-

- Our website may use cookies and similar technologies to enhance your experience. You can control cookie settings through your browser preferences. -

-
- -
-

Third-Party Links

-

- Our website may contain links to third-party websites. We are not responsible for the privacy practices of these external sites. -

-
- -
-

Children's Privacy

-

- Our services are not intended for children under 13. We do not knowingly collect personal information from children under 13. -

-
- -
-

Changes to This Policy

-

- We may update this Privacy Policy from time to time. We will notify you of any changes by posting the new policy on this page and updating the "Last updated" date. -

-
- -
-

Contact Us

-

- If you have any questions about this Privacy Policy, please contact us through our website or GitHub repository. -

-
-
-
- - -
-
-
-
-
- G -
- FindMyGSoC -
-

ยฉ 2026 S3DFX-CYBER ยท Built for the Open Source Community

-
- -
-
+ +

Redirecting to Privacy Policy.

- \ No newline at end of file + From 413191c21c3dd0d09eb960d7035412f3bd5a3f87 Mon Sep 17 00:00:00 2001 From: omkartike Date: Tue, 12 May 2026 22:03:58 +0530 Subject: [PATCH 08/10] Fix PR 455 by removing duplicate privacy section from index and making privacy.html a short policy page to reduce duplication Signed-off-by: Om Kartike --- index.html | 81 ------------------------------------- privacy.html | 111 +++++++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 107 insertions(+), 85 deletions(-) diff --git a/index.html b/index.html index 0e1834e..4501778 100644 --- a/index.html +++ b/index.html @@ -1014,87 +1014,6 @@

Join Discord

- -
-
-

Privacy Policy

-

Last updated: May 2026

-
-
-
-

Introduction

-

Welcome to FindMyGSoC ("we," "our," or "us"). We are committed to protecting your privacy and ensuring the security of your personal information. This Privacy Policy explains how we collect, use, disclose, and safeguard your information when you use our website and services.

-
-
-

Information We Collect

-

We may collect information you directly provide to us, such as when you contact us through our website or participate in surveys. We may also automatically collect certain information about your device and usage, including:

-
    -
  • IP address
  • -
  • Browser type and version
  • -
  • Operating system
  • -
  • Referring website URLs
  • -
  • Pages viewed and time spent on our site
  • -
  • Device identifiers
  • -
-
-
-

How We Use Your Information

-

We use the information we collect for various purposes, including:

-
    -
  • To provide and maintain our website and services
  • -
  • To improve our website and develop new features
  • -
  • To communicate with you about our services
  • -
  • To analyze usage patterns and trends
  • -
  • To ensure the security and integrity of our website
  • -
-
-
-

Information Sharing

-

We do not sell, trade, or otherwise transfer your personal information to third parties without your consent, except as described in this policy. We may share your information in the following circumstances:

-
    -
  • With service providers who assist us in operating our website
  • -
  • When required by law or to protect our rights
  • -
  • In connection with a business transfer or merger
  • -
-
-
-

Data Security

-

We implement appropriate technical and organizational measures to protect your personal information against unauthorized access, alteration, disclosure, or destruction. However, no method of transmission over the internet is 100% secure.

-
-
-

Your Rights

-

Depending on your location, you may have certain rights regarding your personal information, including:

-
    -
  • The right to access your personal information
  • -
  • The right to rectify inaccurate information
  • -
  • The right to erase your personal information
  • -
  • The right to restrict processing
  • -
  • The right to data portability
  • -
-
-
-

Cookies

-

Our website may use cookies and similar technologies to enhance your experience. You can control cookie settings through your browser preferences.

-
-
-

Third-Party Links

-

Our website may contain links to third-party websites. We are not responsible for the privacy practices of these external sites.

-
-
-

Children's Privacy

-

Our services are not intended for children under 13. We do not knowingly collect personal information from children under 13.

-
-
-

Changes to This Policy

-

We may update this Privacy Policy from time to time. We will notify you of any changes by posting the new policy on this page and updating the "Last updated" date.

-
-
-

Contact Us

-

If you have any questions about this Privacy Policy, please contact us through our website or GitHub repository.

-
-
-
-