Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
258 changes: 258 additions & 0 deletions BestPracticesChecklist.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,258 @@
# AOSSIE Best Practices Checklist

> 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.

> **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.
>
> **How to use:**
> 1. Fill in checkboxes below — tick `[x]` for Met, leave `[ ]` for Unmet, use `[~]` for N/A
> 2. Add a brief note or URL after each item as evidence
> 3. Run the checklist-score workflow to update the badge automatically
>
> **Legend:**
> - 🔴 MUST — Required for passing
> - 🟡 SHOULD — Required unless documented rationale given
> - 🔵 SUGGESTED — Optional but recommended
> - ⚪ N/A — Mark `[~]` if not applicable, add justification

---

## Score Summary

<!-- Auto-updated by checklist-score.yml workflow — do not edit manually -->
| Category | Met | Total | Status |
|--------------------|-----|-------|--------|
| Basics | 0 | 8 | 🔴 |
| Change Control | 0 | 6 | 🔴 |
| Reporting | 0 | 8 | 🔴 |
| Quality | 0 | 11 | 🔴 |
| Security | 0 | 9 | 🔴 |
| Analysis | 0 | 7 | 🔴 |
| **Total** | **0** | **49** | **0%** |
---

## 🏗️ Basics

### Project Website & Documentation

- [ ] 🔴 **description_good** — The project README/website clearly describes what the software does and what problem it solves.
- *Evidence URL:*

- [ ] 🔴 **interact** — The project provides information on how to obtain the software, submit bug reports, and contribute.
- *Evidence URL:*

- [ ] 🔴 **contribution** — `CONTRIBUTING.md` explains the contribution process (e.g., PRs are used, how to open one).
- *Evidence URL:*

- [ ] 🟡 **contribution_requirements** — `CONTRIBUTING.md` references acceptable contribution standards (coding style, tests required, etc.).
- *Evidence URL:*

- [ ] 🔴 **documentation_basics** — Basic documentation exists for the software (README, Wiki, or docs folder).
- *Evidence URL:* `[ ]` N/A — *Justification:*

- [ ] 🔴 **documentation_interface** — Reference documentation describes the external interface (API inputs/outputs, CLI flags, config schema, etc.).
- *Evidence URL:* `[ ]` N/A — *Justification:*

### Other Basics

- [ ] 🔴 **discussion** — Project has a searchable, URL-addressable discussion mechanism (GitHub Issues, Discord with archive, mailing list, etc.) that doesn't require proprietary client software.
- *Evidence URL:*

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

---

## 🔄 Change Control

### Version Control

- [ ] 🔵 **repo_distributed** — Project uses a distributed VCS (e.g., git). *(SUGGESTED)*
- *Evidence URL:*

### Version Numbering

- [ ] 🔴 **version_unique** — Each release has a unique version identifier (e.g., v1.0.0).
- *Evidence URL:*

