Skip to content

Latest commit

Β 

History

History
400 lines (301 loc) Β· 10 KB

CONTRIBUTING.md

File metadata and controls

400 lines (301 loc) Β· 10 KB

🀝 Contributing to Comeback AI

Thank you for your interest in contributing to Comeback AI! ✨
Made with ❀️ by Pink Pixel - "Dream it, Pixel it"

We're excited to have you join our community of contributors who are helping to make negativity a thing of the past through AI-powered humor!


🎯 Table of Contents


🌟 Code of Conduct

By participating in this project, you agree to abide by our community standards:

βœ… Do's

  • πŸ’ Be respectful and inclusive
  • 🎭 Keep the humor positive and entertaining
  • 🀝 Help others learn and grow
  • πŸ› Report bugs constructively
  • πŸ’‘ Share ideas thoughtfully
  • πŸŽ‰ Celebrate others' contributions

❌ Don'ts

  • 🚫 Use inappropriate or offensive language
  • 😠 Engage in personal attacks or harassment
  • πŸ—‚οΈ Share private information without permission
  • πŸ’” Discourage new contributors
  • 🚨 Submit harmful or malicious content

πŸš€ Getting Started

First Time Contributing?

Welcome! We're thrilled to have you. Here's how to get started:

  1. 🍴 Fork the repository
  2. πŸ“₯ Clone your fork locally
  3. 🌿 Create a feature branch
  4. ✨ Make your changes
  5. πŸ§ͺ Test thoroughly
  6. πŸ“ Submit a pull request

Areas We Need Help With

  • 🎭 New Personas - Creative character ideas and personalities
  • 🎨 UI/UX Improvements - Design enhancements and user experience
  • πŸ”§ Bug Fixes - Resolving issues and improving stability
  • πŸ“– Documentation - Better guides, examples, and explanations
  • 🌍 Internationalization - Multi-language support
  • ⚑ Performance - Optimization and speed improvements
  • πŸ§ͺ Testing - Test coverage and quality assurance

πŸ› οΈ Development Setup

Prerequisites

  • Node.js 18+ (Download)
  • npm or yarn
  • Git (Download)
  • VS Code (recommended) with TypeScript extension

Setup Steps

# 1. Fork and clone the repository
git clone https://github.com/YOUR_USERNAME/comeback-ai.git
cd comeback-ai

# 2. Install dependencies
npm install

# 3. Start development server
npm run dev

# 4. Open in browser
# Visit http://localhost:5173

Available Scripts

Command Description
npm run dev πŸš€ Start development server
npm run build πŸ—οΈ Build for production
npm run lint πŸ” Run ESLint
npm run lint:fix πŸ”§ Fix ESLint issues
npm run preview πŸ‘€ Preview production build

πŸ“‹ Contributing Guidelines

Types of Contributions

πŸ› Bug Fixes

  • Small fixes that resolve existing issues
  • No new features or breaking changes
  • Include tests when possible

✨ Features

  • New functionality or enhancements
  • Discuss in an issue before implementing
  • Include documentation and tests

πŸ“š Documentation

  • README improvements
  • Code comments and JSDoc
  • Examples and tutorials

🎨 Design

  • UI/UX improvements
  • Visual enhancements
  • Responsive design fixes

Contribution Size Guidelines

Type Description Review Time
🐾 Small 1-10 lines changed 1-2 days
πŸ• Medium 10-100 lines changed 3-5 days
🦁 Large 100+ lines changed 1-2 weeks

πŸ”„ Pull Request Process

Before Submitting

  1. βœ… Ensure your code follows our coding standards
  2. πŸ§ͺ Run tests and fix any failures
  3. πŸ” Run linting and fix any issues
  4. πŸ“– Update documentation if needed
  5. 🎯 Keep changes focused and atomic

PR Title Format

Use conventional commit format:

type(scope): description

Examples:
feat(personas): add Robot Butler persona
fix(audio): resolve playback issues on Safari
docs(readme): update installation instructions
style(ui): improve mobile responsiveness

PR Description Template

## 🎯 Description
Brief description of what this PR does.

## πŸ”§ Type of Change
- [ ] πŸ› Bug fix
- [ ] ✨ New feature
- [ ] πŸ’₯ Breaking change
- [ ] πŸ“š Documentation update
- [ ] 🎨 Style/UI improvement

## πŸ§ͺ Testing
- [ ] Tests pass locally
- [ ] Manual testing completed
- [ ] New tests added (if applicable)

## πŸ“‹ Checklist
- [ ] Code follows style guidelines
- [ ] Self-review completed
- [ ] Documentation updated
- [ ] No merge conflicts

## πŸ“· Screenshots (if UI changes)
[Add screenshots here]

πŸ› Issue Guidelines

Bug Reports

Use our bug report template:

**πŸ› Bug Description**
Clear description of what went wrong.

**πŸ”„ Steps to Reproduce**
1. Go to '...'
2. Click on '...'
3. See error

**βœ… Expected Behavior**
What should have happened.

