Skip to content

Latest commit

 

History

History
253 lines (190 loc) · 6.25 KB

File metadata and controls

253 lines (190 loc) · 6.25 KB

Contributing to Flutter Interview Mastery

Thank you for your interest in contributing! This repository is built by the community, for the community. Every contribution helps developers prepare for their Flutter interviews.

🌟 How Can You Contribute?

1. Add New Questions

  • Share questions you encountered in real interviews
  • Include detailed answers with explanations
  • Provide working code examples
  • Mention the company/level if appropriate (optional)

2. Improve Existing Content

  • Fix typos or grammatical errors
  • Enhance explanations for clarity
  • Update code examples with better practices
  • Add alternative solutions

3. Add Coding Challenges

  • Create practice problems with solutions
  • Include difficulty levels (Easy/Medium/Hard)
  • Add test cases and expected outputs

4. Share Resources

  • Recommend useful packages
  • Add helpful articles or videos
  • Share interview tips and experiences

📝 Contribution Guidelines

Question Format

When adding questions, follow this structure:

## Question: [Short descriptive title]

**Level:** Junior/Mid/Senior  
**Category:** State Management/Architecture/etc.  
**Difficulty:** ⭐⭐⭐ (1-5 stars)

### The Question
[Write the question clearly and concisely]

### Answer
[Provide a comprehensive answer with explanation]

### Code Example
// Working code example here


### Best Practices
- Point 1
- Point 2

### Common Mistakes to Avoid
- Mistake 1
- Mistake 2

### Follow-up Questions
- Related question 1
- Related question 2


Code Standards

  • Use Flutter 3.x+ syntax
  • Follow official Dart style guide
  • Include comments for complex logic
  • Test your code before submitting
  • Use meaningful variable names
  • Keep examples concise but complete

File Organization

Place your contribution in the appropriate directory:

questions/
├── 01-fundamentals/     # Junior level (0-2 years)
├── 02-advanced/         # Mid level (2-4 years)
├── 03-real-world/       # Practical implementation
└── 04-system-design/    # Senior level (4+ years)

coding-challenges/
├── easy/
├── medium/
└── hard/

🚀 Step-by-Step Contribution Process

Step 1: Fork the Repository

Click the "Fork" button at the top right of this page.

Step 2: Clone Your Fork

git clone https://github.com/YOUR-USERNAME/flutter-interview-mastery.git
cd flutter-interview-mastery

Step 3: Create a Branch

git checkout -b feature/add-widget-questions
# or
git checkout -b fix/correct-state-management-answer

Branch naming conventions:

  • feature/ - for new content
  • fix/ - for corrections
  • docs/ - for documentation updates
  • refactor/ - for restructuring

Step 4: Make Your Changes

  • Add your questions/answers
  • Include code examples
  • Test all code snippets
  • Check for typos

Step 5: Commit Your Changes

git add .
git commit -m "Add questions about StatefulWidget lifecycle"

Commit message guidelines:

  • Use present tense ("Add" not "Added")
  • Be descriptive but concise
  • Reference issues if applicable (#123)

Examples:

  • Add 10 questions about Riverpod state management
  • Fix typo in BLoC pattern explanation
  • Update animation code examples for Flutter 3.16
  • Updated stuff
  • Fixed things

Step 6: Push to Your Fork

git push origin feature/add-widget-questions

Step 7: Create a Pull Request

  1. Go to your fork on GitHub
  2. Click "Compare & pull request"
  3. Fill in the PR template with:
    • What: What you added/changed
    • Why: Reason for the change
    • Testing: How you verified it works
  4. Submit the PR

✅ PR Review Process

What We Look For

  • ✅ Content quality and accuracy
  • ✅ Code examples work correctly
  • ✅ Proper formatting and structure
  • ✅ No plagiarism (cite sources if needed)
  • ✅ Follows contribution guidelines

Review Timeline

  • PRs are typically reviewed within 48-72 hours
  • You may receive feedback or change requests
  • Once approved, your PR will be merged!

🎯 Content Quality Standards

DO ✅

  • Write clear, beginner-friendly explanations
  • Provide complete, runnable code examples
  • Include real-world context when possible
  • Cite sources for technical facts
  • Use proper Markdown formatting
  • Add visual aids (diagrams) when helpful

DON'T ❌

  • Copy content without attribution
  • Submit untested code
  • Use deprecated Flutter/Dart features
  • Include personal/company confidential info
  • Add questions without answers
  • Use offensive or unprofessional language

🐛 Reporting Issues

Found a problem? Please report it!

Before Creating an Issue

  1. Search existing issues to avoid duplicates
  2. Check if it's already fixed in the latest version

Issue Template

**Type:** Bug/Question Error/Content Suggestion/Other

**Description:**
[Clear description of the issue]

**Location:**
[File path or question number]

**Suggested Fix:**
[If you have a solution in mind]

💡 Content Ideas

Not sure what to contribute? Here are some ideas:

High-Priority Areas

  • Flutter 3.27+ new features
  • Material Design 3 (Material You)
  • Advanced Riverpod patterns
  • Performance profiling tools
  • Accessibility best practices
  • Flutter Web specifics
  • Desktop app development
  • Internationalization (i18n)

Company-Specific Questions

Share questions from:

  • FAANG companies
  • Startups
  • Agencies
  • Enterprise companies

(Remove company names if under NDA)

🏆 Recognition

All contributors will be:

  • Listed in the Contributors section
  • Mentioned in release notes for major contributions
  • Given credit in the content they create

📞 Need Help?

  • Questions about contributing? Open a discussion
  • Found a bug? Open an issue
  • Want to chat? Join our community discussions

📄 License

By contributing, you agree that your contributions will be licensed under the MIT License.


Thank you for making Flutter Interview Mastery better for everyone! 🙏

Questions? Reach out to @sayedmoataz