diff --git a/.github/ISSUE_TEMPLATE/data_issue_report.yml b/.github/ISSUE_TEMPLATE/data_issue_report.yml new file mode 100644 index 0000000..e80b53b --- /dev/null +++ b/.github/ISSUE_TEMPLATE/data_issue_report.yml @@ -0,0 +1,50 @@ +name: 📊 Report Data Issue +description: Report faulty or missing data +title: '[DATE]: [TITLE]' +labels: [data issue] +body: + - type: markdown + attributes: + value: A clear and concise description of the data issue. Use this template to report problems with data files, datasets, or data quality. + - type: input + id: dataset + attributes: + label: 'Dataset Information' + description: 'Specify the file path or dataset name' + placeholder: 'e.g., data/users.csv or API endpoint /api/v1/data' + validations: + required: true + - type: textarea + id: expected_data + attributes: + label: 'Expected Data' + description: 'A clear and concise description of what the expected data should be.' + placeholder: 'Describe the expected data structure, values, or behavior.' + validations: + required: true + - type: textarea + id: actual_data + attributes: + label: 'Actual Data' + description: 'A clear and concise description of what the actual data is, including any discrepancies or errors.' + placeholder: 'Describe the actual data found, including specific errors, missing values, or incorrect formats.' + validations: + required: true + - type: input + id: screenshot + attributes: + label: 'Screenshot/Example (if applicable)' + description: 'Provide a link to a screenshot or example file demonstrating the issue' + placeholder: 'https://... or attach files below' + - type: textarea + id: impact + attributes: + label: 'Impact' + description: 'Describe the impact of this data issue on your work or the project' + placeholder: 'e.g., Cannot proceed with analysis, incorrect results generated, etc.' + - type: textarea + id: additional_context + attributes: + label: 'Additional Context' + description: 'Add any other context about the issue here.' + placeholder: 'Include steps to reproduce, when the issue was first noticed, or any potential causes.' diff --git a/.husky/pre-commit b/.husky/pre-commit index b867ec2..0ad376d 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1 +1 @@ -pnpm check +npm run check diff --git a/.zenodo.json b/.zenodo.json new file mode 100644 index 0000000..4bb0b0e --- /dev/null +++ b/.zenodo.json @@ -0,0 +1,21 @@ +{ + "title": "REPO_NAME", + "description": "SHORT_DESCRIPTION", + "license": "AGPL-3.0", + "upload_type": "software", + "creators": [ + { + "name": "FULLNAME", + "affiliation": "Your Institution" + } + ], + "keywords": ["github", "template"], + "related_identifiers": [ + { + "scheme": "url", + "identifier": "https://github.com/USERNAME/REPO_NAME", + "relation": "isSupplementTo" + } + ], + "contributors": [] +} diff --git a/CITATION.cff b/CITATION.cff new file mode 100644 index 0000000..70bcfea --- /dev/null +++ b/CITATION.cff @@ -0,0 +1,18 @@ +# Go to https://citation-file-format.github.io/ to learn more about the Citation File Format. +cff-version: 1.2.0 +title: REPO_NAME +message: >- + If you use this software, please cite it using the + metadata from this file. +type: software +authors: + - family-names: FULLNAME + email: '[INSERT CONTACT METHOD]' +repository-code: 'https://github.com/USERNAME/REPO_NAME' +url: 'https://github.com/USERNAME/REPO_NAME' +abstract: SHORT_DESCRIPTION +keywords: + - github + - template +license: AGPL-3.0 +version: 0.0.1 diff --git a/README.md b/README.md index 494c9c7..e22c4c1 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,7 @@ This is a GitHub template designed for small projects that is independent of the [![GitHub forks](https://img.shields.io/github/forks/maehr/github-template.svg)](https://github.com/maehr/github-template/network) [![GitHub stars](https://img.shields.io/github/stars/maehr/github-template.svg)](https://github.com/maehr/github-template/stargazers) [![GitHub license](https://img.shields.io/github/license/maehr/github-template.svg)](https://github.com/maehr/github-template/blob/main/LICENSE.md) +[![DOI](https://zenodo.org/badge/DOI/YOUR_DOI_HERE.svg)](https://doi.org/YOUR_DOI_HERE) ## Why use a template (even for small projects) @@ -14,6 +15,7 @@ This is a GitHub template designed for small projects that is independent of the - Increase [security](#security) - Follow recognized [ethical principles](#ethics) - Promote [Free and Open-source software](#foss) +- Enable proper [academic citation](#citation) and archiving ## How this template helps you @@ -24,6 +26,7 @@ This is a GitHub template designed for small projects that is independent of the - Automated [CHANGELOG.md](CHANGELOG.md) via [git-cliff](https://github.com/orhun/git-cliff) - [package.json](package.json) according to [npm docs](https://docs.npmjs.com/cli/v7/configuring-npm/package-json) - Accessible documentation via [gh-pages](https://help.github.com/en/articles/configuring-a-publishing-source-for-github-pages) +- [TODO.md](TODO.md) checklist for project setup and customization ### Consistency @@ -31,7 +34,7 @@ This is a GitHub template designed for small projects that is independent of the - Consistent commit messages according to [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) via [husky](https://github.com/typicode/husky) - Consistent versioning via [Semantic Versioning](https://semver.org/spec/v2.0.0.html) - Consistent [fork and pull](https://gist.github.com/Chaser324/ce0505fbed06b947d962) workflow via [GitHub branch protection](https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/defining-the-mergeability-of-pull-requests/managing-a-branch-protection-rule) -- Consistent issues via [issue templates](https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/configuring-issue-templates-for-your-repository) +- Consistent issues via [issue templates](https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/configuring-issue-templates-for-your-repository) including specialized templates for bugs, features, documentation, and data issues ### Security @@ -48,6 +51,12 @@ This is a GitHub template designed for small projects that is independent of the - [LICENSE.md](LICENSE.md) according to [choosealicense.com](https://choosealicense.com/) +### Citation + +- [CITATION.cff](CITATION.cff) according to [Citation File Format](https://citation-file-format.github.io/) +- Automatic archiving with [Zenodo](https://zenodo.org/) via [.zenodo.json](.zenodo.json) for DOI generation +- GitHub citation widget support for proper academic attribution + ## Installation To initialize the template, [generate](https://github.com/maehr/github-template/generate) or [clone](https://docs.github.com/en/github/creating-cloning-and-archiving-repositories/cloning-a-repository) the repository to your local machine and follow this guide. @@ -59,11 +68,11 @@ npm install npm run prepare ``` -2. Complete the following checklist of tasks to customize the template for your project: +2. Complete the comprehensive setup checklist in [TODO.md](TODO.md) to customize the template for your project. This includes: - [ ] enable [GitHub security alerts](https://github.blog/2017-11-16-introducing-security-alerts-on-github/) - [ ] [protect](https://help.github.com/en/articles/configuring-protected-branches) the main branch to enforce a [fork and pull](https://gist.github.com/Chaser324/ce0505fbed06b947d962) workflow -- [ ] search and replace `FULLNAME`, `USERNAME`, `REPO_NAME`, `SHORT_DESCRIPTION` `[INSERT CONTACT METHOD]` in [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md), [package.json](package.json), [README.md](README.md), [SECURITY.md](SECURITY.md), [config.yml](.github/ISSUE_TEMPLATE/config.yml) +- [ ] search and replace `FULLNAME`, `USERNAME`, `REPO_NAME`, `SHORT_DESCRIPTION`, `[INSERT CONTACT METHOD]` in [CITATION.cff](CITATION.cff), [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md), [package.json](package.json), [README.md](README.md), [SECURITY.md](SECURITY.md), [config.yml](.github/ISSUE_TEMPLATE/config.yml), and [.zenodo.json](.zenodo.json) - [ ] add favicons to `./`, e.g. via [favicon.io](https://favicon.io/) - [ ] search for `TODO` in the project (mostly documentation) and fix it - [ ] delete [README.md](README.md) diff --git a/README.template.md b/README.template.md index 4def15c..f90d47e 100644 --- a/README.template.md +++ b/README.template.md @@ -6,6 +6,7 @@ SHORT_DESCRIPTION [![GitHub forks](https://img.shields.io/github/forks/USERNAME/REPO_NAME.svg)](https://github.com/USERNAME/REPO_NAME/network) [![GitHub stars](https://img.shields.io/github/stars/USERNAME/REPO_NAME.svg)](https://github.com/USERNAME/REPO_NAME/stargazers) [![GitHub license](https://img.shields.io/github/license/USERNAME/REPO_NAME.svg)](https://github.com/USERNAME/REPO_NAME/blob/main/LICENSE.md) +[![DOI](https://zenodo.org/badge/DOI/YOUR_DOI_HERE.svg)](https://doi.org/YOUR_DOI_HERE) ## Installation @@ -29,6 +30,7 @@ This project is maintained by [@USERNAME](https://github.com/USERNAME). Please u | Type | Platforms | | -------------------------------------- | ----------------------------------------------------------------------- | | 🚨 **Bug Reports** | [GitHub Issue Tracker](https://github.com/USERNAME/REPO_NAME/issues) | +| 📊 **Data Issues** | [GitHub Issue Tracker](https://github.com/USERNAME/REPO_NAME/issues) | | 📚 **Docs Issue** | [GitHub Issue Tracker](https://github.com/USERNAME/REPO_NAME/issues) | | 🎁 **Feature Requests** | [GitHub Issue Tracker](https://github.com/USERNAME/REPO_NAME/issues) | | 🛡 **Report a security vulnerability** | See [SECURITY.md](SECURITY.md) | diff --git a/TODO.md b/TODO.md new file mode 100644 index 0000000..cdf6f54 --- /dev/null +++ b/TODO.md @@ -0,0 +1,41 @@ +# Project Setup Checklist + +Complete the following steps after creating your project from this template to customize and finalize your project. + +## Essential Setup Tasks + +- [ ] **Enable GitHub Security Alerts**: Navigate to your repository's "Security" tab on GitHub and enable Dependabot alerts and security updates to monitor vulnerabilities in dependencies. +- [ ] **Protect the Main Branch**: In repository settings under "Branches", add a branch protection rule for `main` to require pull request reviews before merging and prevent force pushes. +- [ ] **Update Project Details**: Replace all placeholder values in the following files with your actual project information: + - `FULLNAME` → Your full name (e.g., "Jane Doe") + - `USERNAME` → Your GitHub username (e.g., "janedoe") + - `REPO_NAME` → Your repository name (e.g., "my-awesome-project") + - `SHORT_DESCRIPTION` → Brief description of your project (e.g., "A template for small GitHub projects") + - `[INSERT CONTACT METHOD]` → Your contact email or preferred method + - Files to update: `.github/ISSUE_TEMPLATE/config.yml`, `CITATION.cff`, `CODE_OF_CONDUCT.md`, `package.json`, `README.template.md`, and `SECURITY.md` +- [ ] **Add Favicons**: Generate and add favicon files to the root directory using [favicon.io](https://favicon.io/) or a similar service. Include `favicon.ico`, `favicon-16x16.png`, `favicon-32x32.png`, `apple-touch-icon.png`, and Android icons. +- [ ] **Address TODO Comments**: Search for `TODO` comments throughout all project files using `grep -r "TODO" .` and complete or remove each task as appropriate for your project. +- [ ] **Finalize README**: Once all customization is complete, delete the template README.md and rename `README.template.md` to `README.md` to make it your project's main README. +- [ ] **Format Files**: Run `npm run format` to apply consistent formatting to all files using Prettier before committing changes. +- [ ] **Commit Changes**: Use `npm run commit` to create a properly formatted commit message following Conventional Commits standards (e.g., "chore: initial project setup"). +- [ ] **Generate Changelog**: Run `npm run changelog` to generate changelog entries from your commit history, then copy the output into `CHANGELOG.md`. +- [ ] **Enable GitHub Pages**: In repository settings under "Pages", set the source to "Deploy from a branch" and select the `gh-pages` branch and `/ (root)` folder (if using GitHub Pages for your project documentation). + +## Optional Enhancements + +- [ ] **Update Citation File**: Customize `CITATION.cff` with complete citation metadata including authors, version, DOI (after first release), and keywords relevant to your project. +- [ ] **Add Zenodo Integration**: Follow the [GitHub guide for Zenodo integration](https://docs.github.com/en/repositories/archiving-a-github-repository/referencing-and-citing-content) to enable automatic archiving and obtain a DOI for your repository. Update `.zenodo.json` with custom metadata if needed. +- [ ] **Customize Issue Templates**: Modify the existing issue templates or add new ones in `.github/ISSUE_TEMPLATE/` to match your project's specific needs. +- [ ] **Add GitHub Actions**: Consider adding custom workflows for automated testing, linting, or deployment specific to your project's technology stack. +- [ ] **Setup Project Board**: Create a GitHub project board to track issues and pull requests for better project management. + +## Verification Steps + +After completing the checklist: + +1. Run `npm run check` to verify all files are properly formatted +2. Review your GitHub Pages site to confirm it displays as expected (if applicable) +3. Test that all links in your README work correctly +4. Verify that security alerts and branch protection are active +5. Create a test issue and pull request to ensure templates work correctly +6. Check that commit hooks are working by making a test commit