Welcome Contributors
Thank you for your interest in contributing to the Accord Project Template Playground! This guide will help you understand our contribution process and standards.Code of Conduct
The Template Playground follows the Accord Project Contribution Guidelines. We expect all contributors to:- Be respectful and inclusive
- Welcome newcomers and help them learn
- Focus on what is best for the community
- Show empathy towards other community members
Getting Help
If you need assistance:- Discord: Join the Accord Project Discord Community for real-time support
- GitHub Issues: Search existing issues or create a new one
- Documentation: Check the Accord Project docs
How to Contribute
Types of Contributions
We welcome various types of contributions:Bug Fixes
Fix issues reported by users or found during development
New Features
Implement new functionality for the playground
Documentation
Improve guides, tutorials, and API documentation
Tests
Add or improve unit and E2E tests
Learning Modules
Create interactive learning experiences
UI/UX Improvements
Enhance the user interface and experience
Contribution Workflow
Find or Create an Issue
- Check existing issues for something to work on
- For new features or significant changes, create an issue first to discuss
- Comment on the issue to let others know you’re working on it
Make Your Changes
- Write clean, readable code following our style guide
- Add tests for new functionality
- Update documentation as needed
- Ensure all tests pass:
npm test - Run linting:
npm run lint
Commit Your Changes
Write clear, descriptive commit messages:Follow Conventional Commits:
feat:New featurefix:Bug fixdocs:Documentation changesstyle:Code style changes (formatting, etc.)refactor:Code refactoringtest:Adding or updating testschore:Maintenance tasks
Push and Create Pull Request
- Use a clear title describing the change
- Reference related issues (e.g., “Fixes #123”)
- Describe what changed and why
- Add screenshots for UI changes
Code Standards
TypeScript Guidelines
Type Safety
Type Safety
Use strict TypeScript typing:
Async/Await
Async/Await
Prefer async/await over promises:
Error Handling
Error Handling
Always handle errors appropriately:
React Best Practices
Functional Components
Functional Components
Use functional components with hooks:
Custom Hooks
Custom Hooks
Extract reusable logic into custom hooks:
Memo and Callbacks
Memo and Callbacks
Use React.memo, useMemo, and useCallback for performance:
Code Style
We use ESLint for code quality. Key rules:- Indentation: 2 spaces
- Semicolons: Required
- Quotes: Single quotes for strings
- Line length: 100 characters (soft limit)
- Naming:
camelCasefor variables and functionsPascalCasefor components and typesUPPER_CASEfor constants
Testing Requirements
Test Coverage
All new code should include tests:- New features: Unit tests + E2E test for main flow
- Bug fixes: Test that reproduces the bug + fix verification
- Refactoring: Ensure existing tests still pass
Running Tests Before Submitting
Pull Request Guidelines
PR Title and Description
Good PR title:PR Checklist
Before submitting:- Code follows style guidelines
- Self-review completed
- Comments added for complex logic
- Documentation updated
- Tests added/updated
- All tests pass
- No console errors or warnings
- Build succeeds
- Git history is clean (squash if needed)
Review Process
What to Expect
- Initial Review: A maintainer will review within 1-3 business days
- Feedback: You may receive requests for changes
- Iteration: Address feedback and update the PR
- Approval: Once approved, a maintainer will merge
Review Criteria
Reviewers will check:- Code quality and style adherence
- Test coverage and quality
- Documentation completeness
- Performance implications
- Security considerations
- Backward compatibility
Special Contribution Areas
Adding New Template Samples
To add a new sample:- Create a new file in
src/samples/(e.g.,mytemplate.ts) - Export NAME, TEMPLATE, MODEL, and DATA:
- Add to
src/samples/index.ts:
Adding Learning Pathway Steps
Create interactive tutorials insrc/constants/learningSteps/steps.ts using the Shepherd.js format.
AI Assistant Improvements
Contributions tosrc/ai-assistant/ should:
- Support multiple LLM providers
- Include proper error handling
- Respect rate limits
- Protect API keys
License
By contributing, you agree that your contributions will be licensed under the Apache License 2.0. All source code files should include:Recognition
All contributors are recognized in:- GitHub contributors list
- Release notes for significant contributions
- Project README (for major features)
Questions?
Don’t hesitate to ask:- Discord: Accord Project Community
- GitHub: Comment on issues or discussions
- Email: Reach out to the Accord Project team
Next Steps
Development Setup
Get your environment ready
Project Architecture
Understand the codebase
Testing Guide
Learn our testing practices