# Contributing to Blogging CMS First, thank you for considering contributing! This project is maintained by one person, and community contributions are essential. ## Code of Conduct - Be respectful and inclusive - Provide constructive feedback - Focus on the code, not the person - Help others learn and grow ## Getting Started 1. **Fork the repository** on GitHub 2. **Clone your fork locally** ```bash git clone https://github.com/your-username/blogging-cms.git cd blogging-cms ``` 3. **Create a feature branch** ```bash git checkout -b feature/your-feature-name ``` 4. **Set up development environment** ```bash make setup make dev ``` ## Development Guidelines ### Code Style - Follow Go conventions (use `gofmt`) - Keep functions small and focused - Write meaningful variable and function names - Add comments for exported functions ### Before Submitting 1. **Format your code** ```bash make fmt ``` 2. **Run linter** ```bash make lint make vet ``` 3. **Run tests** ```bash make test ``` 4. **Test in Docker** ```bash make docker-rebuild ``` ## Pull Request Process 1. Update documentation if needed (README.md, comments) 2. Add tests for new features 3. Ensure all tests pass locally 4. Write a clear commit message 5. Push to your fork 6. Submit a Pull Request with a clear description ### Commit Messages Use clear, descriptive commit messages: - ✨ `feat:` for new features - 🐛 `fix:` for bug fixes - 📝 `docs:` for documentation - ♻️ `refactor:` for refactoring - ✅ `test:` for adding tests - 🎨 `style:` for formatting Example: ``` feat: add comment moderation panel - Add admin interface for approving/rejecting comments - Send notification email to post author - Add tests for moderation logic Fixes #123 ``` ## Areas for Contribution ### High Priority - [ ] Password hashing with bcrypt - [ ] Comment threading - [ ] Batch operations in dashboard - [ ] Email notifications - [ ] Advanced search filters ### Medium Priority - [ ] User profile pages - [ ] Post scheduling - [ ] Image optimization - [ ] SEO metadata - [ ] Social media preview cards ### Lower Priority - [ ] Dark mode theme - [ ] Multilingual support - [ ] Export functionality - [ ] Analytics integration ## Bug Reports Found a bug? Open an issue with: - Clear title and description - Steps to reproduce - Expected vs actual behavior - Environment details (OS, Go version, Docker version) - Screenshots if applicable ## Feature Requests Have an idea? Open an issue with: - Clear description of the feature - Why it would be useful - Possible implementation approach - Any relevant examples or links ## Documentation - Keep README.md updated - Add inline code comments for complex logic - Document API changes - Update architecture in README if needed ## Questions? - Check existing issues/discussions first - Ask in GitHub Discussions - Email: kalvin@obulou.org --- Thank you for contributing! Every contribution makes this project better. 🙏