**πŸ–₯️ Environment**
- Browser: Chrome 120
- OS: Windows 11
- Device: Desktop

**πŸ“· Screenshots**
[Add screenshots if helpful]

Feature Requests

Use our feature request template:

**✨ Feature Description**
Clear description of the proposed feature.

**🎯 Problem to Solve**
What problem does this solve?

**πŸ’‘ Proposed Solution**
How would you implement this?

**πŸ”„ Alternatives Considered**
Other solutions you've thought about.

**πŸ“Š Additional Context**
Any other relevant information.

πŸ’» Coding Standards

TypeScript

  • βœ… Use TypeScript for all new code
  • πŸ“ Define interfaces for complex objects
  • 🎯 Prefer type safety over any
  • πŸ“‹ Use meaningful variable names

React

  • 🧩 Use functional components with hooks
  • 🎨 Follow React best practices
  • πŸ”„ Use React Router for navigation
  • 🎭 Leverage Framer Motion for animations

Styling

  • 🎨 Use Tailwind CSS utility classes
  • πŸ“± Mobile-first responsive design
  • 🌈 Follow existing color scheme
  • ⚑ Optimize for performance

Code Structure

// βœ… Good - Clear, typed, documented
interface PersonaProps {
  name: string;
  voice: string;
  onSelect: (persona: string) => void;
}

export function PersonaCard({ name, voice, onSelect }: PersonaProps) {
  const handleClick = () => {
    onSelect(name);
  };

  return (
    <div className="persona-card" onClick={handleClick}>
      <h3>{name}</h3>
      <p>Voice: {voice}</p>
    </div>
  );
}

File Organization

src/
β”œβ”€β”€ components/     # Reusable UI components
β”œβ”€β”€ pages/         # Route-based page components
β”œβ”€β”€ lib/           # Utility functions and helpers
β”œβ”€β”€ types/         # TypeScript type definitions
└── hooks/         # Custom React hooks

πŸ§ͺ Testing

Testing Strategy

While we don't have comprehensive tests yet, we encourage:

  • πŸ”§ Manual Testing: Test your changes thoroughly
  • πŸ“± Cross-browser: Check Chrome, Firefox, Safari
  • πŸ“² Responsive: Test on mobile and desktop
  • β™Ώ Accessibility: Ensure keyboard navigation works

Future Testing Plans

  • 🎯 Unit Tests: Jest + React Testing Library
  • πŸ”„ Integration Tests: API integration testing
  • 🎭 E2E Tests: Playwright for user workflows
  • ⚑ Performance: Lighthouse CI for performance monitoring

πŸ“– Documentation

Code Documentation

  • πŸ“ Use JSDoc for complex functions
  • πŸ’¬ Add inline comments for tricky logic
  • πŸ“‹ Document component props with TypeScript

User Documentation

  • πŸ“– Update README for new features
  • 🎯 Include usage examples
  • πŸ“· Add screenshots for UI changes
  • πŸ”— Link to relevant resources

🌍 Community

Getting Help

  • πŸ’¬ Discord: @sizzlebop
  • πŸ™ GitHub Discussions: Coming soon
  • πŸ“§ Issues: For bugs and feature requests
  • 🌐 Website: pinkpixel.dev

Recognition

We appreciate all contributions! Contributors will be:

  • πŸ† Listed in our contributors section
  • πŸŽ‰ Mentioned in release notes
  • ✨ Featured on our website (with permission)
  • πŸ’ Sent virtual high-fives and gratitude

🎨 Persona Contribution Guidelines

Creating New Personas

When adding new personas to personas.json:

{
  "name": "Quirky Character Name",
  "voice": "voice_id",
  "prompt": "Detailed personality description that guides AI behavior..."
}

Persona Requirements

  • 🎭 Unique Personality: Distinct from existing personas
  • 🎀 Voice Assignment: Use available voice IDs
  • πŸ“ Clear Prompt: Detailed instructions for AI behavior
  • 😊 Positive Humor: Keep it entertaining, not harmful
  • 🎯 Target Audience: Consider broad appeal

Voice Options

Available voices: alloy, echo, fable, onyx, nova, shimmer, coral, verse, ballad, ash, sage, amuch, dan


πŸš€ Release Process

Version Numbering

We follow Semantic Versioning:

  • πŸ”§ PATCH (0.1.X): Bug fixes
  • ✨ MINOR (0.X.0): New features
  • πŸ’₯ MAJOR (X.0.0): Breaking changes

Release Schedule

  • πŸ—“οΈ Regular Releases: Monthly minor releases
  • πŸ› Hotfixes: As needed for critical bugs
  • πŸŽ‰ Major Releases: Quarterly feature releases

πŸ™ Thank You

Every contribution, no matter how small, makes Comeback AI better for everyone. Whether you're fixing a typo, suggesting a new persona, or implementing a major feature, you're helping create something that brings joy and laughter to people worldwide.

Together, we're turning negativity into comedy, one comeback at a time! 🎭✨


Β© 2025 Pink Pixel. All rights reserved.
"Dream it, Pixel it" ✨


Questions? Reach out to us: