diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..da46478 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,34 @@ +--- +name: Bug Report +about: Create a report to help us improve +title: '[BUG] ' +labels: bug +assignees: '' + +--- + +## Description +A clear and concise description of what the bug is. + +## Steps to Reproduce +1. Go to '...' +2. Click on '....' +3. Scroll down to '....' +4. See error + +## Expected Behavior +A clear and concise description of what you expected to happen. + +## Actual Behavior +A clear and concise description of what actually happened. + +## Screenshots +If applicable, add screenshots to help explain your problem. + +## Environment +- OS: [e.g. Windows, macOS, Linux] +- Browser (if applicable): [e.g. Chrome, Safari] +- Version: [e.g. 1.0.0] + +## Additional Context +Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 0000000..fb011a4 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,23 @@ +--- +name: Feature Request +about: Suggest an idea for this project +title: '[FEATURE] ' +labels: enhancement +assignees: '' + +--- + +## Is your feature request related to a problem? +A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + +## Describe the solution you'd like +A clear and concise description of what you want to happen. + +## Describe alternatives you've considered +A clear and concise description of any alternative solutions or features you've considered. + +## Additional Context +Add any other context or screenshots about the feature request here. + +## Possible Implementation +If you have ideas on how this could be implemented, please share them here. diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..ca112cc --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,31 @@ +## Description +Please include a summary of the changes and which issue is fixed (if applicable). + +Fixes # (issue) + +## Type of Change +Please delete options that are not relevant. + +- [ ] Bug fix (non-breaking change which fixes an issue) +- [ ] New feature (non-breaking change which adds functionality) +- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected) +- [ ] Documentation update +- [ ] Other (please describe): + +## How Has This Been Tested? +Please describe the tests that you ran to verify your changes. + +- [ ] Test A +- [ ] Test B + +## Checklist +- [ ] My code follows the style guidelines of this project +- [ ] I have performed a self-review of my own code +- [ ] I have commented my code, particularly in hard-to-understand areas +- [ ] I have made corresponding changes to the documentation +- [ ] My changes generate no new warnings +- [ ] I have added tests that prove my fix is effective or that my feature works +- [ ] New and existing unit tests pass locally with my changes + +## Additional Notes +Add any other context about the pull request here. diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..aac4d74 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,67 @@ +name: CI + +on: + push: + branches: [ main, master ] + pull_request: + branches: [ main, master ] + +jobs: + validate: + name: Validate Repository Structure + runs-on: ubuntu-latest + permissions: + contents: read + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Check for required files + run: | + echo "Checking for required repository files..." + + required_files=( + "README.md" + "LICENSE" + "CONTRIBUTING.md" + "CODE_OF_CONDUCT.md" + "SECURITY.md" + ) + + missing_files=() + + for file in "${required_files[@]}"; do + if [ ! -f "$file" ]; then + missing_files+=("$file") + echo "❌ Missing: $file" + else + echo "✅ Found: $file" + fi + done + + if [ ${#missing_files[@]} -ne 0 ]; then + echo "" + echo "Error: Missing required files" + exit 1 + fi + + echo "" + echo "✅ All required files are present" + + - name: Validate markdown files + run: | + echo "Validating markdown files..." + + markdown_files=$(find . -name "*.md" -not -path "./node_modules/*" -not -path "./.git/*") + + for file in $markdown_files; do + echo "Checking $file" + # Basic validation - check if file is not empty + if [ ! -s "$file" ]; then + echo "❌ $file is empty" + exit 1 + fi + done + + echo "✅ All markdown files are valid" diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9aae61c --- /dev/null +++ b/.gitignore @@ -0,0 +1,66 @@ +# Operating System Files +.DS_Store +.DS_Store? +._* +.Spotlight-V100 +.Trashes +ehthumbs.db +Thumbs.db +*~ + +# IDE and Editor Files +.vscode/ +.idea/ +*.swp +*.swo +*.swn +*.bak +*.sublime-project +*.sublime-workspace + +# Logs +logs/ +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* + +# Dependencies +node_modules/ +vendor/ +bower_components/ + +# Build outputs +dist/ +build/ +out/ +target/ +*.egg-info/ +__pycache__/ +*.pyc +*.pyo +*.pyd +.Python +pip-log.txt +pip-delete-this-directory.txt + +# Test coverage +coverage/ +*.cover +.coverage +.coverage.* +htmlcov/ +.pytest_cache/ +.tox/ + +# Environment variables +.env +.env.local +.env.*.local +*.env + +# Temporary files +tmp/ +temp/ +*.tmp diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..4c0b3ed --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,43 @@ +# Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience +* Focusing on what is best not just for us as individuals, but for the overall community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or advances of any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email address, without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of acceptable behavior and will take appropriate and fair corrective action in response to any behavior that they deem inappropriate, threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when an individual is officially representing the community in public spaces. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement. All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the reporter of any incident. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org), version 2.0, available at https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..a05fdc5 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,57 @@ +# Contributing to will-glas-test + +Thank you for your interest in contributing to this project! We welcome contributions from everyone. + +## How to Contribute + +### Reporting Issues + +If you find a bug or have a suggestion for improvement: + +1. Check if the issue already exists in the [Issues](https://github.com/willglas/will-glas-test/issues) section +2. If not, create a new issue with a clear title and description +3. Include steps to reproduce (for bugs) or use cases (for features) + +### Submitting Changes + +1. **Fork the Repository** + ```bash + git clone https://github.com/willglas/will-glas-test.git + cd will-glas-test + ``` + +2. **Create a Branch** + ```bash + git checkout -b feature/your-feature-name + ``` + +3. **Make Your Changes** + - Write clear, concise commit messages + - Follow existing code style and conventions + - Add tests if applicable + +4. **Commit Your Changes** + ```bash + git add . + git commit -m "Add a descriptive commit message" + ``` + +5. **Push to Your Fork** + ```bash + git push origin feature/your-feature-name + ``` + +6. **Open a Pull Request** + - Go to the original repository + - Click "New Pull Request" + - Select your branch and describe your changes + +## Code of Conduct + +Please note that this project follows a [Code of Conduct](CODE_OF_CONDUCT.md). By participating, you are expected to uphold this code. + +## Questions? + +Feel free to open an issue for any questions or clarifications. + +Thank you for contributing! diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..9f8e953 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2025 Will Glas + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index cb3e76a..6216285 100644 --- a/README.md +++ b/README.md @@ -1 +1,41 @@ -# will-glas-test \ No newline at end of file +# will-glas-test + +[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) + +## Description + +This is a test repository for demonstrating best practices in repository management and documentation. + +## Table of Contents + +- [Description](#description) +- [Installation](#installation) +- [Usage](#usage) +- [Contributing](#contributing) +- [License](#license) +- [Security](#security) + +## Installation + +To clone this repository, run: + +```bash +git clone https://github.com/willglas/will-glas-test.git +cd will-glas-test +``` + +## Usage + +This repository serves as a template and example of good repository practices. Feel free to explore the structure and documentation. + +## Contributing + +We welcome contributions! Please see our [Contributing Guidelines](CONTRIBUTING.md) for more details on how to get started. + +## License + +This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. + +## Security + +For information on reporting security vulnerabilities, please see our [Security Policy](SECURITY.md). \ No newline at end of file diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 0000000..d42feff --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,51 @@ +# Security Policy + +## Reporting a Vulnerability + +We take the security of this project seriously. If you discover a security vulnerability, please follow these steps: + +### How to Report + +1. **Do not** open a public issue for security vulnerabilities +2. Send an email to the repository maintainer with details of the vulnerability +3. Include the following information: + - Description of the vulnerability + - Steps to reproduce + - Potential impact + - Suggested fix (if any) + +### What to Expect + +- **Initial Response**: You will receive an acknowledgment within 48 hours +- **Status Updates**: We will keep you informed about the progress +- **Resolution**: Once the vulnerability is confirmed and fixed, we will: + - Release a security patch + - Credit you for the discovery (if you wish) + - Publish a security advisory + +## Supported Versions + +Currently, this project is in active development. Security updates will be applied to the latest version. + +| Version | Supported | +| ------- | ------------------ | +| Latest | :white_check_mark: | + +## Security Best Practices + +When contributing to this project: + +- Never commit sensitive information (passwords, API keys, tokens) +- Review dependencies for known vulnerabilities +- Follow secure coding practices +- Keep dependencies up to date + +## Disclosure Policy + +We follow a coordinated disclosure policy. We request that you: + +- Give us reasonable time to address the issue before public disclosure +- Avoid exploiting the vulnerability beyond what is necessary to demonstrate it +- Make a good faith effort to avoid privacy violations and data destruction + +Thank you for helping keep this project secure!