First off, thank you for considering contributing to SendLog Syslog! 🎉
This document provides guidelines and steps for contributing to the project.
- Code of Conduct
- Getting Started
- Development Setup
- How to Contribute
- Pull Request Process
- Coding Guidelines
- Testing
- Commit Messages
This project and everyone participating in it is governed by our Code of Conduct. By participating, you are expected to uphold this code.
- Go 1.22+ - Install Go
- Node.js 20+ - Install Node.js
- pnpm -
npm install -g pnpm - Wails CLI -
go install github.com/wailsapp/wails/v2/cmd/wails@latest
Linux (Ubuntu/Debian)
# Ubuntu 24.04+
sudo apt install -y libgtk-3-dev libwebkit2gtk-4.1-dev
# Ubuntu 22.04
sudo apt install -y libgtk-3-dev libwebkit2gtk-4.0-devmacOS
xcode-select --installWindows
Install WebView2 Runtime (usually pre-installed on Windows 10/11).
-
Clone the repository
git clone https://github.com/Y3LCorp/Send-Log-TCP.git cd Send-Log-TCP -
Install frontend dependencies
cd frontend pnpm install cd ..
-
Run in development mode
wails dev
This starts the app with hot-reload enabled.
-
Build for production
wails build
Before creating bug reports, please check existing issues. When creating a bug report, include:
- Clear title describing the issue
- Steps to reproduce the behavior
- Expected behavior vs actual behavior
- Screenshots if applicable
- Environment details (OS, version, etc.)
Use the Bug Report template.
Feature suggestions are welcome! Please use the Feature Request template and include:
- Use case - Why is this feature needed?
- Proposed solution - How should it work?
- Alternatives considered - Other approaches you've thought of
Look for issues labeled:
good first issue- Simple tasks for newcomershelp wanted- Issues where we need community help
- Fork the repository and create your branch from
main - Make your changes following our coding guidelines
- Add tests for new functionality
- Ensure tests pass:
go test ./... - Update documentation if needed
- Submit a pull request using our PR template
- Code follows project style guidelines
- Tests added/updated and passing
- Documentation updated if needed
- Commit messages follow conventional commits
- No new linting errors
- Follow Effective Go guidelines
- Use
gofmtfor formatting - Keep functions focused (Single Responsibility Principle)
- Add comments for exported functions
- Error messages should be lowercase and not end with punctuation
// Good
return fmt.Errorf("failed to connect: %w", err)
// Bad
return fmt.Errorf("Failed to connect: %w.", err)- Use TypeScript strict mode
- Follow React hooks best practices
- Use shadcn/ui components when possible
- Keep components small and focused
├── *.go # Backend services (one per concern)
├── *_test.go # Tests for each service
├── frontend/
│ └── src/
│ ├── components/ # React components
│ ├── hooks/ # Custom hooks
│ └── wailsjs/ # Generated Wails bindings
# Run all tests
go test ./...
# Run with verbose output
go test -v ./...
# Run with coverage
go test -cover ./...
# Run benchmarks
go test -bench=. ./...- Use table-driven tests for multiple cases
- Test both success and error paths
- Name tests descriptively:
TestFunctionName_Scenario
func TestFrame_EmptyMessage(t *testing.T) {
framer := NewFramer(DefaultFramingConfig())
_, err := framer.Frame("")
if err == nil {
t.Error("expected error for empty message")
}
}We use Conventional Commits:
<type>(<scope>): <description>
[optional body]
[optional footer(s)]
| Type | Description |
|---|---|
feat |
New feature |
fix |
Bug fix |
docs |
Documentation only |
style |
Code style (formatting, etc.) |
refactor |
Code refactoring |
perf |
Performance improvement |
test |
Adding/updating tests |
chore |
Maintenance tasks |
feat(profiles): add export to CSV functionality
fix(connection): handle TLS timeout properly
docs: update installation instructions for Ubuntu 24.04
test(framing): add benchmarks for batch processing
- Open a Discussion for general questions
- Join our community (link TBD)
- Check existing issues and documentation
Thank you for contributing! 🚀