Skip to content

Commit cf22f4b

Browse files
committed
feat: add comprehensive OSS automation and community features
- Add auto-labeling workflow for PRs based on file changes - Add welcome workflow for first-time contributors - Add semantic PR title checking (conventional commits) - Add PR size labeling (XS/S/M/L/XL) - Add Dependabot auto-merge for patch/minor updates - Add FUNDING.yml for GitHub Sponsors (template) - Add ROADMAP.md with project vision and milestones Created 5 good first issues: - #86: docs - add SQL operator examples - #87: test - add error handling tests - #89: feat - improve error messages - #91: perf - add SQLite benchmarks - #92: feat - add colorized CLI output These changes bring NexumDB up to enterprise OSS standards with: - Automated PR management and labeling - Better contributor experience - Clear project direction - Beginner-friendly issues for community growth Signed-off-by: aviralgarg05 <gargaviral99@gmail.com>
1 parent c29f412 commit cf22f4b

8 files changed

Lines changed: 469 additions & 0 deletions

File tree

.github/FUNDING.yml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# GitHub Sponsors configuration
2+
# Uncomment and update when ready to enable sponsorship
3+
4+
# github: [aviralgarg05]
5+
# patreon: # Replace with a single Patreon username
6+
# open_collective: # Replace with a single Open Collective username
7+
# ko_fi: # Replace with a single Ko-fi username
8+
# tidelift: # Replace with a single Tidelift platform-name/package-name
9+
# community_bridge: # Replace with a single Community Bridge project-name
10+
# liberapay: # Replace with a single Liberapay username
11+
# issuehunt: # Replace with a single IssueHunt username
12+
# otechie: # Replace with a single Otechie username
13+
# lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name
14+
# custom: ['https://buymeacoffee.com/yourusername'] # Replace with up to 4 custom sponsorship URLs

.github/labeler.yml

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
# Auto-labeling configuration for PRs
2+
3+
# Rust-related changes
4+
"rust":
5+
- changed-files:
6+
- any-glob-to-any-file: ["**/*.rs", "**/Cargo.toml", "**/Cargo.lock"]
7+
8+
# Python-related changes
9+
"python":
10+
- changed-files:
11+
- any-glob-to-any-file: ["**/*.py", "**/requirements*.txt", "**/pyproject.toml"]
12+
13+
# Documentation changes
14+
"documentation":
15+
- changed-files:
16+
- any-glob-to-any-file: ["**/*.md", "docs/**/*"]
17+
18+
# CI/CD changes
19+
"ci/cd":
20+
- changed-files:
21+
- any-glob-to-any-file: [".github/**/*"]
22+
23+
# Dependencies
24+
"dependencies":
25+
- changed-files:
26+
- any-glob-to-any-file: ["**/Cargo.lock", "**/requirements*.txt", "**/package-lock.json"]
27+
28+
# Tests
29+
"tests":
30+
- changed-files:
31+
- any-glob-to-any-file: ["**/tests/**/*", "**/*_test.rs", "**/test_*.py"]
32+
33+
# Benchmarks
34+
"performance":
35+
- changed-files:
36+
- any-glob-to-any-file: ["**/benches/**/*", "**/benchmark*.rs"]
37+
38+
# Security
39+
"security":
40+
- changed-files:
41+
- any-glob-to-any-file: ["SECURITY.md", ".github/workflows/codeql.yml", ".github/workflows/dependency-review.yml"]
42+
43+
# Storage engine
44+
"storage":
45+
- changed-files:
46+
- any-glob-to-any-file: ["nexum_core/src/storage/**/*"]
47+
48+
# SQL parser/planner
49+
"sql":
50+
- changed-files:
51+
- any-glob-to-any-file: ["nexum_core/src/sql/**/*"]
52+
53+
# Query executor
54+
"executor":
55+
- changed-files:
56+
- any-glob-to-any-file: ["nexum_core/src/executor/**/*"]
57+
58+
# AI/ML features
59+
"ai":
60+
- changed-files:
61+
- any-glob-to-any-file: ["nexum_ai/**/*", "nexum_core/src/bridge/**/*"]
62+
63+
# CLI
64+
"cli":
65+
- changed-files:
66+
- any-glob-to-any-file: ["nexum_cli/**/*"]
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
name: "Dependabot Auto-Merge"
2+
3+
on:
4+
pull_request:
5+
types: [opened, synchronize, reopened]
6+
7+
permissions:
8+
contents: write
9+
pull-requests: write
10+
11+
jobs:
12+
auto-merge:
13+
runs-on: ubuntu-latest
14+
if: github.actor == 'dependabot[bot]'
15+
steps:
16+
- name: Dependabot metadata
17+
id: metadata
18+
uses: dependabot/fetch-metadata@v2
19+
with:
20+
github-token: "${{ secrets.GITHUB_TOKEN }}"
21+
22+
- name: Enable auto-merge for Dependabot PRs
23+
if: steps.metadata.outputs.update-type == 'version-update:semver-patch' || steps.metadata.outputs.update-type == 'version-update:semver-minor'
24+
run: gh pr merge --auto --squash "$PR_URL"
25+
env:
26+
PR_URL: ${{github.event.pull_request.html_url}}
27+
GH_TOKEN: ${{secrets.GITHUB_TOKEN}}
28+
29+
- name: Approve patch and minor updates
30+
if: steps.metadata.outputs.update-type == 'version-update:semver-patch' || steps.metadata.outputs.update-type == 'version-update:semver-minor'
31+
run: gh pr review --approve "$PR_URL"
32+
env:
33+
PR_URL: ${{github.event.pull_request.html_url}}
34+
GH_TOKEN: ${{secrets.GITHUB_TOKEN}}
35+
36+
- name: Comment on major updates
37+
if: steps.metadata.outputs.update-type == 'version-update:semver-major'
38+
run: |
39+
gh pr comment "$PR_URL" --body "⚠️ This is a major version update. Please review changes carefully before merging."
40+
env:
41+
PR_URL: ${{github.event.pull_request.html_url}}
42+
GH_TOKEN: ${{secrets.GITHUB_TOKEN}}

.github/workflows/label.yml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
name: "Auto Label"
2+
3+
on:
4+
pull_request_target:
5+
types: [opened, synchronize, reopened]
6+
7+
permissions:
8+
contents: read
9+
pull-requests: write
10+
issues: write
11+
12+
jobs:
13+
label:
14+
runs-on: ubuntu-latest
15+
steps:
16+
- name: Label PR
17+
uses: actions/labeler@v5
18+
with:
19+
repo-token: ${{ secrets.GITHUB_TOKEN }}
20+
sync-labels: true

.github/workflows/pr-size.yml

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
name: "PR Size Labeler"
2+
3+
on:
4+
pull_request_target:
5+
types: [opened, synchronize, reopened]
6+
7+
permissions:
8+
pull-requests: write
9+
contents: read
10+
11+
jobs:
12+
size-label:
13+
runs-on: ubuntu-latest
14+
steps:
15+
- name: Add size label
16+
uses: codelytv/pr-size-labeler@v1
17+
with:
18+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
19+
xs_label: "size/XS"
20+
xs_max_size: 10
21+
s_label: "size/S"
22+
s_max_size: 100
23+
m_label: "size/M"
24+
m_max_size: 500
25+
l_label: "size/L"
26+
l_max_size: 1000
27+
xl_label: "size/XL"
28+
fail_if_xl: false
29+
message_if_xl: >
30+
This PR is very large. Consider breaking it into smaller PRs for easier review.
31+
files_to_ignore: |
32+
"*.lock"
33+
"*.json"
34+
"*.md"
35+
"CHANGELOG.md"

.github/workflows/semantic-pr.yml

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
name: "Semantic PR Title"
2+
3+
on:
4+
pull_request_target:
5+
types: [opened, edited, synchronize, reopened]
6+
7+
permissions:
8+
pull-requests: write
9+
statuses: write
10+
11+
jobs:
12+
check-title:
13+
runs-on: ubuntu-latest
14+
steps:
15+
- name: Check PR title
16+
uses: amannn/action-semantic-pull-request@v5
17+
env:
18+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
19+
with:
20+
types: |
21+
feat
22+
fix
23+
docs
24+
style
25+
refactor
26+
perf
27+
test
28+
build
29+
ci
30+
chore
31+
revert
32+
scopes: |
33+
core
34+
cli
35+
ai
36+
storage
37+
sql
38+
executor
39+
bridge
40+
tests
41+
deps
42+
ci
43+
requireScope: false
44+
subjectPattern: ^(?![A-Z]).+$
45+
subjectPatternError: |
46+
The subject "{subject}" found in the pull request title "{title}"
47+
didn't match the configured pattern. Please ensure that the subject
48+
doesn't start with an uppercase character.
49+
validateSingleCommit: false
50+
ignoreLabels: |
51+
dependencies
52+
skip-changelog

.github/workflows/welcome.yml

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
name: "Welcome First-Time Contributors"
2+
3+
on:
4+
issues:
5+
types: [opened]
6+
pull_request_target:
7+
types: [opened]
8+
9+
permissions:
10+
issues: write
11+
pull-requests: write
12+
13+
jobs:
14+
welcome:
15+
runs-on: ubuntu-latest
16+
steps:
17+
- name: Welcome first-time contributors
18+
uses: actions/first-interaction@v1
19+
with:
20+
repo-token: ${{ secrets.GITHUB_TOKEN }}
21+
issue-message: |
22+
👋 Thanks for opening your first issue in NexumDB!
23+
24+
We appreciate your contribution to this project. A maintainer will review your issue soon.
25+
26+
In the meantime, please make sure you've provided:
27+
- A clear description of the issue
28+
- Steps to reproduce (if applicable)
29+
- Your environment details
30+
31+
Check out our [Contributing Guide](https://github.com/aviralgarg05/NexumDB/blob/main/CONTRIBUTING.md) to learn more about how to contribute.
32+
pr-message: |
33+
🎉 Thanks for opening your first pull request in NexumDB!
34+
35+
We appreciate your contribution! Here's what happens next:
36+
37+
1. ✅ Automated checks will run (CI, tests, linting)
38+
2. 👀 A maintainer will review your changes
39+
3. 💬 We may suggest some improvements or ask questions
40+
4. 🚀 Once approved, we'll merge your contribution!
41+
42+
**Before we can merge:**
43+
- Make sure all CI checks pass
44+
- Sign your commits with DCO (`git commit -s`)
45+
- Address any review feedback
46+
47+
Check out our [Contributing Guide](https://github.com/aviralgarg05/NexumDB/blob/main/CONTRIBUTING.md) for more details.
48+
49+
Thanks for making NexumDB better! 🙌

0 commit comments

Comments
 (0)