CONTRIBUTING.md
Rama dev · réplica de lectura del repositorio original.
# Contributing to NoMercy MediaServer
Thank you for your interest in contributing to NoMercy MediaServer! This document outlines the process for contributing to this project.
## Branch Structure
| Branch | Purpose | CI |
|--------|---------|-----|
| `wip` | Work in progress, not ready | None |
| `dev` | Integration branch; push here to trigger a release | Full pipeline |
| `master` | Release mirror of `dev`, byte-identical after every release; never built directly | Automated |
**Maintainers**: Push to `dev` when ready to release, `wip` when saving work.
**External contributors**: Submit PRs to `dev`.
## Getting Started (External Contributors)
### 1. Fork the Repository
Click the "Fork" button on the [GitHub repository](https://github.com/NoMercy-Entertainment/nomercy-media-server) to create your own copy.
### 2. Clone Your Fork
```bash
git clone https://github.com/YOUR-USERNAME/NoMercyMediaServer.git
cd NoMercyMediaServer
```
### 3. Set Up Upstream Remote
```bash
git remote add upstream https://github.com/NoMercy-Entertainment/nomercy-media-server.git
```
### 4. Create a Feature Branch
Always create a new branch for your changes:
```bash
git checkout -b feat/your-feature-name
```
Use descriptive branch names:
- `feat/add-dark-mode` - for new features
- `fix/video-encoding-bug` - for bug fixes
## Development
### Prerequisites
- .NET 10.0 SDK
### Building
```bash
dotnet restore
dotnet build
```
### Running Tests
```bash
dotnet test
```
### Running the Server
```bash
dotnet run --project src/NoMercy.Service
```
## Commit Messages
Use Conventional Commits, `type(scope): description`.
Examples:
```
feat(encoder): add AV1 encoding support
fix(api): fix null reference in playlist endpoint
docs: update API documentation
```
## Submitting Changes
1. Push your branch to your fork
2. Open a Pull Request targeting the `dev` branch
3. Fill out the description with what changed and why
4. Address any review feedback
### Code Review
- Address any feedback from reviewers
- Push additional commits to your branch as needed
- Once approved, a maintainer will merge your PR
## What Happens After Merge
When your PR is merged to `dev`:
1. Automated tests run
2. Version is automatically incremented
3. `dev`'s tree is made byte-identical to `master` with a changelog commit
4. A new release is created with built executables, targeting `master`
5. `master` is never built directly; it exists only as the release mirror
Your contribution will appear in the release notes!
## Code Style
Please follow the existing code style in the project:
- Use explicit types (avoid `var`)
- Use PascalCase for public members
- Use camelCase with `_` prefix for private fields
- Use primary constructors where appropriate
- Keep methods focused and small
See [CLAUDE.md](CLAUDE.md) for detailed code style and tooling guidelines.
## Questions?
If you have questions or need help:
- Open a [Discussion](https://github.com/NoMercy-Entertainment/nomercy-media-server/discussions)
- Check existing [Issues](https://github.com/NoMercy-Entertainment/nomercy-media-server/issues)
## License and Contributor Agreement
By submitting a pull request or other contribution to this project, you
explicitly agree that:
1. Your contribution is licensed under the
[NoMercy MediaServer License](LICENSE)
2. You assign all copyright in your contribution to
NoMercy Entertainment
3. You have the legal right to make this assignment
This is required to ensure consistent licensing and long-term maintenance
of the project. If you do not agree with these terms, please do not submit
a contribution.