Thank you for your interest in contributing to Lingarr!
This document provides guidelines and instructions for contributing to the project.
- .NET SDK (for build scripts)
- Docker (for running the application)
- PowerShell (for build scripts)
- Fork the repository on GitHub
- Clone your fork locally:
git clone https://github.com/[USERNAME]/lingarr.git
cd lingarr
- Add the upstream repository as a remote:
git remote add upstream https://github.com/lingarr-translate/lingarr.git
- Create a new branch for your feature or bugfix following Conventional Commits:
git checkout -b feat/your-feature-name
# or
git checkout -b fix/your-bugfix-name
The project is organized into several key components:
Lingarr.Server/
: Backend applicationLingarr.Core/
: Core domain models and interfacesLingarr.Client/
: Vue.js frontend applicationLingarr.Migrations.SQLite/
: SQLite database migrationsLingarr.Migrations.MySQL/
: MySQL database migrations
Navigate to the root directory and start up the project:
docker-compose -f .\docker-compose.dev.yml up -d
Configure and sync with Sonarr and Radarr to create test data.
The frontend supports hot reload while the backend needs to be rebuilt each time a change has been made.
Service | URL |
---|---|
Lingarr | http://localhost:9876 |
Swagger | http://localhost:9877/swagger/index.html |
Hangfire | http://localhost:9877/hangfire |
phpmyadmin | http://localhost:9878 |
sonarr | http://localhost:8989 |
radarr | http://localhost:7878 |
To build and push the Docker image (if logged into a Docker registry):
./build-and-push.ps1 -Tag dev
- Select an issue to work on and comment to avoid duplicate effort
- Ensure your code follows the project's coding standards
- Update documentation as needed
- Write clear commit messages following Conventional Commits
- Push your changes to your fork
- Create a Pull Request with a clear title and description
- Wait for review and address any feedback
Lingarr welcomes suggestions for improving these standards. Please provide feedback through issues or discussions.
- Follow C# coding conventions
- Use async/await for asynchronous operations
- Implement proper error handling
- Document public APIs using XML comments
- Use dependency injection where appropriate
- Follow Vue.js best practices
- Use TypeScript for type safety
- Implement responsive designs
- Use Tailwind CSS for styling
- Follow the existing component structure
- Use meaningful variable and function names
- Keep functions focused and concise
- Write self-documenting code
- Include comments for complex logic
- Follow the existing project structure
Use the provided PowerShell script to create migrations:
./create-migrations.ps1 -MigrationName "YourMigrationName"
This will create migrations for both SQLite and MySQL providers.
Migrations are automatically applied when the application starts.
By contributing to Lingarr, you agree that your contributions will be licensed under the project's GNU Affero General Public License v3.0.