-
-
Notifications
You must be signed in to change notification settings - Fork 77
feat: add terms of services and privacy policy #181
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
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,179 @@ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| # Privacy Policy | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| **Last updated: August 2026** | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ## Introduction | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| At OrgExplorer, we respect your privacy. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| This Privacy Policy explains what data OrgExplorer handles and how — and, just as importantly, what it does **not** do. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| OrgExplorer's architecture is different from many applications because it operates entirely in the browser. It has **no backend server and no user accounts**. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| --- | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ## Information We Collect | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| OrgExplorer does not have: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - User accounts | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - Signup or waitlist systems | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - A backend server operated by us | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Because of this, we do not collect, receive, or store any personal information about you on any system we control. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ### What the App Handles | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| #### Data fetched from GitHub | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| When you search an organization, publicly available GitHub data is fetched directly from GitHub's API by your browser. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| This may include: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - Repository information | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - Contributor information | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - Issues | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - Pull requests | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - Other publicly available GitHub metadata | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| This data never passes through a server operated by OrgExplorer. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| #### Data stored locally on your device | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| The following data may be stored locally in your browser: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - GitHub Personal Access Token (if provided) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - Cached GitHub API responses | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - API rate-limit status | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - Recent search history | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - Application preferences | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| This data is stored only in your browser's: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - `localStorage` | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - `IndexedDB` | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| OrgExplorer does not transmit this data to any server operated by us. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| When a GitHub Personal Access Token is provided, your browser uses it to authenticate requests directly with GitHub's API. The token is sent only to GitHub for authorized API requests and is never sent to OrgExplorer servers. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| #### Standard Hosting Logs | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| OrgExplorer is hosted on GitHub Pages. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| GitHub, as the hosting provider, may collect standard infrastructure logs such as: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - IP addresses | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - Request timestamps | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - Other operational metadata | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| OrgExplorer maintainers do not have access to these logs. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| For more information, see [GitHub's Privacy Statement](https://docs.github.com/en/site-policy/privacy-policies/github-general-privacy-statement). | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| --- | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ## How We Use Your Information | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Since OrgExplorer does not collect or receive your personal data, we do not use, analyze, sell, or process your information. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| All locally stored data exists only to make the application function properly, including: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - Reducing repeated GitHub API requests through caching | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - Preserving your preferences | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - Allowing you to avoid entering your Personal Access Token repeatedly | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| --- | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ## Data Sharing and Disclosure | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| We do not sell, share, or disclose your data. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| This is because OrgExplorer does not collect your data in the first place. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| The only external communication occurs directly between: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ``` | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Your Browser | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| | | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| | | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| v | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| GitHub API (api.github.com) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ``` | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+95
to
+101
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win Format the Markdown code fence. Add a blank line before the fence and specify Proposed Markdown fix The only external communication occurs directly between:
+
+```text
-```
+```🧰 Tools🪛 markdownlint-cli2 (0.23.2)[warning] 95-95: Fenced code blocks should be surrounded by blank lines (MD031, blanks-around-fences) [warning] 95-95: Fenced code blocks should have a language specified (MD040, fenced-code-language) 🤖 Prompt for AI AgentsSource: Linters/SAST tools |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| This communication is governed by: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - [GitHub Terms of Service](https://docs.github.com/en/site-policy/github-terms/github-terms-of-service) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - [GitHub Privacy Statement](https://docs.github.com/en/site-policy/privacy-policies/github-general-privacy-statement) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+88
to
+107
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🔒 Security & Privacy | 🟠 Major | ⚡ Quick win Narrow the third-party disclosure. The wording conflicts with the policy's own statements that the browser sends token-authenticated requests to GitHub and that GitHub hosts the site and may collect hosting logs. The claims that OrgExplorer does not “share” data and that the GitHub API is the “only external communication” are too broad. State that OrgExplorer does not sell or share data with OrgExplorer or its maintainers. Separately state that GitHub receives API requests, tokens when provided, and hosting traffic under its own policies. Proposed wording adjustment- We do not sell, share, or disclose your data.
+ OrgExplorer does not sell or share your data with OrgExplorer or its maintainers.
- This is because OrgExplorer does not collect your data in the first place.
+ Your browser communicates directly with GitHub when it loads the site or sends GitHub API requests.
- The only external communication occurs directly between:
+ Application data requests made by OrgExplorer go directly between:📝 Committable suggestion
Suggested change
🧰 Tools🪛 markdownlint-cli2 (0.23.2)[warning] 95-95: Fenced code blocks should be surrounded by blank lines (MD031, blanks-around-fences) [warning] 95-95: Fenced code blocks should have a language specified (MD040, fenced-code-language) 🤖 Prompt for AI Agents |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| --- | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ## Data Security | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Because OrgExplorer has no backend server or database, most server-side data security risks do not apply. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| The relevant security considerations involve data stored on your own device. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ### GitHub Personal Access Token | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| If you choose to provide a GitHub Personal Access Token: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - It is stored only in your browser's `localStorage` | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - It is sent only to GitHub's API | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - It is never logged by OrgExplorer | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - It is never transmitted to OrgExplorer servers | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ### Token Safety Recommendations | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| We recommend: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - Using a token with the minimum permissions required | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - Avoiding unnecessary scopes | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - Revoking your token from GitHub settings if you suspect misuse | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Please note that browser `localStorage` is not encrypted. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+117
to
+135
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🔒 Security & Privacy | 🟠 Major | ⚡ Quick win Document the Lines 27-80 of If token persistence remains, disclose the same-origin script risk and recommend a short-lived, least-privilege token. Prefer non-persistent token storage if the product requirements allow it. 🧰 Tools🪛 LanguageTool[style] ~122-~122: This adverb was used twice in the sentence. Consider removing one of them or replacing them with a synonym. (ADVERB_REPETITION_PREMIUM) 🤖 Prompt for AI Agents |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| --- | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ## Your Rights | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Since OrgExplorer does not collect or store personal information on our systems, there is no personal data held by us that you can request to: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - Access | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - Correct | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - Delete | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - Export | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| You maintain complete control over locally stored application data. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| You can remove stored data by: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - Clearing your browser storage | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - Removing your Personal Access Token from the Settings page | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - Resetting application data through browser settings | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| --- | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ## Changes to This Policy | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| We may update this Privacy Policy as OrgExplorer evolves. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Any changes will be reflected on this page with an updated **"Last updated"** date. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| We encourage users to review this policy periodically. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| --- | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ## Contact Us | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| If you have questions about this Privacy Policy, contact us: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| **Email:** [contact@aossie.org](mailto:contact@aossie.org) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| **Discord:** [Discord](https://discord.gg/hjUhu33uAn) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Or open an issue on [the project's GitHub repository](https://github.com/AOSSIE-Org/OrgExplorer). | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| --- | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| *This policy describes OrgExplorer's actual technical behavior as of the date above. It is provided for transparency and is not a substitute for professional legal advice.* | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,202 @@ | ||
| # Terms of Service | ||
|
|
||
| **Last updated: August 2026** | ||
|
|
||
| ## 1. Introduction | ||
|
|
||
| Welcome to OrgExplorer, an open-source, browser-only tool for analyzing publicly available GitHub organization data — repositories, contributors, governance signals, and activity trends. | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🔒 Security & Privacy | 🟠 Major | ⚡ Quick win 🧩 Analysis chain🏁 Script executed: #!/bin/bash
set -euo pipefail
rg -n -C4 'Authorization|api\.github\.com|/orgs/|/repos/' \
--glob '*.{js,jsx,ts,tsx}' .Repository: AOSSIE-Org/OrgExplorer Length of output: 6058 🏁 Script executed: #!/bin/bash
set -euo pipefail
printf '%s\n' '--- terms-of-service.md ---'
cat -n terms-of-service.md
printf '%s\n' '--- privacy-policy.md candidates ---'
fd -i 'privacy-policy.md' . -x sh -c 'cat -n "$1"' sh {}
printf '%s\n' '--- github service ---'
cat -n src/services/github.js
printf '%s\n' '--- token and endpoint call sites ---'
rg -n -C3 'fetchOrg|fetchRepos|fetchContributors|fetchIssues|fetchPulls|localStorage|sessionStorage|pat' \
src --glob '*.{js,jsx,ts,tsx}'Repository: AOSSIE-Org/OrgExplorer Length of output: 50380 🌐 Web query:
💡 Result: The GitHub REST API endpoint to list repositories for an organization is GET /orgs/{org}/repos [1][2]. To filter the repositories returned by this endpoint, you should use the type parameter in your query string [1][3]. The type parameter allows you to specify the repository types you want to retrieve and accepts the following values: all, public, private, forks, sources, and member [2][4]. If your organization is part of an enterprise account (using GitHub Enterprise Cloud or supported versions of GitHub Enterprise Server), the type parameter also supports the internal value [1][3][5]. Please note the following regarding repository visibility and the API: 1. Visibility Filtering: The type parameter is the standard way to filter by repository visibility (e.g., using type=private to list only private repositories) [2][3]. 2. Visibility Parameter: While the GitHub API documentation includes a visibility parameter, it is primarily used for creating or updating repositories (as a body parameter), not for filtering the list of existing repositories returned by GET /orgs/{org}/repos [1][2][6]. 3. Enterprise Context: In some older or specific enterprise environments, documentation may reference the use of specific preview headers (like nebula-preview) or different behavior for the visibility parameter, but for current standard usage, you should rely on the type query parameter [3][6][5]. For authenticated requests, ensure you provide a valid personal access token or installation access token in the Authorization header to access private repositories you have permission to view [1][3][7]. Citations:
🏁 Script executed: #!/bin/bash
set -euo pipefail
python3 - <<'PY'
from pathlib import Path
import re
files = [
Path("src/services/github.js"),
Path("src/pages/ContributorProfilePage.jsx"),
Path("src/pages/SettingsPage.jsx"),
]
for path in files:
text = path.read_text()
print(f"--- {path} ---")
for i, line in enumerate(text.splitlines(), 1):
if "https://api.github.com" in line:
print(f"{i}: {line.strip()}")
if "Authorization" in line:
print(f"{i}: {line.strip()}")
service = Path("src/services/github.js").read_text()
print("--- endpoint/auth summary ---")
for name, url in re.findall(
r"export (?:const|async function)\s+(\w+).*?https://api\.github\.com([^`']+)",
service,
re.S,
):
print(f"{name}: {url}")
print("authorization is conditional on pat:", "if (pat) headers.Authorization" in service)
print("cache lookup precedes authorization/fetch:",
service.index("const cached = await cacheGet(url)") <
service.index("if (pat) headers.Authorization") <
service.index("const res = await fetch(url)"))
print("--- newline check ---")
raw = Path("terms-of-service.md").read_bytes()
print("ends with LF:", raw.endswith(b"\n"))
PYRepository: AOSSIE-Org/OrgExplorer Length of output: 1845 🏁 Script executed: #!/bin/bash
set -euo pipefail
python3 - <<'PY'
from pathlib import Path
service = Path("src/services/github.js").read_text()
terms = Path("terms-of-service.md").read_bytes()
print("--- authentication and request order ---")
print("conditional Authorization header:",
"if (pat) headers.Authorization = `token ${pat}`" in service)
print("cache lookup before Authorization:",
service.index("const cached = await cacheGet(url)") <
service.index("if (pat) headers.Authorization"))
print("Authorization before network request:",
service.index("if (pat) headers.Authorization") <
service.index("const res = await fetch(url, { headers })"))
print("cache key is URL:",
"cacheGet(url)" in service and "cacheSet(url, data)" in service)
print("--- endpoint filters ---")
for line in service.splitlines():
if "https://api.github.com/" in line and "const url" in line:
print(line.strip())
print("organization repository request has public-only type filter:",
"type=public" in service)
print("terms-of-service.md ends with LF:", terms.endswith(b"\n"))
PYRepository: AOSSIE-Org/OrgExplorer Length of output: 870 Do not describe authenticated GitHub data as public-only. The client sends The URL-only IndexedDB cache is checked before authentication. A cached protected response can therefore remain available after the token is removed. Use separate authenticated cache handling and clear protected data when authentication changes. 🤖 Prompt for AI Agents |
||
|
|
||
| This Terms of Service Agreement ("Agreement") governs your use of OrgExplorer, including its software, documentation, and hosted deployment (collectively, the "Project"). | ||
|
|
||
| By accessing or using the Project, you agree to be bound by these terms. If you do not agree, do not use the Project. | ||
|
|
||
| --- | ||
|
|
||
| ## 2. Grant of License | ||
|
|
||
| OrgExplorer is open-source software. Its source code, license terms, and contribution guidelines are available at [the project's GitHub repository](https://github.com/AOSSIE-Org/OrgExplorer). | ||
|
|
||
| Your rights to use, modify, and redistribute the underlying code are governed by that repository's license. This Agreement additionally governs your use of the *deployed, hosted instance* of the Project available at (https://orgexplorer.aossie.org/). | ||
|
|
||
| ### Permitted Uses | ||
|
|
||
| You may use OrgExplorer for: | ||
|
|
||
| - Analyzing publicly available GitHub organization data | ||
| - Research and evaluation purposes | ||
| - Governance auditing | ||
| - General exploration and learning | ||
|
|
||
| ### Restrictions | ||
|
|
||
| You agree not to use the Project in a manner that: | ||
|
|
||
| - Violates applicable laws | ||
| - Violates GitHub's Terms of Service | ||
| - Attempts to bypass GitHub API rate limits through unauthorized methods | ||
| - Misuses Personal Access Tokens or other authentication mechanisms | ||
|
|
||
| --- | ||
|
|
||
| ## 3. Intellectual Property Rights | ||
|
|
||
| All right, title, and interest in OrgExplorer's own source code remains with its maintainers and contributors, subject to the open-source license available in the repository. | ||
|
|
||
| Data displayed within the Project, including: | ||
|
|
||
| - Repository names | ||
| - Contributor information | ||
| - Issue and pull request content | ||
| - Other GitHub metadata | ||
|
|
||
| is publicly available data retrieved from GitHub and remains the property of its respective owners, subject to GitHub's own terms. | ||
|
Comment on lines
+43
to
+52
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🔒 Security & Privacy | 🟠 Major | ⚡ Quick win 🧩 Analysis chain🏁 Script executed: #!/bin/bash
set -eu
printf '%s\n' '--- tracked files ---'
git ls-files | sed -n '1,160p'
printf '%s\n' '--- terms-of-service.md ---'
wc -l terms-of-service.md
cat -n terms-of-service.md
printf '%s\n' '--- privacy policy candidates ---'
fd -i -t f 'privacy.*' . || true
for f in $(fd -i -t f 'privacy.*' .); do
printf '%s\n' "--- $f ---"
wc -l "$f"
cat -n "$f"
done
printf '%s\n' '--- GitHub/API/token references ---'
rg -n -i --glob '!node_modules' --glob '!dist' --glob '!build' \
'api\.github\.com|github\.com/|octokit|localStorage|sessionStorage|github token|access token|Authorization|Bearer|oauth|jurisdiction|governing law|legal entity|maintainer|contributor' . \
| sed -n '1,260p'Repository: AOSSIE-Org/OrgExplorer Length of output: 44130 🏁 Script executed: #!/bin/bash
set -eu
printf '%s\n' '--- LICENSE ---'
wc -l LICENSE
cat -n LICENSE | sed -n '1,220p'
printf '%s\n' '--- repository identity and license references ---'
rg -n -i --glob '!package-lock.json' \
'AOSSIE|license|copyright|copyright holder|organization|jurisdiction|india|maintain' \
README.md CONTRIBUTING.md MAINTAINERS.md package.json .github LICENSE agent.md \
| sed -n '1,240p'
printf '%s\n' '--- GitHub service implementation ---'
cat -n src/services/github.js
printf '%s\n' '--- token and browser-storage implementation ---'
cat -n src/context/AppContext.jsx | sed -n '1,230p'
cat -n src/components/PATModal.jsx | sed -n '60,260p'
printf '%s\n' '--- package metadata ---'
cat -n package.json | sed -n '1,180p'Repository: AOSSIE-Org/OrgExplorer Length of output: 40763 🌐 Web query:
💡 Result: Under GitHub's Terms of Service, users retain full ownership of the content they create and post ("Your Content") [1][2]. However, by posting content to GitHub, users grant GitHub and other users specific, non-exclusive, worldwide licenses necessary for the service to function [1][3]. Ownership and Content Licenses: - You retain ownership of content you create or own [1][4]. If you post content you do not create, you are responsible for ensuring you have the legal right to do so and for complying with applicable licenses [1][2]. - You grant GitHub and its affiliates a license to store, host, archive, parse, display, and make copies of your content as necessary to provide, develop, and improve the service [1][3]. This includes the right to use your content to train, develop, and improve artificial intelligence and machine learning models and technologies [3][5]. This license does not constitute a sale or transfer of your content [1][2]. - When you make a repository public, you grant other GitHub users a non-exclusive, worldwide license to use, display, perform, and reproduce (by forking) your content through GitHub's functionality [1][4]. You may grant additional rights by adopting an open-source license [1][3]. - These licenses generally end when you remove your content from GitHub, unless other users have already forked it [1][4]. API Rights and Terms: - Use of GitHub's APIs is subject to the general Terms of Service, along with specific API terms [5][6]. - GitHub and its licensors retain all right, title, and interest in and to the APIs, pre-release materials, and all other GitHub products and services [6]. - Users are granted a limited, non-exclusive, non-transferable license to access and use the API solely for the purpose of developing, demonstrating, testing, and supporting interoperability between their products and services and GitHub's [6]. - Users are prohibited from selling, sublicensing, reverse engineering, or incorporating GitHub APIs into their own products in ways that violate the terms [6]. Access to the API can be modified or discontinued at any time [6]. Citations:
Use precise rights language for source code and GitHub data. Name the repository license as GNU GPL v3.0. Do not state that every displayed field is “the property of its respective owners.” Distinguish user-generated content, repository metadata, and GitHub API rights. Align the wording with GitHub’s Terms of Service and 🤖 Prompt for AI Agents |
||
|
|
||
| ### Third-Party Components | ||
|
|
||
| The Project uses third-party open-source libraries, including React, D3.js, and others. | ||
|
|
||
| Your use of these components is subject to their respective license terms, which are available in the repository. | ||
|
|
||
| --- | ||
|
|
||
| ## 4. Disclaimer of Warranties | ||
|
|
||
| The Project is provided **"as is"** without warranty of any kind, either expressed or implied, including but not limited to warranties of: | ||
|
|
||
| - Merchantability | ||
| - Fitness for a particular purpose | ||
| - Non-infringement | ||
|
|
||
| ### No Guarantee | ||
|
|
||
| Neither the maintainers nor contributors guarantee that the Project will: | ||
|
|
||
| - Be error-free | ||
| - Always remain secure | ||
| - Be available without interruption | ||
| - Produce perfectly accurate analytics | ||
|
|
||
| All analytics, scores, and metrics shown, including health scores, bus factor analysis, activity classification, and other derived insights, are computed estimates based on publicly available GitHub data at the time of analysis. | ||
|
|
||
| These metrics are provided for informational purposes only. | ||
|
|
||
| ### Risk Acknowledgment | ||
|
|
||
| You assume all risks associated with: | ||
|
|
||
| - Using the Project | ||
| - Relying on generated metrics or analysis | ||
| - Using your own GitHub Personal Access Token with the application | ||
|
|
||
| --- | ||
|
|
||
| ## 5. Limitation of Liability | ||
|
|
||
| To the maximum extent permitted by applicable law, OrgExplorer maintainers, contributors, and affiliates shall not be liable for any: | ||
|
|
||
| - Indirect damages | ||
| - Incidental damages | ||
| - Special damages | ||
| - Consequential damages | ||
| - Punitive damages | ||
|
|
||
| arising from your use of, or inability to use, the Project. | ||
|
|
||
| This includes loss of locally cached data, as OrgExplorer does not store user data on any system operated by the maintainers. | ||
|
|
||
| --- | ||
|
|
||
|
|
||
| ## 6. Third-Party Services and Integrations | ||
|
|
||
| OrgExplorer integrates with GitHub's public REST API. | ||
|
|
||
| Your use of this integration is subject to: | ||
|
|
||
| - [GitHub Terms of Service](https://docs.github.com/en/site-policy/github-terms/github-terms-of-service) | ||
| - [GitHub REST API Rate Limit Policies](https://docs.github.com/en/rest/using-the-rest-api/rate-limits-for-the-rest-api) | ||
|
|
||
| ### No Endorsement | ||
|
|
||
| Reference to GitHub does not imply endorsement by OrgExplorer, nor does GitHub endorse OrgExplorer. | ||
|
|
||
| ### User Responsibility | ||
|
|
||
| You are responsible for: | ||
|
|
||
| - Following GitHub's terms | ||
| - Proper usage of Personal Access Tokens | ||
| - Ensuring your API usage complies with GitHub policies | ||
|
|
||
| OrgExplorer is not responsible for GitHub service availability, API changes, or restrictions imposed by GitHub. | ||
|
|
||
| --- | ||
|
|
||
| ## 7. Data Privacy and Use | ||
|
|
||
| OrgExplorer has **no backend server and no user accounts**. | ||
|
|
||
| The Project does not collect, store, or process your personal data on any system operated by us. | ||
|
|
||
| Data fetched from GitHub is retrieved directly by your browser. | ||
|
|
||
| Data stored locally for performance purposes, including: | ||
|
|
||
| - Repository data | ||
| - Contributor data | ||
| - Personal Access Tokens | ||
| - Recent searches | ||
|
|
||
| is stored only within your browser's local storage or browser databases. | ||
|
Comment on lines
+137
to
+150
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🔒 Security & Privacy | 🟡 Minor | ⚡ Quick win 🧩 Analysis chain🏁 Script executed: #!/bin/bash
set -euo pipefail
fd -i '^privacy-policy\.md$' . \
-x rg -n -C4 -i 'hosting|log|ip address|request|analytics|personal data|localStorage|IndexedDB|token' {}Repository: AOSSIE-Org/OrgExplorer Length of output: 3272 🏁 Script executed: #!/bin/bash
set -euo pipefail
printf '%s\n' '--- candidate files ---'
fd -i '^(terms-of-service|privacy-policy)\.md$|(^|/)(package\.json|next\.config\..*|astro\.config\..*|vite\.config\..*|vercel\.json|netlify\.toml|_headers|_redirects)$|(^|/)\.github/' . 2>/dev/null | sort
printf '%s\n' '--- terms-of-service.md ---'
sed -n '120,160p' terms-of-service.md
printf '%s\n' '--- privacy-policy.md ---'
sed -n '1,165p' privacy-policy.md
printf '%s\n' '--- deployment and telemetry references ---'
rg -n -i --glob '!terms-of-service.md' --glob '!privacy-policy.md' \
'github pages|pages deploy|analytics|telemetry|sentry|log|logging|monitoring|plausible|umami|posthog|vercel|netlify|cloudflare|ip address|request metadata' . || trueRepository: AOSSIE-Org/OrgExplorer Length of output: 50381 🏁 Script executed: #!/bin/bash
set -euo pipefail
printf '%s\n' '--- tracked deployment files ---'
git ls-files | awk '
tolower($0) ~ /(^|\/)\.github\/|github|deploy|pages|vite\.config|package\.json/ { print }
' | head -200
printf '%s\n' '--- package.json ---'
cat package.json
printf '%s\n' '--- vite.config.js ---'
cat vite.config.js
printf '%s\n' '--- network destinations in application code ---'
rg -n --glob '*.{js,jsx,ts,tsx}' \
'fetch\(|axios|https?://|api\.github\.com|github\.com' src index.html vite.config.js package.json \
| head -200Repository: AOSSIE-Org/OrgExplorer Length of output: 6006 🏁 Script executed: #!/bin/bash
set -euo pipefail
printf '%s\n' '--- GitHub Pages workflow ---'
cat .github/workflows/deploy.yml
printf '%s\n' '--- external resources ---'
sed -n '45,57p' index.html
printf '%s\n' '--- privacy-related claims and remote destinations ---'
rg -n -i 'only external communication|server operated|system we control|GitHub Pages|analytics|tracking|telemetry|log|IP address|request' terms-of-service.md privacy-policy.md index.html src \
--glob '!public/**'Repository: AOSSIE-Org/OrgExplorer Length of output: 24982 Update the privacy disclosure for jsDelivr.
🤖 Prompt for AI Agents |
||
|
|
||
| For complete details, see our [Privacy Policy](https://github.com/AOSSIE-Org/OrgExplorer/blob/main/privacy-policy.md). | ||
|
|
||
| ### Compliance | ||
|
|
||
| You remain responsible for your use of any data retrieved through the Project, including compliance with GitHub's policies regarding API data usage. | ||
|
|
||
| --- | ||
|
|
||
| ## 8. Modification and Termination | ||
|
|
||
| ### Amendments | ||
|
|
||
| We may update this Agreement from time to time. | ||
|
|
||
| Continued use of the Project after changes are posted constitutes acceptance of the updated terms. | ||
|
|
||
| ### Termination | ||
|
|
||
| Since OrgExplorer does not maintain user accounts, termination applies only to: | ||
|
|
||
| - Your decision to stop using the application | ||
| - Clearing locally stored application data | ||
|
|
||
| We reserve the right to modify or discontinue the hosted deployment at any time. | ||
|
|
||
| The underlying open-source code remains available according to its license. | ||
|
|
||
| --- | ||
|
|
||
| ## 9. Governing Law and Dispute Resolution | ||
|
|
||
| This Agreement is governed by applicable law in the jurisdiction where the maintaining organization, AOSSIE, primarily operates. | ||
|
|
||
| In case of disputes, the parties agree to first attempt resolution through informal communication before pursuing other remedies. | ||
|
Comment on lines
+181
to
+185
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🔒 Security & Privacy | 🟠 Major | 🏗️ Heavy lift 🧩 Analysis chain🏁 Script executed: printf '%s\n' '--- terms-of-service.md ---'
sed -n '1,230p' terms-of-service.md
printf '%s\n' '--- privacy-policy.md candidates ---'
fd -i -t f 'privacy-policy.md|privacy.*' . | head -20
for f in $(fd -i -t f 'privacy-policy.md|privacy.*' . | head -5); do
echo "--- $f ---"
sed -n '1,240p' "$f"
done
printf '%s\n' '--- repository identity and AOSSIE references ---'
rg -n -i 'AOSSIE|legal name|jurisdiction|governing law|maintain|organization|contact' \
-g '!node_modules' -g '!dist' -g '!build' . | head -250
printf '%s\n' '--- file ending ---'
python3 - <<'PY'
from pathlib import Path
p = Path("terms-of-service.md")
b = p.read_bytes()
print("exists:", p.exists(), "bytes:", len(b), "ends_with_newline:", b.endswith(b"\n"))
PYRepository: AOSSIE-Org/OrgExplorer Length of output: 26635 🌐 Web query:
💡 Result: The exact legal name of the entity associated with aossie.org is Australian Open Source Software Innovation and Education [1][2]. It is a registered Australian not-for-profit charity, with the Australian Business Number (ABN) 32743493466 [1]. The entity is registered in Australia and is listed with the Australian Charities and Not-for-profits Commission (ACNC) [1]. Citations:
🌐 Web query:
💡 Result: The organisation registered under ABN 32 743 493 466 is named Australian Open Source Software Innovation and Education (also known as AOSSIE) [1]. Its registered business address is 2/53 Boldrewood Street, Turner, ACT 2612, Australia [1]. As an Australian-registered charity with the Australian Charities and Not-for-profits Commission (ACNC) [1][2], the organisation is subject to Australian law. Like other entities operating in Australia, its activities, including software development and educational initiatives, are governed by the relevant laws of the Commonwealth of Australia and the Australian Capital Territory (ACT), where it is based [1]. Specific legal frameworks relevant to its operations as an open-source software entity include the Copyright Act 1968 (Cth), which protects software as a literary work [3][4], as well as general contract law and Australian Consumer Law under the Competition and Consumer Act 2010 (Cth) [4]. As a registered charity, it must also comply with the Australian Charities and Not-for-profits Commission Act 2012 (Cth). Citations:
Name the legal entity and governing forum. Replace the location-based wording with the registered entity name, Australian Open Source Software Innovation and Education (ABN 32 743 493 466), and specify Australian Capital Territory law and the appropriate ACT dispute forum after legal review. 🤖 Prompt for AI Agents |
||
|
|
||
| --- | ||
|
|
||
| ## 10. Contact Information | ||
|
|
||
| If you have questions regarding these Terms of Service, contact us: | ||
|
|
||
| **Email:** [contact@aossie.org](mailto:contact@aossie.org) | ||
|
|
||
| **Discord:** [Discord](https://discord.gg/hjUhu33uAn) | ||
|
|
||
|
|
||
| Or open an issue on [the project's GitHub repository](https://github.com/AOSSIE-Org/OrgExplorer). | ||
|
|
||
| --- | ||
|
|
||
| *These Terms are provided for transparency around an open-source project and are not a substitute for professional legal advice.* | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win Add one trailing newline.
🧰 Tools🪛 markdownlint-cli2 (0.23.2)[warning] 202-202: Files should end with a single newline character (MD047, single-trailing-newline) 🤖 Prompt for AI AgentsSource: Linters/SAST tools |
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🔒 Security & Privacy | 🟡 Minor | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
Repository: AOSSIE-Org/OrgExplorer
Length of output: 17607
🏁 Script executed:
Repository: AOSSIE-Org/OrgExplorer
Length of output: 18796
🏁 Script executed:
Repository: AOSSIE-Org/OrgExplorer
Length of output: 18924
🏁 Script executed:
Repository: AOSSIE-Org/OrgExplorer
Length of output: 4120
Document local-data retention and removal behavior before publishing.
oe_recentstores up to six searches and has no in-app removal.oe_themeremains until browser storage is cleared.oe_rate_limitis removed at reset, andoe_patis removed when deleted from Settings.🤖 Prompt for AI Agents