Skip to content
Open
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
4 changes: 2 additions & 2 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
blank_issues_enabled: true
contact_links:
- name: Discord Community
url: https://discord.gg/hjUhu33uAn
about: Join our Discord server for discussions and support (MANDATORY for all contributors)
url: https://discord.com/channels/1022871757289422898/1458840574076387448

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure, but I think that, if the user is not already a member of our discord, then the channel link will fail. The user must first join our discord using the invitation link.

Could you verify this?

If my suspicion is right, then we may need to keep both the invitation link and the channel link.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Okay, I will put both the channel links. On my device, opening the currently provided link directly opens the channel when signed in and requests to log in when in incognito. I created an account to test this, and when I opened this link, it does open the channel but does not shows it's content hence I will just add both the links. Btw support-us-button does not have a dedicated project channel in our discord.

about: Join our Discord channel for discussions and support (MANDATORY for all contributors)
- name: AOSSIE Website
url: https://aossie.org/
about: Learn more about AOSSIE and our projects
2 changes: 1 addition & 1 deletion .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ Fixes #(issue number)
- [ ] My code follows the project's code style and conventions
- [ ] I have made corresponding changes to the documentation
- [ ] My changes generate no new warnings or errors
- [ ] I have joined the [Discord server](https://discord.gg/hjUhu33uAn) and I will share a link to this PR with the project maintainers there
- [ ] I have joined the [Discord server](https://discord.com/channels/1022871757289422898/1458840574076387448) and I will share a link to this PR with the project maintainers there
- [ ] I have read the [Contributing Guidelines](./CONTRIBUTING.md)

## ⚠️ AI Notice - Important!
Expand Down
12 changes: 12 additions & 0 deletions .markdownlint-cli2.jsonc
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"config": {
"default": true,
"MD041": {
"front_matter_title": ""
}
},
"ignores": [
"DCO.md",
"CLAUDE.md"
]
}
6 changes: 6 additions & 0 deletions .markdownlint.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"default": true,
"MD041": {
"front_matter_title": ""
}
}
5 changes: 4 additions & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,12 @@ Welcome, AI Agent! This document contains essential instructions, code style sta

