NexDatawork-Mini-Agent / CONTRIBUTING.md
svar-chandak
Revamp docs, add requirements, and modularize agents
5a3fcad
# Contributing Guidelines
Thank you for your interest in contributing to NexDatawork! We welcome all kinds of contributions, from bug reports to feature implementations.
---
## Table of Contents
- [Code of Conduct](#code-of-conduct)
- [How to Contribute](#how-to-contribute)
- [Reporting Issues](#reporting-issues)
- [Git Workflow](#git-workflow)
- [Development Setup](#development-setup)
- [Code Style](#code-style)
- [Pull Request Process](#pull-request-process)
---
## Code of Conduct
Please be respectful and inclusive. We are committed to providing a welcoming environment for everyone.
---
## How to Contribute
There are many ways to contribute:
| Contribution Type | Description |
|------------------|-------------|
| Bug Reports | Found a bug? Let us know! |
| Feature Requests | Have an idea? Share it with us |
| Documentation | Help improve our docs |
| Code | Submit bug fixes or new features |
| Testing | Help test new releases |
---
## Reporting Issues
### Before Filing an Issue
1. Check existing [bug reports](https://github.com/NexDatawork/data-agents/issues?q=is%3Aissue+label%3Abug)
2. Check [feature requests](https://github.com/NexDatawork/data-agents/issues?q=is%3Aissue+label%3Aenhancement)
3. Search closed issues for similar problems
### Bug Reports
File a bug report at: [Bug Report](https://github.com/NexDatawork/data-agents/issues/new?template=bug_report.yml)
Include:
- A reproducible test case or series of steps
- The version of the code used (commit ID)
- Any relevant modifications you made
- Your environment details (OS, Node version, Python version)
### Feature Requests
Submit feature ideas at: [Feature Request](https://github.com/NexDatawork/data-agents/issues/new?template=feature_request.yml)
---
## Git Workflow
We use a feature branch workflow. Here is how to contribute code:
### 1. Fork the Repository
```bash
# Fork via GitHub UI, then clone your fork
git clone https://github.com/YOUR_USERNAME/data-agents.git
cd data-agents
# Add upstream remote
git remote add upstream https://github.com/NexDatawork/data-agents.git
```
### 2. Create a Feature Branch
```bash
# Sync with upstream
git fetch upstream
git checkout main
git merge upstream/main
# Create your feature branch
git checkout -b feature/your-feature-name
# For bug fixes, use:
git checkout -b fix/bug-description
```
### Branch Naming Conventions
| Prefix | Use Case | Example |
|--------|----------|---------|
| `feature/` | New features | `feature/add-excel-support` |
| `fix/` | Bug fixes | `fix/csv-parsing-error` |
| `docs/` | Documentation | `docs/update-readme` |
| `refactor/` | Code refactoring | `refactor/agent-structure` |
| `test/` | Adding tests | `test/sql-agent-tests` |
### 3. Make Your Changes
```bash
# Make changes to the code
# Stage your changes
git add .
# Commit with a descriptive message
git commit -m "feat: add Excel file support for data upload"
```
### Commit Message Format
Use conventional commit format:
```
type(scope): description
[optional body]
[optional footer]
```
Types:
- `feat`: New feature
- `fix`: Bug fix
- `docs`: Documentation only
- `style`: Formatting, no code change
- `refactor`: Code restructuring
- `test`: Adding tests
- `chore`: Maintenance tasks
### 4. Push and Create PR
```bash
# Push to your fork
git push origin feature/your-feature-name
```
Then open a Pull Request via GitHub.
### 5. Keep Your Branch Updated
```bash
# If main has been updated, rebase your branch
git fetch upstream
git rebase upstream/main
# If there are conflicts, resolve them, then:
git add .
git rebase --continue
# Force push if needed (only on your feature branch!)
git push -f origin feature/your-feature-name
```
---
## Development Setup
### Prerequisites
- [Node.js](https://nodejs.org/en) v18+
- [Python](https://python.org) 3.10+
- [Supabase](https://supabase.com/) account (for database)
- [OpenAI](https://platform.openai.com/) or Azure OpenAI API key
### Environment Setup
```bash
# Clone the repository
git clone https://github.com/NexDatawork/data-agents.git
cd data-agents
# Copy environment file
cp .env.example .env
# Edit .env with your API keys
# Install Node.js dependencies
npm install
# Create Python virtual environment
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
# Install Python dependencies
pip install -r requirements.txt
```
### Running the Application
```bash
# Start Next.js development server
npm run dev
# Run Jupyter notebook (in separate terminal)
jupyter notebook examples/data_agent_demo.ipynb
```
---
## Code Style
### JavaScript/TypeScript
- Use Prettier for formatting
- Follow ESLint rules
- Use TypeScript for new code
### Python
- Follow PEP 8
- Use type hints where possible
- Document functions with docstrings
### General
- Write self-documenting code
- Add comments for complex logic
- Keep functions small and focused
---
## Pull Request Process
1. **Ensure your code works** - Test locally before submitting
2. **Update documentation** - If you changed functionality, update relevant docs
3. **Write clear PR description** - Explain what and why
4. **Link related issues** - Use "Closes #123" to auto-close issues
5. **Request review** - Tag maintainers for review
6. **Address feedback** - Make requested changes promptly
### PR Checklist
- [ ] Code follows project style guidelines
- [ ] Self-review completed
- [ ] Tests pass locally
- [ ] Documentation updated (if needed)
- [ ] Commit messages follow convention
- [ ] PR description is clear and complete
---
## Questions?
- Open a [Discussion](https://github.com/NexDatawork/data-agents/discussions)
- Join our [Discord](https://discord.gg/Tb55tT5UtZ)
- Check the [Wiki](https://github.com/NexDatawork/data-agents/wiki)
---
Thank you for contributing to NexDatawork!