Thank you for your interest in contributing to ModelForge! This guide will help you get started with contributing to the project. We welcome contributions of all kinds - bug fixes, new features, documentation improvements, and more.
- Code of Conduct
- Getting Started
- Development Setup
- Making Changes
- Pull Request Process
- Coding Standards
- Project Structure
- Testing Guidelines
- Reporting Issues
- Feature Requests
This project adheres to a Code of Conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to the project maintainers.
- Fork the repository on GitHub
- Clone your fork locally:
git clone https://github.com/<your-handle>/ModelForge.git cd ModelForge
- Add upstream remote:
git remote add upstream https://github.com/Ker102/ModelForge.git
- Node.js 18+ and npm
- PostgreSQL 14+
- Git
- Blender 3.0+ (for testing MCP integration)
- Python 3.10+ (for Blender MCP server)
uvpackage manager (install viacurl -LsSf https://astral.sh/uv/install.sh | sh)
-
Install dependencies:
npm install
-
Set up environment variables:
cp .env.example .env
Edit
.envand fill in your values (database, authentication, API keys, etc.) -
Set up the database:
# Generate Prisma client npm run db:generate # Push schema to database npm run db:push # (Optional) Create test user npm run test:user
-
Start development servers:
# Terminal 1: Web application npm run dev # Terminal 2: Desktop application (optional) cd desktop && npm run dev # Terminal 3: Blender MCP bridge (when testing orchestration) uvx blender-mcp
-
Verify setup:
- Open http://localhost:3000 in your browser
- Sign in with test credentials (if created)
- Test basic functionality
Use descriptive branch names with prefixes:
feat/- New features (e.g.,feat/add-export-functionality)fix/- Bug fixes (e.g.,fix/authentication-redirect)docs/- Documentation updates (e.g.,docs/improve-setup-guide)refactor/- Code refactoring (e.g.,refactor/simplify-api-handlers)test/- Test additions/changes (e.g.,test/add-integration-tests)chore/- Maintenance tasks (e.g.,chore/update-dependencies)
Write clear, concise commit messages following these guidelines:
- Use present tense ("Add feature" not "Added feature")
- Use imperative mood ("Move cursor to..." not "Moves cursor to...")
- Limit first line to 72 characters
- Reference issues and pull requests when relevant
- Examples:
feat: add export functionality for project historyfix: resolve authentication redirect loop (#123)docs: update setup instructions for Windows users
-
Update your fork:
git fetch upstream git checkout main git merge upstream/main
-
Create a feature branch:
git checkout -b feat/your-feature-name
-
Make your changes following our coding standards
-
Run quality checks:
npm run lint npm run analyze:orchestration # if changing orchestration logic -
Test your changes:
- Run existing tests
- Add new tests if applicable
- Test manually with Blender connected
- Verify no regressions in existing functionality
-
Commit your changes:
git add . git commit -m "feat: your descriptive commit message"
-
Push to your fork:
git push origin feat/your-feature-name
-
Open a Pull Request:
- Use the PR template provided
- Link related issues
- Provide clear description of changes
- Include screenshots for UI changes
- Request review from maintainers
- Code follows project style guidelines
- Self-review completed
- Comments added for complex logic
- Documentation updated (if applicable)
- No new warnings or errors
- Tests added/updated and passing
- Related issues linked
- PR description is clear and complete
- Use TypeScript for all new code
- Follow Next.js App Router conventions
- Prefer
async/awaitover promise chains - Use meaningful variable and function names
- Add JSDoc comments for public APIs
- Use functional components with hooks
- Keep components focused and single-purpose
- Extract reusable logic into custom hooks
- Use TypeScript interfaces for props
- Use Tailwind CSS for styling
- Follow shadcn/ui patterns for components
- Maintain consistent spacing and typography
- Ensure responsive design for all screen sizes
- Validate input data with Zod schemas
- Use proper HTTP status codes
- Handle errors gracefully
- Add authentication where required
- Document API endpoints
- Use Prisma for all database operations
- Write migrations for schema changes
- Test migrations before committing
- Keep queries efficient and indexed
- Keep planner logic in
lib/orchestration/planner.ts - Executor changes go in
lib/orchestration/executor.ts - Add telemetry for debugging (
logs/orchestration.ndjson) - Document complex orchestration flows
- Surface plan metadata in the UI
ModelForge/
├── app/ # Next.js app directory
│ ├── (auth)/ # Authentication routes
│ ├── api/ # API routes
│ ├── dashboard/ # Dashboard pages
│ └── page.tsx # Home page
├── components/ # React components
│ ├── ui/ # shadcn/ui components
│ ├── landing/ # Landing page sections
│ ├── dashboard/ # Dashboard components
│ └── auth/ # Auth forms
├── lib/ # Shared libraries
│ ├── orchestration/ # AI orchestration logic
│ ├── mcp/ # MCP client
│ ├── auth.ts # NextAuth config
│ ├── db.ts # Prisma client
│ └── utils.ts # Utilities
├── prisma/ # Database schema
├── desktop/ # Electron application
├── public/ # Static assets
├── scripts/ # Build and utility scripts
├── .github/ # GitHub templates and workflows
│ ├── ISSUE_TEMPLATE/ # Issue templates
│ ├── workflows/ # CI/CD workflows
│ └── *.yml # GitHub configurations
└── docs/ # Documentation (if needed)
- Test with Blender MCP server running
- Verify authentication flows
- Check responsive design on multiple devices
- Test error handling and edge cases
- Validate orchestration with real Blender scenes
- Test at least one complete workflow with Blender
- Verify MCP command execution
- Check database operations
- Validate API endpoints
- Verify no console errors or warnings
- Test on multiple browsers (Chrome, Firefox, Safari)
- Ensure all existing tests pass
- Check performance impact
Use the appropriate issue template:
- Bug Report: For reproducible problems
- Feature Request: For new feature suggestions
- Improvement Request: For enhancements to existing features
Include in your issue:
- Clear, descriptive title
- Steps to reproduce (for bugs)
- Expected vs actual behavior
- Environment details (OS, browser, Blender version)
- Relevant logs or screenshots
- Error messages (if any)
When proposing new features:
- Check existing issues to avoid duplicates
- Use the Feature Request template
- Explain the problem it solves
- Describe your proposed solution
- Consider implementation complexity
- Discuss potential alternatives
- Check the README for setup and usage
- Review existing Issues
- Join Discussions
- Read the orchestration documentation
Contributors will be:
- Listed in release notes
- Credited in the project
- Mentioned in related issues/PRs
If you have questions about contributing:
- Open a discussion in GitHub Discussions
- Comment on related issues
- Reach out to maintainers
Thank you for contributing to ModelForge! Your efforts help make AI-powered 3D creation accessible to everyone. 🙌