Skip to content

Commit 0ff1cf0

Browse files
committed
docs(community): 📚 add contribution guidelines and templates
- Add `CONTRIBUTING.md` with development setup, project structure, and licensing instructions - Create structured GitHub issue templates for bug reports and feature requests - Add pull request template with testing and compliance checklist - Configure GitHub issue template settings
1 parent df3e5bf commit 0ff1cf0

File tree

5 files changed

+285
-0
lines changed

5 files changed

+285
-0
lines changed
Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
name: Bug Report
2+
description: Report a bug or unexpected behavior
3+
labels: ["bug"]
4+
body:
5+
- type: markdown
6+
attributes:
7+
value: |
8+
Thanks for taking the time to report a bug! Please fill out the information below to help us investigate.
9+
10+
- type: dropdown
11+
id: branch
12+
attributes:
13+
label: Branch
14+
description: Which branch are you using?
15+
options:
16+
- main
17+
- dev
18+
- other (specify below)
19+
default: 0
20+
validations:
21+
required: true
22+
23+
- type: input
24+
id: branch_other
25+
attributes:
26+
label: Branch (if other)
27+
description: If you selected "other" above, specify the branch name
28+
placeholder: e.g., feature/my-branch
29+
30+
- type: input
31+
id: version
32+
attributes:
33+
label: Version / Tag / Commit
34+
description: Release version, git tag, or commit hash. Enter "latest" if using the latest release.
35+
placeholder: e.g., v1.15, latest, abc1234
36+
37+
- type: input
38+
id: providers
39+
attributes:
40+
label: Provider(s) Affected
41+
description: Which LLM provider(s) are you experiencing issues with?
42+
placeholder: e.g., Gemini, OpenRouter, Antigravity
43+
44+
- type: dropdown
45+
id: deployment
46+
attributes:
47+
label: Deployment Method
48+
description: How are you running the proxy?
49+
options:
50+
- Binary (exe/executable)
51+
- Docker
52+
- From source (python)
53+
default: 0
54+
validations:
55+
required: true
56+
57+
- type: input
58+
id: os
59+
attributes:
60+
label: Operating System
61+
placeholder: e.g., Windows 11, Ubuntu 22.04, macOS 14
62+
validations:
63+
required: true
64+
65+
- type: input
66+
id: python_version
67+
attributes:
68+
label: Python Version (if running from source)
69+
placeholder: e.g., 3.11.5
70+
71+
- type: textarea
72+
id: description
73+
attributes:
74+
label: Bug Description
75+
description: A clear description of what the bug is
76+
placeholder: Describe the issue...
77+
validations:
78+
required: true
79+
80+
- type: textarea
81+
id: steps
82+
attributes:
83+
label: Steps to Reproduce
84+
description: How can we reproduce this issue?
85+
placeholder: |
86+
1. Configure provider X with...
87+
2. Send request to...
88+
3. See error...
89+
validations:
90+
required: true
91+
92+
- type: textarea
93+
id: expected
94+
attributes:
95+
label: Expected Behavior
96+
description: What did you expect to happen?
97+
validations:
98+
required: true
99+
100+
- type: textarea
101+
id: actual
102+
attributes:
103+
label: Actual Behavior
104+
description: What actually happened?
105+
validations:
106+
required: true
107+
108+
- type: textarea
109+
id: logs
110+
attributes:
111+
label: Error Logs / Messages
112+
description: Paste any relevant error messages or logs. This will be formatted as code.
113+
render: text
114+
115+
- type: checkboxes
116+
id: searched
117+
attributes:
118+
label: Pre-submission Checklist
119+
options:
120+
- label: I have searched existing issues to ensure this is not a duplicate
121+
required: true