```text
SupportUsButton/
├── brand/ # Brand assets (logo.svg, favicon.svg, Brand.md)
├── demo/ # Interactive Vite Dev Preview app (App.tsx)
├── dist/ # Bundled package outputs (ESM, CJS, UMD, style.css)
├── public/ # Static assets & dev preview assets
│ ├── brand/ # Brand assets & specs (Brand.md)
│ │ └── icons/ # SVG icons (supportUsButton_dark_logo.svg, etc.)
│ └── favicon.ico # Dev preview favicon
├── src/
│ ├── components/ # SupportUsButton.tsx
│ ├── hooks/ # useParentStyles.ts
Expand Down
146 changes: 121 additions & 25 deletions BestPracticesChecklist.md
Original file line number Diff line number Diff line change
@@ -1,43 +1,139 @@
# AOSSIE Best Practices Checklist — SupportUsButton

This document tracks compliance with the **AOSSIE Best Practices Guidelines** for the **SupportUsButton** project.
> Criteria adapted from the [OpenSSF Best Practices Badge](https://github.com/coreinfrastructure/best-practices-badge)
> (MIT / CC BY 3.0) by OpenSSF contributors. Modified for AOSSIE multi-repo template use.
>
> **[Discord Channel Link](https://discord.com/channels/1022871757289422898/1458840574076387448)**
>
> **Purpose:** Covers OpenSSF Best Practices criteria that are NOT auto-detected by OpenSSF Scorecard.
> Scorecard already handles: License, SAST tools, CI tests, Security Policy file, Branch Protection,
> Pinned Dependencies, Signed Releases, Maintained status, and Known Vulnerabilities.

---

## 🔴 Must (Mandatory Practices)
## Score Summary

- [x] **Licensing & Copyright**: Includes GNU General Public License v3.0 in [`LICENSE`](LICENSE).
- [x] **Project Branding**: Complete SVG logo, favicon, color palette, and typography documented in [`brand/Brand.md`](brand/Brand.md).
- [x] **Maintainers List**: Listed in [`MAINTAINERS.md`](MAINTAINERS.md).
- [x] **Clean Documentation**: `README.md` and `CONTRIBUTING.md` contain no broken links or TODOs left.
- [x] **Build & Run Instructions**: `README.md` contains clear installation, development, testing, and build instructions.
- [x] **Type Safety**: Written in 100% strict TypeScript with type definitions exported.
- [x] **No Magic Constants**: Styling tokens and default properties are configured cleanly in types and CSS variables.
- [x] **Zero Build Warnings**: `npm run build` compiles cleanly with zero warnings or errors.
- [x] **AI Agent Directives**: Context and operational guidelines provided in [`AGENTS.md`](AGENTS.md).
- [x] **CodeRabbit Configuration**: Customized in [`.coderabbit.yaml`](.coderabbit.yaml).
| Category | Met | Total | Status |
|--------------------|-----|-------|--------|
| Basics | 8 | 8 | 🟢 |
| Change Control | 6 | 6 | 🟢 |
| Reporting | 5 | 5 | 🟢 |
| Quality | 7 | 7 | 🟢 |
| Security & Analysis| 3 | 3 | 🟢 |
| **Total** | **29** | **29** | **100%** |

---

## 🟡 Should (Recommended Practices)
## 🏗️ Basics

- [x] **Automatic Host Style Adaptation**: Package inherits host page `font-family`, `background-color`, and `color` natively.
- [x] **Contrast Fail-Safes**: Dynamic relative luminance contrast calculation (`isDarkColor`) for logo and button visibility on light/dark host themes.
- [x] **Automated Testing & CI**: Unit testing and GitHub Actions workflow configured for PR validation.
- [x] **Micro-Animations**: GPU-accelerated CSS keyframe transitions (`animate-sub-fade-in`, `animate-sub-scale-in`).
- [x] **Zero Third-Party UI Dependencies**: Ultra-lightweight package architecture (only standard `tslib` helper; zero external UI framework dependencies) producing ~12 KB minified JS output (`dist/index.esm.js`) and ~4 KB minified CSS (`dist/style.css`).
- [x] **Multi-Bundle Formats**: Exports ESM (`dist/index.esm.js`), CommonJS (`dist/index.cjs.js`), and UMD (`dist/index.umd.js`).
### Project Website & Documentation

- [x] 🔴 **description_good** — The project README clearly describes what the software does and what problem it solves.
- *Evidence URL:* https://github.com/AOSSIE-Org/SupportUsButton#readme

- [x] 🔴 **interact** — The project provides information on how to obtain the software, submit bug reports, and contribute.
- *Evidence URL:* https://github.com/AOSSIE-Org/SupportUsButton/blob/main/CONTRIBUTING.md

- [x] 🔴 **contribution** — `CONTRIBUTING.md` explains the contribution process (e.g., PRs are used, how to open one).
- *Evidence URL:* https://github.com/AOSSIE-Org/SupportUsButton/blob/main/CONTRIBUTING.md

- [x] 🟡 **contribution_requirements** — `CONTRIBUTING.md` references acceptable contribution standards (coding style, tests required, etc.).
- *Evidence URL:* https://github.com/AOSSIE-Org/SupportUsButton/blob/main/AGENTS.md

- [x] 🔴 **documentation_basics** — Basic documentation exists for the software (README, Wiki, or docs folder).
- *Evidence URL:* https://github.com/AOSSIE-Org/SupportUsButton/blob/main/README.md

- [x] 🔴 **documentation_interface** — Reference documentation describes the external interface (API inputs/outputs, props schema, exports).
- *Evidence URL:* https://github.com/AOSSIE-Org/SupportUsButton/blob/main/README.md#component-props-api

### Other Basics

- [x] 🔴 **discussion** — Project has a searchable, URL-addressable discussion mechanism.
- *Evidence URL:* https://discord.com/channels/1022871757289422898/1458840574076387448

- [x] 🟡 **english** — Documentation is provided in English and English bug reports/comments are accepted.
- *Note:* Fully documented in English.

---

## 🟢 Could (Optional / Future Enhancements)
## 🔄 Change Control

### Version Control

- [x] 🔵 **repo_distributed** — Project uses a distributed VCS (git).
- *Evidence URL:* https://github.com/AOSSIE-Org/SupportUsButton

### Version Numbering

- [x] 🔴 **version_unique** — Each release has a unique version identifier (e.g., v2.2.0).
- *Evidence URL:* https://github.com/AOSSIE-Org/SupportUsButton/blob/main/.github/workflows/version-release.yml

- [x] 🔵 **version_semver** — Project uses SemVer format.
- *Evidence URL:* https://github.com/AOSSIE-Org/SupportUsButton/blob/main/.github/workflows/version-release.yml

- [x] 🔵 **version_tags** — Releases are tagged in the VCS (e.g., `git tag v2.2.0`).
- *Evidence URL:* https://github.com/AOSSIE-Org/SupportUsButton/releases

### Release Notes

- [x] 🔴 **release_notes** — Each release includes human-readable release notes summarizing major changes.
- *Evidence URL:* https://github.com/AOSSIE-Org/SupportUsButton/releases

- [x] 🔴 **release_notes_vulns** — Release notes identify every publicly known vulnerability fixed in that release.
- *Note:* `[~]` N/A — No publicly known vulnerabilities have been reported or fixed in releases to date. Any future security advisories and vulnerability fixes will be documented directly in GitHub Security Advisories and individual release notes at https://github.com/AOSSIE-Org/SupportUsButton/security/advisories and https://github.com/AOSSIE-Org/SupportUsButton/releases.

---

## 🐛 Reporting

### Bug Reporting

- [x] 🔴 **report_process** — A bug-reporting process exists.
- *Evidence URL:* https://github.com/AOSSIE-Org/SupportUsButton/issues

- [x] 🟡 **report_tracker** — An issue tracker is used to track individual bugs.
- *Evidence URL:* https://github.com/AOSSIE-Org/SupportUsButton/issues

- [x] 🔴 **report_responses** — Bug reports submitted are acknowledged promptly.
- *Self-certification note:* Maintained actively by AOSSIE core team.

- [x] 🟡 **enhancement_responses** — Enhancement requests receive a response.
- *Self-certification note:* Responded to on GitHub and Discord.

- [x] 🔴 **report_archive** — Reports and responses are publicly archived and searchable.
- *Evidence URL:* https://github.com/AOSSIE-Org/SupportUsButton/issues?q=is%3Aissue+is%3Aclosed

---

## ✅ Quality

### Build System

- [x] 🔴 **build** — Working build system exists (`npm run build`).
- *Evidence URL:* https://github.com/AOSSIE-Org/SupportUsButton/blob/main/.github/workflows/ci.yml

- [x] 🔵 **build_common_tools** — Common build tools are used (Rollup, Vite, Tailwind v4).
- *Evidence URL:* https://github.com/AOSSIE-Org/SupportUsButton/blob/main/package.json

- [x] 🟡 **build_floss_tools** — Built using only FLOSS tools.
- *Note:* Node.js, Rollup, Vite FLOSS stack.

### Automated Testing

- [x] 🔵 **test_invocation** — Test suite invoked via standard command (`npm run test`).
- *Evidence URL:* https://github.com/AOSSIE-Org/SupportUsButton/blob/main/package.json

- [x] 🔵 **test_most** — Test suite covers key component interfaces and hooks (`src/__tests__`).
- *Evidence URL:* https://github.com/AOSSIE-Org/SupportUsButton/blob/main/src/__tests__/SupportUsButton.test.ts

- [ ] Interactive online playground demo deployed to GitHub Pages.
- [ ] Automated npm release workflow via GitHub Actions on tagged releases.
- [x] 🔴 **warnings** — Compiler and type-checker strict flags enabled (`npx tsc --noEmit`).
- [x] 🔴 **warnings_fixed** — Zero linter/compiler warnings on build (`0 errors, 0 warnings`).

---

## 📑 Verification Log
## 🔐 Security & Analysis

* **TypeScript Validation (`npx tsc --noEmit`)**: ✅ Passed (0 errors)
* **Bundle Build (`npm run build`)**: ✅ Passed (0 warnings)
- [x] 🔴 **know_secure_design** — OWASP React security best practices followed (automatic XSS escaping, safe URL validation via `validateUrl`).
- [x] 🔴 **static_analysis_fixed** — CodeRabbit AI and TypeScript static analysis active on all commits.
- [x] 🔴 **audit_report** — Comprehensive end-to-end evaluation, testing, performance, and security audit report completed.
- *Evidence URL:* [`audit/AuditReport.md`](audit/AuditReport.md)
1 change: 1 addition & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
@AGENTS.md
12 changes: 6 additions & 6 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@

⭐ First off, thank you for considering contributing to this project! ⭐

We welcome contributions from everyone. By participating in this project, you agree to abide by our Code of Conduct.
We welcome contributions from everyone. By participating in this project, you agree to abide by our Code of Conduct and certify your contributions under the [Developer Certificate of Origin (DCO 1.1)](DCO.md) by including a `Signed-off-by:` commit trailer (`git commit -s`). See [COPYRIGHT.md](COPYRIGHT.md) for copyright statements.

## 💬 IMPORTANT: Discord Communication is Mandatory

**All project communication MUST happen on Discord in the [#support-us-button](https://discord.gg/vK2NfgG) channel. We do not pay attention to GitHub notifications.**
**All project communication MUST happen on Discord in the [#support-us-button](https://discord.com/channels/1022871757289422898/1458840574076387448) channel. We do not pay attention to GitHub notifications.**

- Join our [Discord server & #support-us-button channel](https://discord.gg/vK2NfgG) before starting any work
- Join our [Discord server & #support-us-button channel](https://discord.com/channels/1022871757289422898/1458840574076387448) before starting any work
Comment thread
coderabbitai[bot] marked this conversation as resolved.
- Post your PR/issue updates in the `#support-us-button` Discord channel (**MANDATORY**)
- All discussions, questions, and updates should be on Discord
- GitHub is for code only - Discord is for communication
Expand Down Expand Up @@ -137,13 +137,13 @@ npm run build

