Skip to content

Commit a44a097

Browse files
committed
chore: professional repo setup
- Add MIT LICENSE - Add CONTRIBUTING.md guidelines - Add CODEOWNERS for auto-review assignment - Add CodeQL security analysis workflow - Add Release workflow with Docker publishing - Update README with badges, sponsors section, and better structure - Configure Dependabot for npm, docker, and actions - Add issue templates (bug report, feature request) - Add PR template - Add GitHub Sponsors funding config
1 parent 603bfcb commit a44a097

14 files changed

Lines changed: 683 additions & 3 deletions

.github/CODEOWNERS

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# Default owner for everything
2+
* @technet365
3+
4+
# Core MCP server logic
5+
/src/mcp-server.ts @technet365
6+
/src/tasty-client.ts @technet365
7+
/src/strategy-builder.ts @technet365
8+
9+
# CI/CD and infrastructure
10+
/.github/ @technet365
11+
/Dockerfile @technet365
12+
/docker-compose*.yml @technet365

.github/FUNDING.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
github: [technet365]
2+
# ko_fi: technet365
3+
# buy_me_a_coffee: technet365
4+
# custom: ["https://paypal.me/technet365"]
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
name: Bug Report
2+
description: Report a bug or unexpected behavior
3+
title: "[Bug]: "
4+
labels: ["bug", "triage"]
5+
body:
6+
- type: markdown
7+
attributes:
8+
value: |
9+
Thanks for taking the time to report a bug!
10+
11+
- type: textarea
12+
id: description
13+
attributes:
14+
label: Description
15+
description: A clear description of the bug
16+
placeholder: What happened?
17+
validations:
18+
required: true
19+
20+
- type: textarea
21+
id: expected
22+
attributes:
23+
label: Expected Behavior
24+
description: What did you expect to happen?
25+
validations:
26+
required: true
27+
28+
- type: textarea
29+
id: steps
30+
attributes:
31+
label: Steps to Reproduce
32+
description: How can we reproduce this issue?
33+
placeholder: |
34+
1. Configure MCP server with...
35+
2. Call tool...
36+
3. See error...
37+
validations:
38+
required: true
39+
40+
- type: input
41+
id: version
42+
attributes:
43+
label: Version
44+
description: What version are you using?
45+
placeholder: "1.0.0"
46+
validations:
47+
required: true
48+
49+
- type: dropdown
50+
id: environment
51+
attributes:
52+
label: Environment
53+
options:
54+
- Docker
55+
- Node.js (local)
56+
- Both
57+
validations:
58+
required: true
59+
60+
- type: textarea
61+
id: logs
62+
attributes:
63+
label: Logs
64+
description: Paste relevant logs (redact sensitive info!)
65+
render: shell
66+
67+
- type: checkboxes
68+
id: checklist
69+
attributes:
70+
label: Checklist
71+
options:
72+
- label: I have searched existing issues for duplicates
73+
required: true
74+
- label: I have redacted any sensitive information (API keys, account numbers)
75+
required: true

.github/ISSUE_TEMPLATE/config.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
blank_issues_enabled: false
2+
contact_links:
3+
- name: 💬 Discussions
4+
url: https://github.com/technet365/TastyScanner-MCP-Server/discussions
5+
about: Ask questions and discuss ideas
6+
- name: 💖 Sponsor
7+
url: https://github.com/sponsors/technet365
8+
about: Support development via GitHub Sponsors
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
name: Feature Request
2+
description: Suggest a new feature or enhancement
3+
title: "[Feature]: "
4+
labels: ["enhancement"]
5+
body:
6+
- type: markdown
7+
attributes:
8+
value: |
9+
Thanks for suggesting a feature! We especially appreciate ideas for new MCP tools or trading strategies.
10+
11+
- type: dropdown
12+
id: type
13+
attributes:
14+
label: Feature Type
15+
options:
16+
- New MCP Tool
17+
- New Strategy (spreads, calendars, etc.)
18+
- Integration (alerts, webhooks)
19+
- Performance improvement
20+
- Documentation
21+
- Other
22+
validations:
23+
required: true
24+
25+
- type: textarea
26+
id: description
27+
attributes:
28+
label: Description
29+
description: Describe the feature you'd like
30+
validations:
31+
required: true
32+
33+
- type: textarea
34+
id: use-case
35+
attributes:
36+
label: Use Case
37+
description: How would you use this feature?
38+
placeholder: "I want to... so that..."
39+
validations:
40+
required: true
41+
42+
- type: textarea
43+
id: alternatives
44+
attributes:
45+
label: Alternatives Considered
46+
description: Have you considered any workarounds?
47+
48+
- type: checkboxes
49+
id: sponsor
50+
attributes:
51+
label: Sponsorship
52+
description: Features from sponsors get priority
53+
options:
54+
- label: I'm willing to sponsor this feature via GitHub Sponsors

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
## Description
2+
3+
Brief description of changes.
4+
5+
## Type of Change
6+
7+
- [ ] Bug fix
8+
- [ ] New feature
9+
- [ ] Breaking change
10+
- [ ] Documentation update
11+
12+
## Checklist
13+
14+
- [ ] Code builds without errors (`npm run build`)
15+
- [ ] Tests pass (`npm test`)
16+
- [ ] No sensitive data (API keys, account numbers) committed
17+
- [ ] Documentation updated if needed
18+
- [ ] Commit messages follow conventional commits
19+
20+
## Testing
21+
22+
How did you test this?
23+
24+
## Screenshots (if applicable)
25+
26+
## Related Issues
27+
28+
Closes #

