Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
* @burnedchris

190 changes: 190 additions & 0 deletions .github/CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,190 @@
# Contributing to c15t.com

We love your input! We want to make contributing to c15t.com as easy and transparent as possible, whether it's:

- Reporting a bug
- Discussing the current state of the code
- Submitting a fix
- Proposing new features
- Becoming a maintainer

## 📜 License

By contributing to c15t.com, you agree that your contributions will be licensed under the GNU General Public License v3.0 (GPL-3.0). This is a copyleft license that ensures the software and all derivatives remain free and open source.

[Read the full license here](LICENSE)

## 🏠 House Rules

### Before You Start

- Check existing [issues](https://github.com/c15t/c15t/issues) and [PRs](https://github.com/c15t/c15t/pulls) first
- **Always create an issue before starting development**
- Follow our PR template carefully

### Issue Approval Process

We use the `needs-approval` label to manage contributions:

#### For Contributors

- 🚫 **Needs Approval First:**
- New features
- Large-scale refactoring
- Architecture changes
- *Wait for an c15t.com team member to remove the `needs-approval` label*

- ✅ **Can Start Immediately:**
- Bug fixes
- Documentation updates
- Performance improvements
- Security fixes
- Tests

## Development Process

We use GitHub to host code, to track issues and feature requests, as well as accept pull requests.

### 🤖 Automated Workflows

We leverage several automated workflows to ensure code quality:

1. **Code Quality**
- Formatting: Biome automatically formats code
- Types: TypeScript checks run on every PR
- Tests: Vitest runs the test suite
- Build: Turbo ensures everything builds correctly

2. **Dependencies**
- Renovate keeps dependencies up to date
- PNPM manages our packages
- Changesets handles our versioning

3. **Pull Requests**
- PR titles are checked for semantic versioning
- Automated code review for common issues
- Required checks must pass before merging

## Getting Started

1. Fork the repo and create your branch from `main`:

```sh
git clone https://github.com/your-username/c15t.git
cd c15t
git switch -c my-feature
```

2. Install dependencies:

```sh
corepack enable # Sets up PNPM
pnpm install # Installs dependencies
```

3. Make your changes and ensure the following pass:

```sh
pnpm fmt # Format code
pnpm test # Run tests
pnpm build # Build packages
```

## Pull Request Process

1. **Create an Issue First**
- For features/refactoring: Wait for approval (needs-approval label)
- For bugs/docs: Can start work immediately

2. **Make Your Changes**
- Follow our coding standards (enforced by Biome)
- Add tests for new functionality
- Update documentation as needed

3. **Create Pull Request**
- Use our PR template
- Link the related issue
- Add screenshots for UI changes
- Describe your changes clearly

4. **Automated Checks**
The following will run automatically:
- Code formatting (Biome)
- Type checking (TypeScript)
- Tests (Vitest)
- Build verification (Turbo)
- Dependency checks (Renovate)
- PR title format
- Issue linking

5. **Review Process**
- Maintainers will review your code
- Address any requested changes
- Once approved, it will be merged

## Release Process

Releases are automated through our CI/CD pipeline:

1. Merge to `main` triggers version check
2. Changesets determines version bump
3. New version is published to npm
4. GitHub release is created
5. Documentation is updated

## Development Guidelines

### Code Style

We use Biome for formatting and linting. Configuration is in `biome.jsonc`.

### Commits

Follow [Conventional Commits](https://www.conventionalcommits.org/):

- `feat:` New features
- `fix:` Bug fixes
- `docs:` Documentation
- `chore:` Maintenance
- `refactor:` Code changes
- `test:` Test changes

### Testing

- Write tests for new features
- Update tests for changes
- Run `pnpm test` locally

### Documentation

- Update docs with new features
- Include code examples
- Update README if needed

## Questions?

Don't hesitate to:

- Open an issue
- Start a discussion
- Ask in comments

## Important License Note

c15t.com is licensed under the GNU General Public License v3.0 (GPL-3.0). By contributing to this project, you agree to license your contributions under the same license. This means:

- ✅ You can use the code commercially
- ✅ You can modify the code
- ✅ You can distribute the code
- ✅ You can use the code privately
- ✅ You can use the code for patent purposes

But you must:

- 📢 Disclose source
- 📄 Include original license
- 📝 State changes
- 🔄 Use same license
- 📋 Include copyright notice

[Learn more about GPL-3.0](https://choosealicense.com/licenses/gpl-3.0/)
78 changes: 78 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
name: "🐛 Bug Report"
description: Report a bug in c15t.com
labels: ["Bug", "Needs Approval"]
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to report a bug! Please fill out this form as completely as possible.

Before reporting:
1. Search [existing issues](https://github.com/c15t/c15t/issues)
2. Try the latest version
3. Read the [documentation](https://c15t.com/docs)

- type: dropdown
id: severity
attributes:
label: Severity
description: How severe is this bug?
options:
- "🟢 Low: Minor inconvenience"
- "🟡 Medium: Partial functionality broken"
- "🔴 High: Major functionality broken"
- "⚫ Critical: Security issue or crash"
validations:
required: true

- type: input
id: version
attributes:
label: Version
description: What version of c15t.com are you using?
placeholder: "e.g., 1.0.0"
validations:
required: true

- type: textarea
id: reproduction
attributes:
label: Steps to Reproduce
description: |
Please provide detailed steps to reproduce the issue.
Include code snippets if relevant.
value: |
1.
2.
3.
validations:
required: true

- type: textarea
id: expected
attributes:
label: Expected Behavior
description: What did you expect to happen?
validations:
required: true

- type: textarea
id: actual
attributes:
label: Actual Behavior
description: What actually happened?
validations:
required: true

- type: textarea
id: additional
attributes:
label: Additional Context
description: |
Add any other context about the problem here:
- Screenshots
- Error messages
- Environment details
- Related issues
validations:
required: false
77 changes: 77 additions & 0 deletions .github/ISSUE_TEMPLATE/conduct_violation.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
name: Code of Conduct Violation Report
description: Report a violation of our community Code of Conduct
title: "Code of Conduct Violation: [Brief Description]"
labels:
- conduct-violation
- confidential
body:
- type: markdown
attributes:
value: |
## 🛡️ Code of Conduct Violation Report

Thank you for reporting a potential Code of Conduct violation. We take these reports seriously and will handle them with the utmost confidentiality and care.

**Important**: This form is for reporting serious misconduct that violates our [Code of Conduct](https://c15t.com/docs/oss/code-of-conduct).

- type: dropdown
id: violation-type
attributes:
label: Type of Violation
description: Select the type of behavior that was inappropriate
options:
- Harassment
- Discriminatory Language
- Trolling or Insulting Comments
- Inappropriate Content
- Other
validations:
required: true

- type: textarea
id: incident-description
attributes:
label: Detailed Description
description: Please provide a clear, detailed account of the incident
placeholder: |
- What happened?
- When did it happen?
- Where did it occur (e.g., GitHub discussion, Discord, etc.)?
- Who was involved?
validations:
required: true

- type: textarea
id: context
attributes:
label: Additional Context
description: Any additional information that might help us understand the situation
placeholder: |
- Links to specific comments or interactions
- Screenshots (if appropriate and consensual)
- Any previous interactions that provide context
validations:
required: false

- type: dropdown
id: reporter-comfort
attributes:
label: Reporting Preference
description: How would you like us to handle this report?
options:
- I'm comfortable being contacted for more information
- I prefer to remain anonymous
validations:
required: true

- type: markdown
attributes:
value: |
## 🤝 Our Commitment

We are committed to:
- Reviewing your report promptly
- Maintaining strict confidentiality
- Taking appropriate action to ensure community safety

**Note**: All reports will be reviewed by our Conduct Committee with the utmost discretion and professionalism.
1 change: 1 addition & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
blank_issues_enabled: false
Loading
Loading