diff --git a/.github/CODE_OF_CONDUCT.md b/.github/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..ad526a1 --- /dev/null +++ b/.github/CODE_OF_CONDUCT.md @@ -0,0 +1,130 @@ +# Contributor Covenant 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. + +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official e-mail address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement at any ways @5ouma +have. 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. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series of +actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or permanent +ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within the +community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.0, available at +[https://www.contributor-covenant.org/version/2/0/code_of_conduct.html](https://www.contributor-covenant.org/version/2/0/code_of_conduct.html). + +Community Impact Guidelines were inspired by +[Mozilla's code of conduct +enforcement ladder](https://github.com/mozilla/diversity). + +[homepage]: https://www.contributor-covenant.org + +For answers to common questions about this code of conduct, see the FAQ at +[https://www.contributor-covenant.org/faq]. Translations are available at +[https://www.contributor-covenant.org/translations](https://www.contributor-covenant.org/translations). + +[https://www.contributor-covenant.org/faq]: https://www.contributor-covenant.org/faq diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md new file mode 100644 index 0000000..3821d26 --- /dev/null +++ b/.github/CONTRIBUTING.md @@ -0,0 +1,42 @@ +# Contributing Guide + +> [!NOTE] +> You must follow the [Code of Conduct](./CODE_OF_CONDUCT.md). + +I happily welcome your contributions! Before you contribute, I would recommend +reading this guideline for a better development experience. + +
+ +- [๐Ÿ’ฌ Commit Message](#-commit-message) +- [โ“ Pull Requests Title](#-pull-requests-title) +- [๐Ÿชต Commit Log](#-commit-log) + +

+ +## ๐Ÿ’ฌ Commit Message + +I recommend you to follow [Conventional Commits] with this format. + +```commit message +type(scope): Description + +Body +``` + +[Conventional Commits]: https://www.conventionalcommits.org + +
+ +## โ“ Pull Requests Title + +You don't need to add any prefixes like `feature` or `bug fix` to the Pull +Requests title. I can recognize what kind of PR it is from labels. Please give a +clear title. + +
+ +## ๐Ÿชต Commit Log + +I do squash merge to the main branch to keep the commit history clean. When +merging your Pull Request, I'll add the Conventional Commits type and scope. diff --git a/.github/ISSUE_TEMPLATE/1-feature-request.yml b/.github/ISSUE_TEMPLATE/1-feature-request.yml new file mode 100644 index 0000000..307930e --- /dev/null +++ b/.github/ISSUE_TEMPLATE/1-feature-request.yml @@ -0,0 +1,33 @@ +name: ๐ŸŽ‰ Feature Request +description: Request a new feature or enhancement to an existing feature +labels: [๐ŸŽ‰ New Feature] +body: + - type: textarea + id: feature-description + attributes: + label: โœ๏ธ Describe the feature + description: A clear and concise description + placeholder: | + - I want a feature to... + - This behavior should be... + validations: + required: true + + - type: checkboxes + id: checks + attributes: + label: โœ”๏ธŽ Confirm these checks + description: Make sure you reviewed below + options: + - label: I searched the GitHub [Issues](https://github.com/5ouma/mobicard/issues) or [Discussions](https://github.com/5ouma/mobicard/discussions). + required: true + - label: I tried with the latest version. + required: false + - label: I agree to follow the [Code of Conduct](https://github.com/5ouma/mobicard/blob/main/.github/CODE_OF_CONDUCT.md). + required: true + + - type: textarea + id: additional-info + attributes: + label: ๐Ÿ—’๏ธ Additional Information + description: Anything else you want to add diff --git a/.github/ISSUE_TEMPLATE/2-bug-report.yml b/.github/ISSUE_TEMPLATE/2-bug-report.yml new file mode 100644 index 0000000..959f6b5 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/2-bug-report.yml @@ -0,0 +1,38 @@ +name: ๐Ÿงฐ Bug Report +description: Something doesn't work +labels: [๐Ÿงฐ Bug] +body: + - type: textarea + id: bug-description + attributes: + label: โœ๏ธ Describe the Bug + description: A clear and concise description + validations: + required: true + + - type: textarea + id: reproduction-steps + attributes: + label: ๐Ÿญ How to Reproduce the Bug + description: Steps to reproduce the behavior + validations: + required: true + + - type: checkboxes + id: checks + attributes: + label: โœ”๏ธŽ Confirm these checks + description: Make sure you reviewed below + options: + - label: I searched the GitHub [Issues](https://github.com/5ouma/mobicard/issues) or [Discussions](https://github.com/5ouma/mobicard/discussions). + required: true + - label: I tried with the latest version. + required: false + - label: I agree to follow the [Code of Conduct](https://github.com/5ouma/mobicard/blob/main/.github/CODE_OF_CONDUCT.md). + required: true + + - type: textarea + id: additional-info + attributes: + label: ๐Ÿ—’๏ธ Additional Information + description: Anything else you want to add diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..89fc1db --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,9 @@ +blank_issues_enabled: false +contact_links: + - name: ๐Ÿ’ฌ General Discussions + url: https://github.com/5ouma/mobicard/discussions/new?category=general + about: Chat about anything and everything here + + - name: ๐Ÿ™ Q&A + url: https://github.com/5ouma/mobicard/discussions/new?category=q-a + about: Ask the community for help diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..0e7544c --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,34 @@ + + +### โš ๏ธ Issue + +close # + +
+ +### โœ๏ธ Description + + + +
+ +### ๐Ÿ”„ Type of the Change + +- [ ] ๐ŸŽ‰ New Feature +- [ ] ๐Ÿงฐ Bug +- [ ] ๐Ÿ›ก๏ธ Security +- [ ] ๐Ÿ“– Documentation +- [ ] ๐ŸŽ๏ธ Performance +- [ ] ๐Ÿงน Refactoring +- [ ] ๐Ÿงช Testing +- [ ] ๐Ÿ”ง Maintenance +- [ ] ๐ŸŽฝ CI +- [ ] ๐Ÿง  Meta + +
+ +- [ ] I agree to follow the [Code of Conduct](https://github.com/5ouma/mobicard/blob/main/.github/CODE_OF_CONDUCT.md). diff --git a/.github/SECURITY.md b/.github/SECURITY.md new file mode 100644 index 0000000..a0e70fa --- /dev/null +++ b/.github/SECURITY.md @@ -0,0 +1,9 @@ +# Security Policy + +## ๐Ÿ›ก๏ธ Reporting a Vulnerability + +If you find any issues of security, please report on +[Security Advisories](https://github.com/5ouma/mobicard/security/advisories/new). + +> [!CAUTION] +> Please do NOT open Issues. diff --git a/.github/actions/setup-bun-with-cache/action.yml b/.github/actions/setup-bun-with-cache/action.yml new file mode 100644 index 0000000..f2f9aae --- /dev/null +++ b/.github/actions/setup-bun-with-cache/action.yml @@ -0,0 +1,20 @@ +name: ๐Ÿž Setup Bun with Cache +description: Install Bun and cache project dependencies + +runs: + using: composite + + steps: + - name: ๐Ÿž Setup Bun + uses: oven-sh/setup-bun@4bc047ad259df6fc24a6c9b0f9a0cb08cf17fbe5 # v2.0.1 + + - name: ๐Ÿซ™ Cache node_modules + uses: actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2 + with: + path: ./node_modules + key: ${{ runner.os }}-bun-${{ hashFiles('./bun.lockb') }} + restore-keys: ${{ runner.os }}-bun- + + - name: ๐Ÿ“ฆ Install Dependencies + run: bun install + shell: bash diff --git a/.github/auto_assign.yml b/.github/auto_assign.yml new file mode 100644 index 0000000..4590200 --- /dev/null +++ b/.github/auto_assign.yml @@ -0,0 +1,3 @@ +addReviewers: true +addAssignees: author +reviewers: [5ouma] diff --git a/.github/pr-labeler.yml b/.github/pr-labeler.yml new file mode 100644 index 0000000..219094b --- /dev/null +++ b/.github/pr-labeler.yml @@ -0,0 +1,27 @@ +alwaysReplace: true + +customLabels: + - text: "- [x] ๐ŸŽ‰ New Feature" + label: ๐ŸŽ‰ New Feature + - text: "- [x] ๐Ÿงฐ Bug" + label: ๐Ÿงฐ Bug + - text: "- [x] ๐Ÿ›ก๏ธ Security" + label: ๐Ÿ›ก๏ธ Security + - text: "- [x] ๐Ÿ“– Documentation" + label: ๐Ÿ“– Documentation + - text: "- [x] ๐ŸŽ๏ธ Performance" + label: ๐ŸŽ๏ธ Performance + - text: "- [x] ๐Ÿงน Refactoring" + label: ๐Ÿงน Refactoring + - text: "- [x] ๐Ÿงช Testing" + label: ๐Ÿงช Testing + - text: "- [x] ๐Ÿ”ง Maintenance" + label: ๐Ÿ”ง Maintenance + - text: "- [x] ๐ŸŽฝ CI" + label: ๐ŸŽฝ CI + - text: "- [x] ๐Ÿง  Meta" + label: ๐Ÿง  Meta + - text: "chore(deps): " + label: โ›“๏ธ Dependencies + - text: "Release: v" + label: ๐Ÿš€ Release diff --git a/.github/release.yml b/.github/release.yml new file mode 100644 index 0000000..6ab54dc --- /dev/null +++ b/.github/release.yml @@ -0,0 +1,31 @@ +changelog: + exclude: + labels: + - ๐Ÿง  Meta + - ๐Ÿš€ Release + + categories: + - title: ๐Ÿงจ Breaking Changes + labels: [๐Ÿงจ Breaking Change] + - title: ๐ŸŽ‰ New Features + labels: [๐ŸŽ‰ New Feature] + - title: ๐Ÿงฐ Bug Fixes + labels: [๐Ÿงฐ Bug] + - title: ๐Ÿ›ก๏ธ Security Fixes + labels: [๐Ÿ›ก๏ธ Security] + - title: ๐Ÿ“– Documentation Changes + labels: [๐Ÿ“– Documentation] + - title: ๐ŸŽ๏ธ Performance Improvements + labels: [๐ŸŽ๏ธ Performance] + - title: ๐Ÿงน Refactoring + labels: [๐Ÿงน Refactoring] + - title: ๐Ÿงช Testing + labels: [๐Ÿงช Testing] + - title: ๐Ÿ”ง Maintenance + labels: [๐Ÿ”ง Maintenance] + - title: ๐ŸŽฝ CI + labels: [๐ŸŽฝ CI] + - title: โ›“๏ธ Dependency Updates + labels: [โ›“๏ธ Dependencies, dependencies] + - title: ๐Ÿ” Other Changes + labels: ["*"] diff --git a/.github/renovate.json b/.github/renovate.json new file mode 100644 index 0000000..704384f --- /dev/null +++ b/.github/renovate.json @@ -0,0 +1,5 @@ +{ + "$schema": "https://docs.renovatebot.com/renovate-schema.json", + "extends": ["config:best-practices"], + "dependencyDashboard": false +} diff --git a/.github/tagpr.ini b/.github/tagpr.ini new file mode 100644 index 0000000..4e8b5fe --- /dev/null +++ b/.github/tagpr.ini @@ -0,0 +1,9 @@ +[tagpr] + releaseBranch = main + versionFile = package.json + vPrefix = true + changelog = false + templateText = Release: {{ .NextVersion }}\n{{ .Changelog }} + majorLabels = ๐Ÿงจ Breaking Change + minorLabels = ๐ŸŽ‰ New Feature + commitPrefix = chore(release): diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..a465b78 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,46 @@ +name: ๐ŸŽฝ CI + +on: + push: + branches: + - main + paths: + - "**.astro" + - "**.ts" + - bun.lockb + - .github/workflows/ci.yml + pull_request: + paths: + - "**.astro" + - "**.ts" + - bun.lockb + - .github/workflows/ci.yml + +jobs: + type-check: + name: ๐Ÿ” Type Check + runs-on: Ubuntu-Latest + + steps: + - name: ๐Ÿšš Checkout Repository + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + + - name: ๐Ÿž Setup Bun with Cache + uses: ./.github/actions/setup-bun-with-cache + + - name: ๐Ÿ” Type Check + run: bun run check + + build: + name: ๐Ÿ› ๏ธ Build Check + runs-on: Ubuntu-Latest + + steps: + - name: ๐Ÿšš Checkout Repository + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + + - name: ๐Ÿž Setup Bun with Cache + uses: ./.github/actions/setup-bun-with-cache + + - name: ๐Ÿ› ๏ธ Build Check + run: bun run build diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..5414c25 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,29 @@ +name: ๐Ÿš€ Release + +on: + push: + branches: + - main + workflow_dispatch: + +jobs: + tagpr: + name: ๐Ÿท๏ธ Release a New Version + permissions: + contents: write + pull-requests: write + runs-on: Ubuntu-Latest + outputs: + tag: ${{ steps.tagpr.outputs.tag }} + + steps: + - name: ๐Ÿšš Checkout Repository + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + + - name: ๐Ÿท๏ธ Release a New Version + id: tagpr + uses: Songmu/tagpr@3dca11e7c0d68637ee212ddd35acc3d30a7403a4 # v1.5.0 + with: + config: .github/tagpr.ini + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000..10fc481 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,49 @@ +ci: + autofix_commit_msg: | + chore(fix): Auto fixes from pre-commit.com hooks + + For more information, see https://pre-commit.ci. + autoupdate_commit_msg: "chore(deps): Bump pre-commit hook" + +repos: + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v5.0.0 + hooks: + - id: check-json + - id: check-toml + - id: check-yaml + - id: end-of-file-fixer + - id: trailing-whitespace + + - repo: https://github.com/Lucas-C/pre-commit-hooks + rev: v1.5.5 + hooks: + - id: remove-tabs + args: [--whitespaces-count, "2"] + + - repo: https://github.com/crate-ci/typos + rev: v1.27.0 + hooks: + - id: typos + + - repo: https://github.com/gitleaks/gitleaks + rev: v8.21.2 + hooks: + - id: gitleaks + + - repo: https://github.com/rhysd/actionlint + rev: v1.7.4 + hooks: + - id: actionlint + + - repo: https://github.com/igorshubovych/markdownlint-cli + rev: v0.42.0 + hooks: + - id: markdownlint-fix + args: [--disable, MD013, MD023, MD024, MD033, MD036] + + - repo: https://github.com/koalaman/shellcheck-precommit + rev: v0.10.0 + hooks: + - id: shellcheck + args: [-e, "SC1071,SC1072,SC1073,SC1090,SC1091,SC2015,SC2148,SC2154"]