Getting Started
Welcome to Splat! We’re excited to have you contribute. This guide will help you set up your development environment and understand our workflow.Splat was created at CalHacks 11.0 and is actively maintained by the community.
Development Setup
Prerequisites
Before you begin, ensure you have:- Python 3.7 or higher
- Git
- pip (Python package installer)
- A text editor or IDE
Clone the Repository
Install Dependencies
Install all required dependencies:View full dependency list
View full dependency list
The following packages are required:
click- CLI frameworkrepopack- Repository packaging utilitiessetuptools- Python package setupvirtualenv- Virtual environment managementgroq- AI inference APIfastapi- Web frameworkuvicorn- ASGI serverpython-dotenv- Environment variable managementprompt_toolkit- Terminal interface utilitiesrequests- HTTP libraryblack- Code formatterpydantic_ai- AI integrationpydantic- Data validationzmq- Messaging library
Install in Development Mode
Install Splat in editable mode:Set Up Environment Variables
Create a.env file in the project root:
Project Structure
Understanding the codebase:Development Workflow
1. Create a Branch
Always create a new branch for your changes:feature/- New featuresfix/- Bug fixesdocs/- Documentation updatesrefactor/- Code refactoring
2. Make Your Changes
Follow these guidelines:Code Style
- Use Black for Python formatting
- Follow PEP 8 guidelines
- Write clear, descriptive variable names
- Add comments for complex logic
Testing
- Test your changes thoroughly
- Include edge cases
- Verify existing tests still pass
- Add tests for new features
Documentation
- Update relevant documentation
- Add docstrings to functions
- Update README if needed
- Include usage examples
Git Commits
- Write clear commit messages
- Use present tense (“Add feature”)
- Keep commits atomic
- Reference issues when applicable
3. Format Your Code
Before committing, format your code:4. Test Your Changes
Run Splat locally to test:5. Commit Your Changes
- Add: New features
- Fix: Bug fixes
- Update: Improvements to existing features
- Refactor: Code restructuring
- Docs: Documentation changes
6. Push and Create Pull Request
- Clear title describing the change
- Detailed description of what and why
- Reference to any related issues
- Screenshots or examples if applicable
Contributing Areas
High Priority
Fix Known Bugs
Fix Known Bugs
Help resolve known issues:
- Code formatting preservation
- Sub-module entrypoint handling
Improve Error Detection
Improve Error Detection
Enhance error parsing and context gathering:
- Better stack trace analysis
- Multi-language support
- Improved file relationship mapping
Add Tests
Add Tests
Increase test coverage:
- Unit tests for core functions
- Integration tests
- Edge case testing
Feature Requests
- Configuration file support (
.splatrc) - IDE/editor integrations
- Custom formatter integration
- Additional language support
- Performance optimizations
- Enhanced AI model options
Code Review Process
- Automated Checks: CI/CD runs linting and tests
- Maintainer Review: Core team reviews your code
- Feedback: Address any requested changes
- Approval: Once approved, your PR will be merged
- Recognition: You’ll be added to contributors!
Getting Help
Questions
Open a discussion on GitHub for:
- Architecture questions
- Implementation guidance
- Best practices
Issues
Create an issue for:
- Bug reports
- Feature requests
- Documentation improvements
Community Guidelines
- Be respectful and inclusive
- Provide constructive feedback
- Help others when possible
- Follow the code of conduct
- Celebrate contributions, big and small