.github/ISSUE_TEMPLATE/config.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
blank_issues_enabled: true
2+
# To disable blank issues, uncomment:
3+
# blank_issues_enabled: false
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
name: Feature Request
2+
description: Suggest a new feature, enhancement, or provider
3+
labels: ["enhancement"]
4+
body:
5+
- type: markdown
6+
attributes:
7+
value: |
8+
Thanks for suggesting an improvement! Please describe what you'd like to see.
9+
10+
- type: dropdown
11+
id: feature_type
12+
attributes:
13+
label: Feature Type
14+
description: What kind of feature is this?
15+
options:
16+
- New provider
17+
- Enhancement to existing feature
18+
- New functionality
19+
- Other
20+
default: 1
21+
validations:
22+
required: true
23+
24+
- type: textarea
25+
id: description
26+
attributes:
27+
label: Description
28+
description: Describe the feature you'd like to see
29+
placeholder: I would like...
30+
validations:
31+
required: true
32+
33+
- type: textarea
34+
id: use_case
35+
attributes:
36+
label: Use Case
37+
description: Why do you need this feature? What problem does it solve?
38+
placeholder: This would help me...
39+
validations:
40+
required: true
41+
42+
- type: textarea
43+
id: additional_context
44+
attributes:
45+
label: Additional Context
46+
description: |
47+
Any other information that might help.
48+
49+
For new provider requests, please include if available:
50+
- Link to provider API documentation
51+
- Authentication type (API key, OAuth, etc.)
52+
- Example endpoints or API format
53+
- Similar implementations in other projects
54+
placeholder: |
55+
API docs: https://...
56+
Auth type: API key
57+
...
58+
59+
- type: checkboxes
60+
id: searched
61+
attributes:
62+
label: Pre-submission Checklist
63+
options:
64+
- label: I have searched existing issues to ensure this is not a duplicate
65+
required: true

.github/pull_request_template.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
## Description
2+
<!-- What does this PR do? -->
3+
4+
## Testing Done
5+
<!-- How was this tested? -->
6+
7+
## Checklist
8+
- [ ] I have tested these changes locally
9+
- [ ] I have added license headers to new files (LGPL for library, MIT for proxy)
10+
- [ ] I have updated documentation (README/DOCUMENTATION.md) if needed
11+
- [ ] Related issue: #

CONTRIBUTING.md

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
# Contributing to LLM-API-Key-Proxy
2+
3+
Thanks for your interest in contributing! This guide will help you get started.
4+
5+
## Development Setup
6+
7+
```bash
8+
git clone https://github.com/Mirrowel/LLM-API-Key-Proxy.git
9+
cd LLM-API-Key-Proxy
10+
11+
# Using uv (recommended)
12+
uv venv
13+
.venv\Scripts\activate # Windows
14+
source .venv/bin/activate # macOS/Linux
15+
uv pip install -r requirements.txt
16+
17+
# Run the proxy
18+
python src/proxy_app/main.py
19+
```
20+
21+
## Project Structure
22+
23+
```
24+
src/
25+
├── rotator_library/ # Core library (LGPL-3.0-only)
26+
│ └── providers/ # LLM provider implementations
27+
└── proxy_app/ # Proxy application (MIT)
28+
```
29+
30+
## Making Changes
31+
32+
### License Headers
33+
34+
All new source files **must** include the appropriate license header:
35+
36+
**For `src/rotator_library/` files:**
37+
```python
38+
# SPDX-License-Identifier: LGPL-3.0-only
39+
# Copyright (c) 2026 Mirrowel
40+
```
41+
42+
**For `src/proxy_app/` files:**
43+
```python
44+
# SPDX-License-Identifier: MIT
45+
# Copyright (c) 2026 Mirrowel
46+
```
47+
48+
### Adding a New Provider
49+
50+
1. Create your provider in `src/rotator_library/providers/` following the existing pattern
51+
2. Implement the `ProviderInterface` from `provider_interface.py`
52+
3. Register the provider in `provider_factory.py`
53+
4. Update `model_definitions.py` if needed
54+
5. Add documentation to README.md and DOCUMENTATION.md
55+
6. Reference the feature request issue in your PR
56+
57+
### Code Style
58+
59+
- Follow existing code patterns in the codebase
60+
- Use type hints where practical
61+
- Keep functions focused and well-documented
62+
63+
## Pull Requests
64+
65+
1. Fork the repository and create a feature branch
66+
2. Make your changes with clear commit messages
67+
3. Reference related issues in commits: `feat(providers): add X provider (#123)`
68+
4. Open a PR with a clear description of what changed and why
69+
5. Ensure your changes include necessary documentation updates
70+
71+
## Reporting Issues
72+
73+
Please use the issue templates:
74+
- **Bug Report** - For bugs and unexpected behavior
75+
- **Feature Request** - For new features, enhancements, or provider requests
76+
77+
When reporting bugs, include:
78+
- Which branch/version you're using
79+
- Your deployment method (binary, Docker, source)
80+
- Steps to reproduce
81+
- Error logs if available
82+
83+
## Questions?
84+
85+
Open a discussion or issue if you need help getting started.

0 commit comments

Comments
 (0)