- [ ] 🔵 **version_semver** — Project uses [SemVer](https://semver.org) or [CalVer](https://calver.org/) format. *(SUGGESTED)*
- *Note:*

- [ ] 🔵 **version_tags** — Releases are tagged in the VCS (e.g., `git tag v1.0.0`). *(SUGGESTED)*
- *Evidence URL:*

### Release Notes

- [ ] 🔴 **release_notes** — Each release includes human-readable release notes summarizing major changes. Raw `git log` output is NOT acceptable.
- *Evidence URL:* `[ ]` N/A — *Justification (continuous delivery / no external reuse):*

- [ ] 🔴 **release_notes_vulns** — Release notes identify every publicly known vulnerability (with CVE) fixed in that release.
- *Evidence URL:* `[ ]` N/A — *Justification (no publicly known vulns / users can't self-update):*

---

## 🐛 Reporting

### Bug Reporting

- [ ] 🔴 **report_process** — A bug-reporting process exists (e.g., GitHub Issues link in README).
- *Evidence URL:*

- [ ] 🟡 **report_tracker** — An issue tracker (e.g., GitHub Issues) is used to track individual bugs.
- *Evidence URL:*

- [ ] 🔴 **report_responses** — A majority of bug reports submitted in the last 2–12 months have been acknowledged (response ≠ fix).
- *Self-certification note:*

- [ ] 🟡 **enhancement_responses** — More than 50% of enhancement requests in the last 2–12 months have received a response.
- *Self-certification note:*

- [ ] 🔴 **report_archive** — Reports and responses are publicly archived and searchable (GitHub Issues satisfies this).
- *Evidence URL:*

### Vulnerability Reporting

- [ ] 🔴 **vulnerability_report_process** — A vulnerability reporting process is documented (e.g., `SECURITY.md`).
- *Evidence URL:*

- [ ] 🟡 **vulnerability_report_private** — If private vulnerability reporting is supported, the method for private submission is documented.
- *Evidence URL:* `[ ]` N/A — *Justification:*

- [ ] 🔴 **vulnerability_report_response** — Initial response to any vulnerability report received in the last 6 months was within 14 days.
- *Self-certification note:* `[ ]` N/A — *Justification (no reports received):*

---

## ✅ Quality

### Build System

- [ ] 🔴 **build** — If the project requires building, a working build system exists that can auto-rebuild from source.
- *Evidence URL:* `[ ]` N/A — *Justification (interpreted language / no build step):*

- [ ] 🔵 **build_common_tools** — Common build tools are used (npm, pip, cargo, make, gradle, etc.). *(SUGGESTED)*
- *Evidence URL:* `[ ]` N/A

- [ ] 🟡 **build_floss_tools** — The project can be built using only FLOSS tools.
- *Note:* `[ ]` N/A

### Automated Testing

- [ ] 🔵 **test_invocation** — The test suite can be invoked in a standard way for the language (e.g., `npm test`, `pytest`, `cargo test`). *(SUGGESTED)*
- *Evidence URL:*

- [ ] 🔵 **test_most** — The test suite covers most code branches, input fields, and functionality. *(SUGGESTED)*
- *Estimated coverage %:*

### New Functionality Testing Policy

- [ ] 🔴 **test_policy** — The project has a general policy that new functionality must include tests in the automated test suite.
- *Evidence (CONTRIBUTING reference or informal policy):*

- [ ] 🔴 **tests_are_added** — Evidence exists that the test policy has been followed in recent major changes (e.g., PRs include tests).
- *Evidence URL (recent PR with tests):*

- [ ] 🔵 **tests_documented_added** — The test policy is documented in contribution instructions. *(SUGGESTED)*
- *Evidence URL:*

### Linting / Warning Flags

- [ ] 🔴 **warnings** — At least one linter or compiler warning flag is enabled (ESLint, Pylint, clippy, golangci-lint, Slither for Solidity, etc.).
- *Tool used:*

- [ ] 🔴 **warnings_fixed** — Warnings from the linter are addressed (not suppressed without reason).
- *Note:*

- [ ] 🔵 **warnings_strict** — Project uses maximum strictness in linter config where practical. *(SUGGESTED)*
- *Note:*

---

## 🔐 Security

### Secure Development Knowledge

- [ ] 🔴 **know_secure_design** — At least one primary developer knows how to design secure software (familiar with OWASP, threat modeling, secure-by-default principles).
- *Self-certification note:*

- [ ] 🔴 **know_common_errors** — At least one primary developer knows common vulnerability types for this software's category and how to mitigate them (e.g., injection, XSS, reentrancy for Solidity, prompt injection for AI).
- *Self-certification note:*

### Cryptography (mark N/A if project does not handle cryptography)

- [ ] 🔴 **crypto_published** — Only publicly reviewed cryptographic protocols/algorithms are used by default.
- *Note:* `[ ]` N/A

- [ ] 🟡 **crypto_call** — Project calls an established crypto library rather than reimplementing crypto functions.
- *Library used:* `[ ]` N/A

- [ ] 🔴 **crypto_working** — No broken algorithms (MD4, MD5, single DES, RC4, Dual_EC_DRBG) used unless required for interoperability (must be documented).
- *Note:* `[ ]` N/A

- [ ] 🔴 **crypto_keylength** — Key lengths meet [NIST 2030 minimums](https://www.keylength.com/en/4/) by default.
- *Note:* `[ ]` N/A

- [ ] 🔴 **crypto_password_storage** — Passwords for external users are stored as iterated salted hashes (Argon2id, bcrypt, scrypt, PBKDF2).
- *Note:* `[ ]` N/A — *Justification (project doesn't store passwords):*

- [ ] 🔴 **crypto_random** — Cryptographic keys and nonces are generated using a CSPRNG; insecure generators (Math.random, rand()) are NOT used for security purposes.
- *Note:* `[ ]` N/A

- [ ] 🟡 **delivery_unsigned** — Cryptographic hashes are NOT retrieved over plain HTTP without a signature check.
- *Note:*

---

## 🔬 Analysis

### Static Code Analysis

- [ ] 🔴 **static_analysis_fixed** — All medium+ severity vulnerabilities found by static analysis are fixed in a timely manner after confirmation.
- *Note:* `[ ]` N/A

- [ ] 🔵 **static_analysis_common_vulnerabilities** — The static analysis tool includes checks for common vulnerabilities in the language/environment (e.g., eslint-plugin-security, bandit, Slither). *(SUGGESTED)*
- *Tool + ruleset:* `[ ]` N/A

- [ ] 🔵 **static_analysis_often** — Static analysis runs on every commit or at least daily (CI integration). *(SUGGESTED)*
- *Evidence URL:* `[ ]` N/A

### Dynamic Code Analysis

- [ ] 🔵 **dynamic_analysis** — At least one dynamic analysis tool is applied before major releases (fuzzer, web app scanner like OWASP ZAP, etc.). *(SUGGESTED)*
- *Tool used:* `[ ]` N/A — *Justification:*

- [ ] 🔵 **dynamic_analysis_enable_assertions** — Dynamic analysis / testing runs with assertions enabled (not just production mode). *(SUGGESTED)*
- *Note:*

- [ ] 🔴 **dynamic_analysis_fixed** — Medium+ severity vulnerabilities found by dynamic analysis are fixed in a timely manner.
- *Note:* `[ ]` N/A

- [ ] 🔵 **dynamic_analysis_unsafe** — If the project uses memory-unsafe languages (C/C++), memory safety tools (Valgrind, AddressSanitizer) are used. *(SUGGESTED)*
- *Note:* `[ ]` N/A — *Justification (project uses memory-safe languages):*

---

## 📎 Project-Specific Notes

> Add domain-specific notes here for Web3, Full-Stack, or AI projects.

### Web3 / Solidity Notes
- Scorecard does not audit Solidity-specific security. Use [Slither](https://github.com/crytic/slither) for `static_analysis` and `warnings` criteria.
- For `crypto_*` criteria, document which cryptographic primitives your contracts rely on (e.g., ECDSA in EVM is standard).
- Smart contract audit reports count as evidence for `know_secure_design`.

### Full-Stack / Next.js Notes
- For `crypto_password_storage`: document which auth library handles hashing (e.g., NextAuth + bcrypt).
- For `dynamic_analysis`: [OWASP ZAP](https://www.zaproxy.org/) can be run as a GitHub Action.

### AI / LLM Notes
- For `know_common_errors`: include awareness of prompt injection, data leakage, and model output validation.
- For `dynamic_analysis`: consider adversarial input testing as a form of dynamic analysis.

---

*This checklist complements [OpenSSF Scorecard](https://scorecard.dev/) (auto-detected checks) and is
inspired by the [OpenSSF Best Practices Badge](https://www.bestpractices.dev/en/criteria/0) passing criteria.*
67 changes: 67 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
# Contributing to TODO:PROJECT Website

We welcome contributions of all kinds! Whether you are fixing a bug, adding a feature, improving documentation, or optimizing performance, your help is appreciated.

---

## 💬 Join our Discord Community

If you have questions, feedback, or want to discuss ideas before building:
- **AOSSIE Discord Server:** [https://discord.gg/hjUhu33uAn](https://discord.gg/hjUhu33uAn)
- **Discrod Channel:** `#TODO: Channel Name` channel in the TODO:Project Discord server

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 | 🟡 Minor | ⚡ Quick win

Correct the Discord label.

Discrod Channel is misspelled. Change it to Discord Channel.

🤖 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 `@CONTRIBUTING.md` at line 11, Correct the misspelled “Discrod Channel” label
in the contribution instructions to “Discord Channel,” leaving the surrounding
channel and server references unchanged.


---

## 🛠️ Getting Started

### 1. Prerequisites

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 | 🟡 Minor | ⚡ Quick win

Apply the Markdown formatting fixes reported by markdownlint.

  • CONTRIBUTING.md#L17-L17: add blank lines around the Prerequisites heading.
  • CONTRIBUTING.md#L21-L22: add a blank line before the Fork & Clone code fence.
  • CONTRIBUTING.md#L27-L28: add a blank line before the Install Dependencies code fence.
  • CONTRIBUTING.md#L32-L35: add blank lines around the development-server code fence.
  • CONTRIBUTING.md#L43-L52: add blank lines around the pull-request code fences.
  • BestPracticesChecklist.md#L5-L5: remove the blank line inside the opening blockquote.
  • BestPracticesChecklist.md#L34-L35: add a blank line after the score table.
  • BestPracticesChecklist.md#L242-L243: add a blank line after the Web3 heading.
  • BestPracticesChecklist.md#L247-L248: add a blank line after the Full-Stack / Next.js heading.
  • BestPracticesChecklist.md#L251-L252: add a blank line after the AI / LLM heading.
  • BestPracticesChecklist.md#L258-L258: terminate the file with exactly one newline.
🧰 Tools
🪛 markdownlint-cli2 (0.23.2)

[warning] 17-17: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)

📍 Affects 2 files
  • CONTRIBUTING.md#L17-L17 (this comment)
  • CONTRIBUTING.md#L21-L22
  • CONTRIBUTING.md#L27-L28
  • CONTRIBUTING.md#L32-L35
  • CONTRIBUTING.md#L43-L52
  • BestPracticesChecklist.md#L5-L5
  • BestPracticesChecklist.md#L34-L35
  • BestPracticesChecklist.md#L242-L243
  • BestPracticesChecklist.md#L247-L248
  • BestPracticesChecklist.md#L251-L252
  • BestPracticesChecklist.md#L258-L258
🤖 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 `@CONTRIBUTING.md` at line 17, Apply markdownlint spacing fixes: in
CONTRIBUTING.md, add required blank lines around the “Prerequisites” heading
(17-17), before the “Fork & Clone” fence (21-22), before “Install Dependencies”
(27-28), around the development-server fence (32-35), and around the
pull-request fences (43-52); in BestPracticesChecklist.md, remove the blank line
inside the opening blockquote (5-5), add blank lines after the score table
(34-35) and Web3 (242-243), Full-Stack / Next.js (247-248), and AI / LLM
(251-252) headings, and ensure the file ends with exactly one newline (258-258).

Source: Linters/SAST tools

- **Node.js**: `v20.9.0` or higher
- **npm**: `v9` or higher

### 2. Fork & Clone
```bash
git clone https://github.com/AOSSIE-Org/Resonate-Website.git
cd Resonate-Website
```

### 3. Install Dependencies
```bash
npm install
```

### 4. Run Development Server
```bash
npm run dev
```
Open [http://localhost:3000](http://localhost:3000) to view the site.

---

## 📜 Pull Request Guidelines

1. **Create a Feature Branch:**
```bash
git checkout -b feature/your-feature-name
```
2. **Quality Checks:**
Run lint and test commands before submitting:
```bash
npm run lint
npm run test
npm run build
```
3. **Commit Messages:**
Use clear, descriptive commit messages following Conventional Commits (e.g., `feat: add social share buttons`, `fix: header logo alignment`).
4. **Developer Certificate of Origin (DCO):**
Ensure your commits adhere to our [`DCO.md`](DCO.md).

---

## 📋 Code Style & Architecture

- **Next.js 16 App Router:** Use React Server Components by default. Use `"use client"` only for interactive stateful components.
- **Tailwind CSS v4:** Use central semantic CSS variables (`bg-background`, `text-foreground`). Avoid ad-hoc inline dark classes.
- **Internationalization (i18n):** User-visible strings should be added to catalog files in `src/messages/en.json` and `src/messages/hi.json`. Use navigation helpers from `src/i18n/navigation.ts`.
- **Zero TODOs Policy:** Ensure all code, documentation, and metadata files contain no remaining `TODO` placeholders.

Thank you for contributing to AOSSIE & Resonate!
6 changes: 5 additions & 1 deletion MAINTAINERS.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,4 +20,8 @@ This document lists the individuals fulfilling the key roles of [Maintainer](htt

| Name | GitHub Username | Discord Username | Area / Focus |
| ---- | --------------- | ---------------- | -------------------------------- |
| TODO | @username | @discord_user | Repository Maintenance & Merging |
| TODO | @username | @discord_user | Repository Maintenance & Merging |

## 📜 Contribution Guidelines

Please read our [`CONTRIBUTING.md`](CONTRIBUTING.md) and [`DCO.md`](DCO.md) before submitting pull requests. All contributions are welcome!

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 | 🟡 Minor | ⚡ Quick win

Add the required final newline.

markdownlint-cli2 reports MD047 on Line 27. End MAINTAINERS.md with exactly one newline character.

🧰 Tools
🪛 markdownlint-cli2 (0.23.2)

[warning] 27-27: Files should end with a single newline character

(MD047, single-trailing-newline)

🤖 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 `@MAINTAINERS.md` at line 27, Ensure MAINTAINERS.md ends with exactly one
newline character after the final contribution guidance sentence, resolving the
markdownlint MD047 violation without changing the document content.

Source: Linters/SAST tools


📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Fix the CONTRIBUTING.md link before merge.

The repository context indicates that CONTRIBUTING.md is not present. Contributors will reach a dead relative link. Add the file or change the link to the correct contribution guide.

🧰 Tools
🪛 markdownlint-cli2 (0.23.2)

[warning] 27-27: Files should end with a single newline character

(MD047, single-trailing-newline)

🤖 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 `@MAINTAINERS.md` at line 27, Resolve the broken contribution-guide reference
in MAINTAINERS.md by either adding the missing CONTRIBUTING.md file or updating
the link to the repository’s existing contribution guide. Ensure the resulting
relative link points to a valid document before submission.

Loading
Loading