### 4. Commit Your Changes

Write clear, concise commit messages:
Write clear, concise commit messages. All commits must be signed off to satisfy DCO 1.1 (`git commit -s`), which appends a `Signed-off-by: Name <email>` trailer:

```bash
git add .
git commit -m "feat: add user authentication"
git commit -s -m "feat: add user authentication"
# or
git commit -m "fix: resolve navigation bug"
git commit -s -m "fix: resolve navigation bug"
```

**Commit Message Format:**
Expand Down
10 changes: 10 additions & 0 deletions COPYRIGHT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# Copyright

Copyright © 2026 AOSSIE (Australian Open Source Software Innovation and Education) <br />
Comment thread
coderabbitai[bot] marked this conversation as resolved.
All rights reserved.

All works in this repository may be used according to the conditions
stated in the LICENSE file available in this repository.

These works are WITHOUT ANY WARRANTY, without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
34 changes: 34 additions & 0 deletions DCO.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
Developer Certificate of Origin
Version 1.1

Copyright (C) 2004, 2006 The Linux Foundation and its contributors.

Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.
Comment on lines +1 to +7

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Exclude intentional non-heading first lines from MD041.

Both files use their first line as license-sensitive or tool-sensitive content. Configure Markdownlint exclusions instead of changing the file contents.

  • DCO.md#L1-L7: keep the canonical DCO text verbatim and exclude DCO.md from MD041.
  • CLAUDE.md#L1-L1: keep @AGENTS.md as the first directive and exclude CLAUDE.md from MD041.
