Skip to content

Contributing to JavaScript Hard Parts Resources

Welcome Contributors!

Thank you for your interest in contributing to the JavaScript Hard Parts Resources collection! This project aims to provide the most comprehensive and high-quality deep technical JavaScript learning resources available.

🚀 Quick Contribution

Add a New Resource

The easiest way to suggest a new resource is through our GitHub issue system:

🔗 Add Resource

This will open a pre-filled GitHub issue where you can provide all the necessary details about your suggested resource.

📋 How to Contribute

1. Resource Suggestion Process

  1. Click the "Add Resource" button above
  2. Fill out the GitHub issue template with:
  3. Resource title and URL
  4. Author information
  5. Section it belongs to
  6. Resource type (Visual, Technical, etc.)
  7. Description and why it's essential
  8. Submit the issue for community review
  9. Engage in discussion if maintainers have questions
  10. Resource gets added to the collection after approval

2. Alternative Contribution Methods

  • Report broken links or outdated content
  • Suggest improvements to existing descriptions
  • Propose new sections or reorganization
  • Contribute to documentation and guides

✅ Resource Quality Criteria

For a resource to be included in our collection, it must meet these standards:

Must Have Requirements

Deep and Technical

Explains JavaScript mechanisms and internals, not just syntax

Unique Value

Offers insights, perspectives, or explanations not found in other resources

Expert Authors

Written by recognized JavaScript experts, educators, or experienced developers

Well-Explained

Clear, comprehensive, accurate, and well-structured content

Relevant

Fits within the Frontend Masters "JavaScript: The Hard Parts v2" course structure

Preferred Resource Types

Type Description Examples
Visual Understanding Animated explanations, diagrams Lydia Hallie's visualizations
Engine-Level Technical V8, SpiderMonkey, bytecode Engine implementation details
Specification Level ECMA-262 references Official documentation
Practical Application Real-world patterns Debugging techniques
Educational Excellence Master educators Will Sentance, Kyle Simpson

📚 Resource Categories

JavaScript Principles

Thread of Execution, Functions, Call Stack, Global Context

Functions & Callbacks

Higher-Order Functions, Generalized Functions, Arrow Functions

Closure

Lexical Environment, Function Memory, Practical Applications

Asynchronous JavaScript

Event Loop, Web APIs, Callback Queue, Single-threaded Execution

Promises

Microtask Queue, Promise Execution, then/catch mechanisms

Classes & Prototypes

OOP, Prototype Chain, this keyword, new operator, class syntax

Advanced ES6+ Concepts

Iterators, Generators, async/await implementation, Advanced Patterns

🔄 Review Process

Step 1: Submission

Resource suggestion submitted via GitHub issue with automatic validation

Step 2: Community Review

Community members can comment and discuss the resource quality and relevance

Step 3: Maintainer Review

Project maintainers evaluate against quality criteria and check for duplicates

Step 4: Integration

Approved resources are manually added to the documentation and website

Step 5: Quality Assurance

Periodic review of existing resources for broken links and continued relevance

🛠️ Technical Contributions

Documentation Improvements

If you want to contribute to the documentation itself:

  1. Fork the repository
  2. Make your changes to the Markdown files in the docs/ directory
  3. Test locally using mkdocs serve
  4. Submit a pull request with a clear description

Local Development Setup

# Clone the repository
git clone https://github.com/AlaaEmam29/JavaScript-Hard-Parts.git
cd JavaScript-Hard-Parts

# Install MkDocs Material
pip install mkdocs-material

# Serve locally
mkdocs serve

# Build for production
mkdocs build

📝 Writing Guidelines

Resource Descriptions

When describing a resource, include:

  • Clear focus: What specific concepts it covers
  • Why essential: What unique value it provides
  • Target audience: Beginner, intermediate, advanced, expert
  • Learning approach: Visual, technical, practical, theoretical

Example Resource Entry

#### Resource Title
**Author:** Author Name  
**Type:** Resource Type  
**URL:** [Link text](https://example.com)

**Focus:** Brief description of what it covers

**Why Essential:** Explanation of unique value and importance

🏆 Recognition

Contributors who suggest high-quality resources will be:

  • Acknowledged in the resource description
  • Listed in the project's contributors section
  • Mentioned in project updates and releases
  • Credited in the acknowledgments page

📞 Getting Help

Questions and Support

Community Guidelines

  • Be respectful and constructive in all interactions
  • Provide context when asking questions or reporting issues
  • Search existing issues before creating new ones
  • Follow the templates when creating issues

📄 License

By contributing to this project, you agree that your contributions will be licensed under the same MIT License that covers the project.


Ready to Contribute?

Start by adding a resource or check out our quality standards for more detailed guidelines.