tolo/CONTRIBUTING.md
selamanapps 40a80a6c9b Initial release: Tolo v1.0.0
- Add core CLI functionality (save, run, update, delete, list, show, search)
- Implement JSON-based storage in ~/.tolo/tolo.db.json
- Add beautiful terminal UI with colors and icons
- Support command shortcuts (s, r, u, d, ls, l, sh, se, h, v)
- Add Bash and Zsh shell completion
- Include comprehensive documentation (README, CONTRIBUTING, SECURITY)
- Set up CI/CD workflows with GitHub Actions
- Add installation script and Makefile for build automation
- MIT License

Made with ❤️ at Zemenawi Lab
2026-03-27 06:44:03 +03:00

204 lines
4.5 KiB
Markdown

# Contributing to Tolo
Thank you for considering contributing to Tolo! This document provides guidelines and instructions for contributing to the project.
## 🤝 How to Contribute
### Reporting Bugs
Before creating bug reports, please check the existing issues as you might find that the problem has already been reported.
When creating bug reports, please include:
- **Clear title and description**
- **Steps to reproduce** the issue
- **Expected behavior** vs **actual behavior**
- **Environment details**: OS, Go version, Tolo version
- **Screenshots** if applicable
- **Error messages** or logs
### Suggesting Enhancements
Enhancement suggestions are tracked as GitHub issues. When suggesting:
- Use a clear and descriptive title
- Provide detailed explanation of the enhancement
- Explain why it would be useful
- Provide examples or use cases
## 🛠️ Development Setup
1. **Fork the repository**
```bash
# Fork the repo on GitHub, then clone your fork
git clone https://github.com/YOUR_USERNAME/tolo.git
cd tolo
```
2. **Add upstream remote**
```bash
git remote add upstream https://github.com/selamanapps/tolo.git
```
3. **Create a feature branch**
```bash
git checkout -b feature/your-feature-name
```
4. **Build and test**
```bash
make build
make test
```
## 📝 Coding Standards
### Go Conventions
- Follow standard Go conventions defined in [Effective Go](https://golang.org/doc/effective_go.html)
- Run `gofmt` on your code before committing
- Use `golint` to check for potential issues
- Write clear, concise comments for exported functions
### Code Style
- Keep functions small and focused
- Use meaningful variable and function names
- Add error handling where appropriate
- Write tests for new features
- Keep the binary size minimal
### Project Structure
- Place command handlers in `cmd/`
- Storage operations go in `storage/`
- Terminal formatting in `pretty/`
- Follow the existing package structure
## 🧪 Testing
```bash
# Run all tests
make test
# Run with coverage
go test -cover ./...
# Run specific package tests
go test ./cmd
```
## 📦 Building
```bash
# Build for current platform
make build
# Build for all platforms
make build-all
# Run locally
./build/tolo help
```
## 🚀 Pull Request Process
1. **Update documentation** if needed
2. **Add tests** for new features or bug fixes
3. **Run tests** and ensure they pass
4. **Update README.md** if you add features
5. **Push to your fork**
6. **Create a Pull Request**
### Pull Request Guidelines
- Use a clear title describing the change
- Reference related issues in the description
- Include screenshots for UI changes
- Keep changes focused and minimal
- Respond to review comments promptly
## 📋 Commit Messages
Follow [Conventional Commits](https://www.conventionalcommits.org/):
- `feat:` New feature
- `fix:` Bug fix
- `docs:` Documentation changes
- `style:` Code style changes (formatting, etc.)
- `refactor:` Code refactoring
- `perf:` Performance improvements
- `test:` Adding or updating tests
- `chore:` Maintenance tasks
Examples:
```
feat: add export command for aliases
fix: handle special characters in commands
docs: update installation instructions
```
## 🌍 Localization
Tolo is currently in English. If you'd like to add translations:
1. Create a new issue to discuss
2. Follow i18n best practices
3. Test all translated text
4. Submit a PR with translation files
## 📚 Documentation
- Update README.md for user-facing changes
- Add comments to complex code
- Update inline documentation
- Consider adding wiki pages for complex features
## 🎯 Feature Development
Before implementing major features:
1. Open an issue to discuss
2. Get feedback from maintainers
3. Design the feature
4. Create a proposal PR (optional)
5. Implement and test
## ⚠️ Breaking Changes
Avoid breaking changes if possible. If necessary:
- Clearly document the change
- Update version numbers
- Provide migration guide
- Discuss with maintainers first
## 🤖 Automation
The project uses:
- **Make** for build automation
- **GitHub Actions** for CI/CD
- **gofmt** for code formatting
- **golint** for linting
## 📄 License
By contributing, you agree that your contributions will be licensed under the MIT License.
## 💬 Getting Help
- Check [Documentation](README.md)
- Search [Issues](../../issues)
- Start a [Discussion](../../discussions)
- Ask in PR comments
## 🎉 Recognition
Contributors will be recognized in:
- Contributors section
- Release notes
- Project documentation
Thank you for contributing to Tolo! 🚀