Code of Conduct
Contributing Guide
We welcome contributions! This guide explains how to help improve FraiseQL.
Ways to Contribute
Section titled “Ways to Contribute”1. Improve Documentation
Section titled “1. Improve Documentation”Documentation is critical for adoption. Help by:
- Fix typos and grammar: Submit a PR with corrections
- Clarify explanations: Rephrase unclear sections
- Add examples: Contribute real-world examples
- Add translations: Translate docs to other languages
- Report issues: Point out confusing parts
How to contribute docs:
-
Fork and clone the repository:
Terminal window git clone https://github.com/yourusername/fraiseql.gitcd fraiseql -
Edit documentation files in
src/content/docs/(.mdxfiles). -
Preview locally:
Terminal window npm installnpm run dev# Visit http://localhost:3000 to see changes -
Commit and push:
Terminal window git add .git commit -m "docs: clarify error handling explanation"git push origin main -
Create a Pull Request at: https://github.com/fraiseql/fraiseql/compare
2. Report Issues
Section titled “2. Report Issues”Found a bug or confusing behavior?
Before reporting, check:
- GitHub Issues — already reported?
- Troubleshooting Guide — has a solution?
Report an issue with:
Title: Brief description of issue
Environment:- FraiseQL version: 2.0.0- Python version: 3.12- Database: PostgreSQL 16- Deployment: Docker
Steps to Reproduce:1. Create a type with X2. Query with Y3. See error
Expected Behavior:Should return Z
Actual Behavior:Returns error message3. Suggest Features
Section titled “3. Suggest Features”Have an idea to improve FraiseQL?
4. Write Example Applications
Section titled “4. Write Example Applications”Real-world examples help users learn.
Example repository structure:
/your-example ├── README.md (description, setup instructions) ├── schema.py (FraiseQL schema code) ├── docker-compose.yml ├── tests/ ├── frontend/ (optional: web UI) └── deploy/ (optional: Kubernetes manifests)Submit a PR to the examples repository with a link to your repo.
5. Contribute Code (Advanced)
Section titled “5. Contribute Code (Advanced)”Setup development environment:
-
Clone and install in development mode:
Terminal window git clone https://github.com/fraiseql/fraiseql.gitcd fraiseqluv sync --all-extras -
Run tests:
Terminal window uv run pytest tests/ -
Check code quality:
Terminal window uv run ruff check --fixuv run ruff format -
Build docs:
Terminal window npm run build
Code style:
- Python: PEP 8, type hints required, managed with
uv(notpip) - Docstrings: Google style
- Tests: pytest (run with
uv run pytest), aim for 80%+ coverage - SQL: lowercase keywords (
select,insert),snake_caseidentifiers, explicit type casts (value::textnot implicit coercion) - Commit messages:
feat:,fix:,docs:,test:prefixes
Submit code PR:
# Create feature branchgit checkout -b feature/amazing-feature
# Make changes, add tests and documentation
# Verify qualityuv run pytest tests/uv run ruff check --fix
# Commit with clear messagegit commit -m "feat: add support for X
Add comprehensive support for X feature, including:- Core functionality- Unit tests- Documentation
Fixes #123"
# Push and create PRgit push origin feature/amazing-feature6. Answer Community Questions
Section titled “6. Answer Community Questions”Help others on:
- Discord: Join channel
- GitHub Discussions: Answer in Discussions
- Stack Overflow: Tag:
fraiseql
7. Translate Documentation
Section titled “7. Translate Documentation”Make FraiseQL accessible to non-English speakers.
Supported languages: Spanish, French, German, Japanese, Chinese Simplified, Chinese Traditional.
# Create language directorymkdir -p src/content/docs/es
# Copy docs structurecp -r src/content/docs/getting-started src/content/docs/es/
# Translate files (English -> your language)# Preserve frontmatter (---...---)# Translate only contentDocumentation Style Guide
Section titled “Documentation Style Guide”File Structure
Section titled “File Structure”/src/content/docs├── getting-started/ # Quick intro section├── concepts/ # Architecture & design├── guides/ # Practical how-tos├── features/ # Feature documentation├── reference/ # API reference├── deployment/ # Deployment guides├── troubleshooting/ # Common problems & solutions└── sdk/ # Schema authoring SDKsFrontmatter (Required)
Section titled “Frontmatter (Required)”---title: Page Titledescription: Brief one-sentence description---Formatting
Section titled “Formatting”# H1: Main topic (use once per page, or omit — Starlight injects the title)
## H2: Major sections
### H3: Subsections
#### H4: DetailsCallouts for important info — use Starlight Aside components:
import { Aside } from '@astrojs/starlight/components';
<Aside type="tip">This is a tip.</Aside><Aside type="note">This is a note.</Aside><Aside type="caution">This is a warning.</Aside>Pull Request Process
Section titled “Pull Request Process”Before Submitting
Section titled “Before Submitting”- Review existing PRs to avoid duplicate work
- Run formatters and linters
- Add tests for code changes
- Update docs for feature changes
- Test locally
PR Template
Section titled “PR Template”## DescriptionBrief description of changes
## Type of change- [ ] Bug fix- [ ] New feature- [ ] Documentation- [ ] Performance improvement
## Related IssuesFixes #123
## TestingHow to verify the fix:1. Step 12. Step 2
## Checklist- [ ] Code follows style guidelines- [ ] Comments added for complex logic- [ ] Tests added/updated- [ ] Documentation updated- [ ] No breaking changesReview Process
Section titled “Review Process”Maintainers will:
- Review code/docs quality
- Check for breaking changes
- Suggest improvements
- Request changes if needed
Address feedback professionally. All contributions are valued!
Code Review Standards
Section titled “Code Review Standards”When reviewing others’ contributions:
Be constructive:
- “Consider using X here because…” (not “That’s wrong”)
- Suggest improvements with reasoning
- Acknowledge good work
Be timely:
- Respond within 2 days
- Focus on functionality and design, not style nitpicks
Don’t be dismissive:
- All contributions are valuable
- Thank people for their effort
- Explain decisions
Getting Help
Section titled “Getting Help”Discord: Join FraiseQL Discord — real-time chat, quick questions
GitHub Discussions: Discussions tab — feature ideas, design discussions
GitHub Issues: Issues tab — bug reports
Email: support@fraiseql.dev — commercial support, private questions
Finding Tasks
Section titled “Finding Tasks”Look for issues labeled:
good first issue— Start here!help wanted— Contributors neededdocumentation— Docs improvement
Recognition
Section titled “Recognition”We recognize contributions in:
- README: List of contributors
- CHANGELOG: Major feature credits
- Discord: Contributor role
- GitHub: Contribution history
Common Questions
Section titled “Common Questions”Q: Do I need to sign a CLA? A: No, we don’t require a Contributor License Agreement.
Q: Can I get paid to contribute? A: We can discuss sponsorships for substantial work. Email support@fraiseql.dev
Q: How long until my PR is reviewed? A: Typically 2-5 days. High-priority issues reviewed faster.
Q: My PR was rejected. Can I resubmit? A: Yes! Address feedback and resubmit. We want to help you succeed.
Getting Support