Welcome to RTAC! We're excited to have you contribute to making event organization more intelligent and accessible. This guide will help you get started and understand how to contribute effectively.
RTAC ("répondrai toujours avec certitude" - French for "will always respond with certainty") is a plug-and-play AI assistant platform for event organizers. It transforms any event into an intelligent, conversational experience.
- Python 3.13 or higher
- Node.js 18+ (for frontend development)
- Git
- Docker (optional, but recommended)
-
Fork and Clone
git clone https://github.com/your-username/RTAC.git cd RTAC -
Set up Python Environment
# Install Poetry if you haven't already curl -sSL https://install.python-poetry.org | python3 - # Install dependencies poetry install
-
Set up Frontend
cd frontend npm install -
Configure Environment
cp env.example .env # Edit .env with your API keys and configuration -
Run the Application
# Terminal 1 - Backend poetry run python main.py # Terminal 2 - Frontend cd frontend npm run dev
- Browse our Issues page
- Look for issues labeled with your skill level (easy, medium, hard)
- Comment on an issue to claim it
- Wait for maintainer approval
git checkout -b feature/your-feature-name
# or
git checkout -b fix/your-bug-fix- Follow the coding standards below
- Write tests for new functionality
- Update documentation as needed
# Backend tests
poetry run pytest
# Frontend tests
cd frontend
npm run lint
npm run testgit add .
git commit -m "feat: add new tool for event registration"We follow Conventional Commits:
feat:- New featuresfix:- Bug fixesdocs:- Documentation changesstyle:- Code style changes (formatting, etc.)refactor:- Code refactoringtest:- Adding or updating testschore:- Maintenance tasks
git push origin feature/your-feature-nameThen create a Pull Request with:
- Clear description of changes
- Link to related issues
- Screenshots (if UI changes)
- Test results
RTAC/
├── app/ # Backend application
│ ├── agents/ # AI agent implementation
│ ├── api/ # FastAPI routes
│ ├── config/ # Configuration
│ ├── schemas/ # Pydantic models
│ └── services/ # Business logic
├── frontend/ # React application
├── data/ # Event data files
├── docker/ # Docker configuration
├── scripts/ # Utility scripts
└── tests/ # Test files
- Follow PEP 8
- Use Black for formatting:
poetry run black . - Use isort for imports:
poetry run isort . - Use mypy for type checking:
poetry run mypy .
- Create a new file in
app/agents/tools/ - Follow the existing tool patterns
- Register your tool in
app/agents/apiconf_agent.py - Add tests in
tests/
Example tool structure:
from google.adk.tools import FunctionTool
from typing import Dict, Any
def my_tool_function(param: str, **kwargs) -> Dict[str, Any]:
"""Description of what this tool does."""
# Your tool logic here
return {
"success": True,
"result": "Your result"
}
def get_my_tools() -> List[FunctionTool]:
"""Get tools for this module."""
return [
FunctionTool(
name="my_tool",
description="What this tool does",
function=my_tool_function
)
]- Use ESLint and Prettier
- Follow React best practices
- Use TypeScript for type safety
- Write component tests
- Create component in
frontend/src/components/ - Add corresponding CSS module
- Export from index if needed
- Add tests
# Run all tests
poetry run pytest
# Run with coverage
poetry run pytest --cov=app
# Run specific test file
poetry run pytest tests/test_agent.pycd frontend
npm run test
npm run test:coverage- Accessibility First: Ensure all features are accessible
- Mobile Responsive: Design for mobile-first
- Consistent Design: Follow existing design patterns
- User-Friendly: Intuitive and easy to use
- Use existing CSS modules
- Follow the established color scheme
- Maintain consistent spacing and typography
- Use React Icons for consistency
- Use clear, concise language
- Include code examples
- Add screenshots for UI changes
- Keep documentation up to date
- API Documentation: Update OpenAPI specs
- User Guides: Help users understand features
- Developer Guides: Help contributors understand the codebase
- README Updates: Keep main README current
-
Create the tool file
touch app/agents/tools/my_new_tool.py
-
Implement the tool
# Follow the tool template above -
Register the tool
# In app/agents/apiconf_agent.py from app.agents.tools.my_new_tool import get_my_new_tools
-
Add tests
touch tests/test_my_new_tool.py
-
Create the route
# In app/api/v1/agents_router.py @router.post("/my-endpoint") async def my_endpoint(request: MyRequest): # Your endpoint logic
-
Add the schema
# In app/schemas/agents.py class MyRequest(BaseModel): field: str
-
Add tests
# In tests/test_api.py
-
Create component
touch frontend/src/components/MyComponent.tsx touch frontend/src/components/MyComponent.module.css
-
Add to app
// In App.tsx or relevant parent import MyComponent from './components/MyComponent'
-
Add tests
touch frontend/src/components/__tests__/MyComponent.test.tsx
When reporting bugs, please include:
-
Environment details
- OS and version
- Python version
- Node.js version
- Browser (if frontend issue)
-
Steps to reproduce
- Clear, step-by-step instructions
- Expected vs actual behavior
-
Additional context
- Error messages
- Screenshots
- Console logs
When requesting features:
-
Describe the problem
- What issue does this solve?
- Who would benefit?
-
Propose a solution
- How should it work?
- Any technical considerations?
-
Provide context
- Use cases
- Mockups (if UI feature)
We use the following labels to categorize issues:
easy- Good for beginnersmedium- Some experience neededhard- Advanced skills required
documentation- Documentation improvementsenhancement- New featuresbug- Bug fixesgood first issue- Perfect for newcomershelp wanted- Needs community help
frontend- React/TypeScript changesbackend- Python/FastAPI changesaiops- AI/ML improvementsdevops- Infrastructure/deploymentdesign- UI/UX improvementstesting- Test improvements
We appreciate all contributions! Contributors will be:
- Listed in our contributors file
- Mentioned in release notes
- Invited to join our community
- GitHub Issues: For bugs and feature requests
- GitHub Discussions: For questions and ideas
- Documentation: Check our docs first
- Community: Join our community channels
By contributing to RTAC, you agree that your contributions will be licensed under the MIT License.
Thank you for contributing to RTAC! 🎤✨
Together, we're making event organization more intelligent and accessible.