First off, thank you for considering contributing to Madick AI Chatbot! It's people like you that make this project such a great tool. We welcome contributions from everyone, regardless of experience level.
By participating in this project, you are expected to uphold our Code of Conduct:
- Use welcoming and inclusive language
- Be respectful of differing viewpoints and experiences
- Gracefully accept constructive criticism
- Focus on what is best for the community
- Show empathy towards other community members
- Fork the repository on GitHub
- Clone your fork locally:
git clone https://github.com/your-username/madick-ai-chatbot.git cd madick-ai-chatbot - Create a virtual environment and activate it:
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
- Install development dependencies:
pip install -r requirements-dev.txt
- Run the application in development mode:
python main.py
- Ensure you have Ollama installed: ollama.ai
- Pull at least one model for testing:
ollama pull llama3.2:1bor another model
- Check if the bug has already been reported in the Issues
- If not, create a new issue with:
- A clear title and description
- As much relevant information as possible (OS, Python version, etc.)
- Steps to reproduce the issue
- Expected vs. actual behavior
- Screenshots if applicable
- Check if the enhancement has already been suggested
- Create a new issue with:
- A clear title and description
- Explanation of why this enhancement would be useful
- Any relevant examples or mockups
- Find an issue to work on or create a new one
- Comment on the issue expressing your interest
- Create a branch in your fork with a descriptive name:
git checkout -b feature/your-feature-name
- Make your changes, following our code style guidelines
- Update the README.md or documentation with details of changes if needed
- Make sure your code passes all tests
- Submit a pull request to the main repository:
- Use a clear and descriptive title
- Reference the issue it addresses
- Describe the changes in detail
- Explain how to test the changes
- Follow PEP 8 style guidelines
- Use 4 spaces for indentation (no tabs)
- Maximum line length of 100 characters
- Use docstrings for all classes, methods, and functions
- Use type hints where applicable
- UI files should be in the
ui/directory - Connect signals and slots using PyQt's
connect()method - Use Qt Designer for complex UI layouts when possible
- Use clear, concise messages in the imperative mood
- Example: "Add voice input feature" instead of "Added voice input feature"
- Reference issue numbers when applicable: "Fix crash on startup (#42)"
- Add tests for new features or bug fixes
- Make sure all tests pass before submitting a PR:
pytest
- Include both unit and integration tests when applicable
- Keep documentation up-to-date with code changes
- Document all public APIs, classes, and functions
- Add comments for complex logic
- Update the README.md with any new features or changes to installation/usage
main.py- Application entry pointchatbot.py- Main application window and UIdatabase.py- SQLite database for conversation historysettings_dialog.py- Settings configuration dialogsplash_screen.py- Application splash screenicon_manager.py- Icon management and fallback iconstemplates_manager.py- Prompt template managementthemes.py- Theme managementwelcome_screen.py- First-run welcome wizardexport_dialog.py- Dialog for exporting conversationstests/- Test directory
- Join our Discord for discussions
- Use GitHub Issues for bug reports and feature requests
- Tag maintainers when you need specific attention
- Create a new branch for each feature or bugfix
- Test your changes locally
- Submit a PR for review
- Address any requested changes
- Once approved, your changes will be merged
Thank you for contributing to Madick AI Chatbot! Your efforts help make this project better for everyone.