🧰 Tools
🪛 markdownlint-cli2 (0.23.2)

[warning] 1-1: First line in a file should be a top-level heading

(MD041, first-line-heading, first-line-h1)

📍 Affects 2 files
  • DCO.md#L1-L7 (this comment)
  • CLAUDE.md#L1-L1
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@DCO.md` around lines 1 - 7, Configure Markdownlint to exclude DCO.md lines
1-7 and CLAUDE.md line 1 from MD041, preserving DCO.md’s canonical license text
and CLAUDE.md’s `@AGENTS.md` directive unchanged; update the Markdownlint
configuration rather than either file’s contents.

Source: Linters/SAST tools



Developer's Certificate of Origin 1.1

By making a contribution to this project, I certify that:

(a) The contribution was created in whole or in part by me and I
have the right to submit it under the open source license
indicated in the file; or

(b) The contribution is based upon previous work that, to the best
of my knowledge, is covered under an appropriate open source
license and I have the right under that license to submit that
work with modifications, whether created in whole or in part
by me, under the same open source license (unless I am
permitted to submit under a different license), as indicated
in the file; or

(c) The contribution was provided directly to me by some other
person who certified (a), (b) or (c) and I have not modified
it.

(d) I understand and agree that this project and the contribution
are public and that a record of the contribution (including all
personal information I submit with it, including my sign-off) is
maintained indefinitely and may be redistributed consistent with
this project or the open source license(s) involved.
36 changes: 18 additions & 18 deletions MAINTAINERS.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
# Maintainers

This document lists the maintainers of the **SupportUsButton** project.

| Name | GitHub Username | Discord Username | Email Address |
| -------------------------------- | ------------------ | ------------------ | ---------------------------- |
| Bruno Woltzenlogel Paleo | @Zahnentferner | @b.wp | zahnentferner@gmail.com |
| Rahul Vyas | @rahul-vyas-dev | @rahulvyas_dev | rahulvyas.5100@gmail.com |
| Saksham Jain | @reach2saksham | @theonlypro | reach2saksham2004@gmail.com |

---

## 📩 Contacting Maintainers

* **Security Vulnerabilities**: For private security reports, please email [reach2saksham2004@gmail.com](mailto:reach2saksham2004@gmail.com) directly before public disclosure.
* **Architectural Questions & Governance**:
1. **AOSSIE Discord Channel**: [#support-us-button](https://discord.gg/hjUhu33uAn)
2. **GitHub Issues**: [github.com/AOSSIE-Org/SupportUsButton/issues](https://github.com/AOSSIE-Org/SupportUsButton/issues)
# Maintainers
This document lists the maintainers of the **SupportUsButton** project.
| Name | GitHub Username | Discord Username | Email Address |
| -------------------------------- | ------------------ | ------------------ | ---------------------------- |
| Bruno Woltzenlogel Paleo | @Zahnentferner | @b.wp | zahnentferner@gmail.com |
| Rahul Vyas | @rahul-vyas-dev | @rahulvyas_dev | rahulvyas.5100@gmail.com |
| Saksham Jain | @reach2saksham | @theonlypro | reach2saksham2004@gmail.com |
---
## 📩 Contacting Maintainers
* **Security Vulnerabilities**: For private security reports, please email [reach2saksham2004@gmail.com](mailto:reach2saksham2004@gmail.com) directly before public disclosure.
* **Architectural Questions & Governance**:
1. **AOSSIE Discord Channel**: [#support-us-button](https://discord.com/channels/1022871757289422898/1458840574076387448)
2. **GitHub Issues**: [github.com/AOSSIE-Org/SupportUsButton/issues](https://github.com/AOSSIE-Org/SupportUsButton/issues)
Loading
Loading