Welcome! We're excited to have you contribute to IDGAF.ai. This guide will help you get started.
- Node.js 16+ and npm
- Git
- TypeScript knowledge
- Understanding of AI/ML concepts (helpful but not required)
-
Fork and Clone
git clone https://github.com/YOUR_USERNAME/idgaf.ai.git cd idgaf.ai -
Install Dependencies
npm install
-
Build Packages
npm run build
-
Run Tests
npm test
idgaf.ai/
├── packages/
│ ├── core/ # Core SDK functionality
│ ├── react-native/ # React Native bindings
│ ├── flutter/ # Flutter plugin
│ └── cli/ # Command-line tools
├── examples/ # Example applications
├── docs/ # Documentation
└── tests/ # Integration tests
Core SDK (packages/core/)
- Model adapters (GGUF, TFLite, ONNX, ExecuTorch)
- Runtime optimizations
- Caching and memory management
- Streaming and performance
Platform Bindings
- React Native (
packages/react-native/) - Flutter (
packages/flutter/) - CLI tools (
packages/cli/)
Documentation & Examples
- Getting started guides
- API documentation
- Tutorial applications
- Platform-specific examples
-
Create a Branch
git checkout -b feature/your-feature-name
-
Make Your Changes
- Write clean, well-documented code
- Follow existing code style
- Add tests for new functionality
- Update documentation as needed
-
Test Your Changes
npm test # Run all tests npm run test:core # Test core package npm run test:integration # Run integration tests
-
Build and Validate
npm run build # Build all packages npm run lint # Check code style npm run typecheck # Verify types
-
Commit Your Changes
git add . git commit -m "feat: add new model adapter for XYZ"
Use Conventional Commits:
feat:- New featuresfix:- Bug fixesdocs:- Documentation changesstyle:- Code style changesrefactor:- Code refactoringtest:- Test additions/changeschore:- Maintenance tasks
- TypeScript: Strict mode enabled
- Formatting: Prettier with 2-space indentation
- Linting: ESLint with TypeScript rules
- Naming: camelCase for variables, PascalCase for classes
- Unit Tests: For individual functions and classes
- Integration Tests: For component interactions
- End-to-End Tests: For complete workflows
- Performance Tests: For benchmarking
Example test structure:
describe('ModelAdapter', () => {
describe('loadModel', () => {
it('should load GGUF models correctly', async () => {
// Test implementation
});
});
});To add a new model format adapter:
-
Create the Adapter
// packages/core/src/adapters/NewFormatAdapter.ts export class NewFormatAdapter implements ModelAdapter { readonly format = 'newformat' as const; readonly supportedTypes = ['llm'] as const; canHandle(modelPath: string): boolean { return modelPath.endsWith('.newformat'); } async loadModel(modelPath: string): Promise<LoadedModel> { // Implementation } }
-
Add Tests
// packages/core/src/adapters/__tests__/NewFormatAdapter.test.ts describe('NewFormatAdapter', () => { // Test cases });
-
Update Exports
// packages/core/src/index.ts export { NewFormatAdapter } from './adapters/NewFormatAdapter';
To add a new platform:
-
Create Package Structure
packages/new-platform/ ├── src/ ├── package.json ├── README.md └── tsconfig.json -
Implement Platform Bindings
-
Add Platform-Specific Examples
-
Update Main Documentation
When reporting bugs, please include:
- Environment: OS, Node.js version, package versions
- Steps to Reproduce: Clear, minimal example
- Expected Behavior: What should happen
- Actual Behavior: What actually happens
- Error Messages: Full error logs
- Code Sample: Minimal reproduction case
-
Ensure CI Passes
- All tests pass
- Code builds successfully
- Linting passes
- Type checking passes
-
Update Documentation
- Update README if needed
- Add/update API documentation
- Include examples for new features
-
Add Tests
- Unit tests for new functionality
- Integration tests for interactions
- Update existing tests if needed
-
Request Review
- Provide clear PR description
- Explain the changes made
- Reference any related issues
Contributors will be:
- Listed in our CONTRIBUTORS.md file
- Mentioned in release notes
- Invited to our contributor Discord channel
- Eligible for special contributor badges
- Discord: Join our contributor channel
- GitHub Issues: For bug reports and feature requests
- GitHub Discussions: For questions and ideas
- Email: contributors@idgaf.ai
We follow the Contributor Covenant. Please be respectful, inclusive, and constructive in all interactions.
For security vulnerabilities, please email security@idgaf.ai instead of creating a public issue.
Thank you for contributing to IDGAF.ai! Every contribution, no matter how small, helps make AI more accessible to developers everywhere. 🚀