Thank you for your interest in contributing to Isabella! We welcome contributions from the community and are excited to see what you'll bring to the project.
- Code of Conduct
- How Can I Contribute?
- Development Setup
- Coding Guidelines
- Testing
- Documentation
- Community
This project and everyone participating in it is governed by our Code of Conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to the project maintainers.
Before creating bug reports, please check the existing issues to avoid duplicates. When you create a bug report, include as many details as possible:
- Use a clear and descriptive title
- Describe the exact steps to reproduce the problem
- Provide specific examples (code snippets, screenshots, etc.)
- Describe the behavior you observed and what you expected
- Include your environment details (OS, Node.js version, Python version, browser, etc.)
- Include relevant logs from the console or terminal
Use our bug report template when creating bug reports.
Enhancement suggestions are tracked as GitHub issues. When creating an enhancement suggestion:
- Use a clear and descriptive title
- Provide a detailed description of the suggested enhancement
- Explain why this enhancement would be useful to most users
- List some examples of how the enhancement would be used
- Specify if this is something you'd be willing to implement
Use our feature request template when suggesting enhancements.
We actively welcome your pull requests! Here's how to submit them:
- Fork the repository and create your branch from
main - Set up your development environment (see Development Setup)
- Make your changes following our Coding Guidelines
- Test your changes thoroughly (see Testing)
- Update documentation if needed
- Commit your changes with clear, descriptive commit messages
- Push to your fork and submit a pull request
- Follow the pull request template
- Link to relevant issues (e.g., "Fixes #123")
- Include screenshots or GIFs for UI changes
- Ensure all tests pass
- Update documentation as needed
- Keep PRs focused on a single concern
- Write clear commit messages following conventional commits format:
feat:for new featuresfix:for bug fixesdocs:for documentation changesstyle:for formatting changesrefactor:for code refactoringtest:for adding testschore:for maintenance tasks
- Node.js 18+ and npm
- Python 3.8+
- MongoDB 7.0+
- Git
# Install dependencies
npm install
# Start development server
npm run dev
# Run linter
npm run lint
# Build for production
npm run build# Navigate to backend directory
cd backend
# Create and activate virtual environment
python3 -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Create .env file with required variables
echo "LONGCAT_API_KEY=your_api_key_here" > .env
# Start the server
uvicorn main:app --reload --port 5000# Using Docker (recommended)
docker run -d -p 27017:27017 --name mongodb mongo:7.0
# Or install MongoDB locally- Write clean, readable, and maintainable code
- Follow the existing code style in the project
- Add comments for complex logic
- Keep functions small and focused
- Use meaningful variable and function names
- Follow TypeScript best practices
- Use functional components with hooks
- Use proper TypeScript types (avoid
any) - Follow React best practices and hooks rules
- Run ESLint before committing:
npm run lint - Use CSS modules or styled-components for styling
- Keep components small and reusable
- Follow PEP 8 style guide
- Use type hints for function parameters and return values
- Write docstrings for classes and functions
- Use async/await for I/O operations
- Keep route handlers thin - move logic to service layer
- Use proper error handling with appropriate HTTP status codes
- Log important operations using the logger utility
- Frontend: ESLint configuration is provided in
eslint.config.js - Backend: Use Black or autopep8 for Python formatting
- Keep lines under 100 characters when possible
- Use 2 spaces for indentation in TypeScript/React
- Use 4 spaces for indentation in Python
# Run tests (when implemented)
npm test
# Run tests in watch mode
npm test -- --watch# Navigate to backend directory
cd backend
# Run all tests
python -m pytest tests/
# Run specific test file
python -m pytest tests/test_emotion_integration.py
# Run with coverage
python -m pytest --cov=. tests/- Write tests for new features
- Update tests when changing existing features
- Aim for high test coverage on business logic
- Use meaningful test names that describe what is being tested
- Follow the existing test structure and patterns
Before submitting a PR:
- Test the frontend UI thoroughly
- Test all API endpoints with different inputs
- Verify MongoDB operations work correctly
- Test error handling and edge cases
- Test on different browsers (if frontend changes)
- Check console for errors or warnings
- Update README.md for significant changes
- Update API documentation for new/changed endpoints
- Add/update comments in code for complex logic
- Update backend documentation in
backend/README.mdif needed - Keep documentation in sync with code changes
- Use clear and concise language
- Include code examples where appropriate
- Add screenshots or diagrams for complex features
- Keep formatting consistent with existing docs
- Proofread for grammar and spelling
- Check existing issues
- Review documentation
- Search for similar questions or problems
- Create a new issue if you need help
- Watch the repository for updates
- Review open issues and PRs
- Participate in discussions
- Follow project guidelines and best practices
All submissions require review before merging. We aim to:
- Review PRs within 1-2 days
- Provide constructive feedback
- Request changes if needed
- Merge approved PRs promptly
Contributors will be recognized in:
- Git commit history
- Release notes for significant contributions
- Project documentation (if applicable)
Feel free to reach out by:
- Opening an issue for questions
- Commenting on relevant issues or PRs
- Contacting project maintainers
Thank you for contributing to Isabella! 🎉