.github/dependabot.yml

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
version: 2
2+
updates:
3+
- package-ecosystem: "npm"
4+
directory: "/"
5+
schedule:
6+
interval: "weekly"
7+
day: "monday"
8+
open-pull-requests-limit: 10
9+
commit-message:
10+
prefix: "deps"
11+
labels:
12+
- "dependencies"
13+
groups:
14+
dev-dependencies:
15+
patterns:
16+
- "@types/*"
17+
- "typescript"
18+
- "eslint*"
19+
update-types:
20+
- "minor"
21+
- "patch"
22+
23+
- package-ecosystem: "docker"
24+
directory: "/"
25+
schedule:
26+
interval: "weekly"
27+
commit-message:
28+
prefix: "docker"
29+
labels:
30+
- "dependencies"
31+
- "docker"
32+
33+
- package-ecosystem: "github-actions"
34+
directory: "/"
35+
schedule:
36+
interval: "weekly"
37+
commit-message:
38+
prefix: "ci"
39+
labels:
40+
- "dependencies"
41+
- "ci"

.github/workflows/ci.yml

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches: [main]
6+
pull_request:
7+
branches: [main]
8+
9+
permissions:
10+
contents: read
11+
12+
jobs:
13+
build:
14+
runs-on: ubuntu-latest
15+
16+
strategy:
17+
matrix:
18+
node-version: [20.x, 22.x]
19+
20+
steps:
21+
- uses: actions/checkout@v4
22+
23+
- name: Use Node.js ${{ matrix.node-version }}
24+
uses: actions/setup-node@v4
25+
with:
26+
node-version: ${{ matrix.node-version }}
27+
cache: 'npm'
28+
29+
- name: Install dependencies
30+
run: npm ci
31+
32+
- name: Build
33+
run: npm run build
34+
35+
- name: Lint
36+
run: npm run lint --if-present
37+
38+
- name: Test
39+
run: npm test --if-present
40+
41+
docker:
42+
runs-on: ubuntu-latest
43+
steps:
44+
- uses: actions/checkout@v4
45+
46+
- name: Build Docker image
47+
run: docker build -t tastyscanner-mcp:test .
48+
49+
- name: Test Docker image
50+
run: |
51+
docker run --rm tastyscanner-mcp:test node --version

.github/workflows/codeql.yml

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
name: "CodeQL"
2+
3+
on:
4+
push:
5+
branches: [main]
6+
pull_request:
7+
branches: [main]
8+
schedule:
9+
- cron: '0 6 * * 1' # Every Monday at 6am UTC
10+
11+
jobs:
12+
analyze:
13+
name: Analyze
14+
runs-on: ubuntu-latest
15+
permissions:
16+
actions: read
17+
contents: read
18+
security-events: write
19+
20+
strategy:
21+
fail-fast: false
22+
matrix:
23+
language: ['typescript']
24+
25+
steps:
26+
- name: Checkout repository
27+
uses: actions/checkout@v4
28+
29+
- name: Initialize CodeQL
30+
uses: github/codeql-action/init@v3
31+
with:
32+
languages: ${{ matrix.language }}
33+
34+
- name: Setup Node.js
35+
uses: actions/setup-node@v4
36+
with:
37+
node-version: '22'
38+
cache: 'npm'
39+
40+
- name: Install dependencies
41+
run: npm ci
42+
43+
- name: Build
44+
run: npm run build
45+
46+
- name: Perform CodeQL Analysis
47+
uses: github/codeql-action/analyze@v3
48+
with:
49+
category: "/language:${{ matrix.language }}"

.github/workflows/release.yml

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
name: Release
2+
3+
on:
4+
push:
5+
tags:
6+
- 'v*'
7+
8+
permissions:
9+
contents: write
10+
packages: write
11+
12+
jobs:
13+
release:
14+
runs-on: ubuntu-latest
15+
steps:
16+
- uses: actions/checkout@v4
17+
18+
- name: Setup Node.js
19+
uses: actions/setup-node@v4
20+
with:
21+
node-version: '22'
22+
cache: 'npm'
23+
24+
- name: Install dependencies
25+
run: npm ci
26+
27+
- name: Build
28+
run: npm run build
29+
30+
- name: Create Release
31+
uses: softprops/action-gh-release@v2
32+
with:
33+
generate_release_notes: true
34+
draft: false
35+
prerelease: ${{ contains(github.ref, '-beta') || contains(github.ref, '-alpha') }}
36+
env:
37+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
38+
39+
docker:
40+
runs-on: ubuntu-latest
41+
needs: release
42+
steps:
43+
- uses: actions/checkout@v4
44+
45+
- name: Set up Docker Buildx
46+
uses: docker/setup-buildx-action@v3
47+
48+
- name: Login to GitHub Container Registry
49+
uses: docker/login-action@v3
50+
with:
51+
registry: ghcr.io
52+
username: ${{ github.actor }}
53+
password: ${{ secrets.GITHUB_TOKEN }}
54+
55+
- name: Extract version
56+
id: version
57+
run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT
58+
59+
- name: Build and push
60+
uses: docker/build-push-action@v6
61+
with:
62+
context: .
63+
push: true
64+
tags: |
65+
ghcr.io/${{ github.repository }}:${{ steps.version.outputs.VERSION }}
66+
ghcr.io/${{ github.repository }}:latest
67+
cache-from: type=gha
68+
cache-to: type=gha,mode=max

0 commit comments

Comments
 (0)