8.9 KiB
Extension Challenges
You've built the base project. Now make it yours by extending it with new features.
These challenges are ordered by difficulty. Start with the easier ones to build confidence, then tackle the harder ones when you want to dive deeper.
Easy Challenges
Challenge 1: [Extension Idea]
What to build: [Specific feature to add]
Why it's useful: [Real world scenario where this matters]
What you'll learn:
- [Skill/concept 1]
- [Skill/concept 2]
Hints:
- Look at
[filename]- you'll need to modify [component] - The key is [concept/technique]
- Don't forget to handle [edge case]
Test it works: [How to verify the feature works correctly]
Challenge 2: [Another Extension]
[Same format for each challenge]
Challenge 3: [Another Extension]
[Continue pattern]
Intermediate Challenges
Challenge 4: [More Complex Feature]
What to build: [Feature description]
Real world application: [Where you'd actually use this in production]
What you'll learn:
- [New concept 1]
- [New concept 2]
- [Integration with existing code]
Implementation approach:
-
Add [component] to handle [responsibility]
- Files to create:
[filename] - Files to modify:
[filename]
- Files to create:
-
Integrate with [existing system]
- Hook into [entry point]
- Pass data through [flow]
-
Test edge cases:
- What if [scenario 1]?
- How do you handle [scenario 2]?
Hints:
- You'll need [technology/library]
- The tricky part is [specific challenge]
- Consider [design pattern] for [aspect]
Extra credit: [Additional variation to make it more sophisticated]
Challenge 5: [Another Intermediate Feature]
[Continue pattern]
Advanced Challenges
Challenge 6: [Complex Integration]
What to build: [Significant new capability]
Why this is hard: [What makes this challenging - multiple components, complex state, performance, etc]
What you'll learn:
- [Advanced concept 1]
- [Advanced concept 2]
- [System design skill]
Architecture changes needed:
[Diagram showing how the new feature fits in]
Implementation steps:
-
Research phase
- Read about [technology/concept]
- Understand [standard/protocol/algorithm]
- Look at [reference implementation]
-
Design phase
- Decide between [approach A] vs [approach B]
- Consider impact on [existing component]
- Plan database/storage changes
-
Implementation phase
- Start with [minimal version]
- Add [capability 1]
- Add [capability 2]
-
Testing phase
- Unit test [component]
- Integration test [flow]
- Performance test under [load scenario]
Gotchas:
- [Common mistake 1]: [How to avoid]
- [Common mistake 2]: [How to avoid]
Resources:
- [RFC/spec/documentation] - [What to focus on]
- [Blog post/paper] - [Key insights]
Challenge 7: [Another Advanced Feature]
[Continue pattern]
Expert Challenges
Challenge 8: [Major Feature Requiring Significant Work]
What to build: [Ambitious extension that changes how the system works]
Estimated time: [Realistic estimate - days or weeks]
Prerequisites: You should have completed [earlier challenges] first because this builds on [concepts].
What you'll learn:
- [Expert level concept 1]
- [Expert level concept 2]
- [Real world engineering skill]
Planning this feature:
Before you code, think through:
- How does this affect existing functionality?
- What are the performance implications?
- How do you migrate existing data/users?
- What's your rollback plan if it breaks?
High level architecture:
[Detailed architecture diagram of the new feature]
Implementation phases:
Phase 1: Foundation (X-Y hours)
- [What to build first]
- [Why this order]
Phase 2: Core Feature (X-Y hours)
- [Main functionality]
- [Key algorithms/logic]
Phase 3: Integration (X-Y hours)
- [Connect to existing system]
- [Handle compatibility]
Phase 4: Polish (X-Y hours)
- [Error handling]
- [Performance optimization]
- [Documentation]
Testing strategy:
- [Test type 1]: [What to verify]
- [Test type 2]: [Scenarios to cover]
- [Test type 3]: [Edge cases]
Known challenges:
-
[Challenge 1]
- Problem: [What goes wrong]
- Hint: [Direction toward solution]
-
[Challenge 2]
- Problem: [Issue]
- Hint: [Guidance]
Success criteria: Your implementation should:
- [Requirement 1]
- [Requirement 2]
- [Requirement 3]
- Handle [edge case]
- Pass [performance benchmark]
Challenge 9: [Another Expert Challenge]
[Continue pattern]
Mix and Match
Combine features for bigger projects:
Project Idea 1: [Combined Feature Set]
- Combine Challenge X + Challenge Y
- Add [new integration]
- Result: [What you end up with]
Project Idea 2: [Another Combination]
- [Details]
Real World Integration Challenges
Integrate with [External System/API]
The goal: Make this project work with [real service].
What you'll need:
- [Service] account/API key
- Understanding of [protocol/API]
- Handle [authentication method]
Implementation plan:
- [Step 1]
- [Step 2]
- [Step 3]
Watch out for:
- [Rate limits]
- [Authentication refresh]
- [Error handling]
Deploy to [Platform]
The goal: Get this running in production on [cloud platform/service].
What you'll learn:
- [Infrastructure as code]
- [Deployment automation]
- [Production monitoring]
Steps:
- [Infrastructure setup]
- [Configuration management]
- [Deployment pipeline]
- [Monitoring setup]
Production checklist:
- [Security requirement]
- [Performance requirement]
- [Monitoring requirement]
- [Backup/recovery]
Performance Challenges
Challenge: Handle [Scale Metric]
The goal: Make this system handle [specific load] without falling over.
Current bottleneck: [Component] can only handle [current limit] because [reason].
Optimization approaches:
Approach 1: [Technique]
- How: [Implementation]
- Gain: [Performance improvement]
- Tradeoff: [What you give up]
Approach 2: [Another technique]
- How: [Details]
- Gain: [Improvement]
- Tradeoff: [Cost]
Benchmark it:
[Load testing command]
Target metrics:
Challenge: Reduce [Resource Usage]
The goal: Cut [memory/CPU/bandwidth] usage by [percentage].
Profile first:
[profiling command]
Common optimization areas:
- [Area 1]: [What's inefficient, how to fix]
Security Challenges
Challenge: Add [Security Feature]
What to implement: [Specific security mechanism]
Threat model: This protects against:
- [Attack 1]
- [Attack 2]
Implementation: [Where to add it, how it works]
Testing the security:
- Try to [bypass method 1]
- Attempt [attack vector 2]
- Verify [security property holds]
Challenge: Pass [Security Standard]
The goal: Make this project compliant with [OWASP/CIS/NIST standard].
Current gaps:
- [Gap 1]: [What's missing]
- [Gap 2]: [What needs fixing]
Remediation: [How to address each gap]
Contribution Ideas
Finished a challenge? Share it back:
- Fork the repo
- Implement your extension in a new branch
- Document it - add to learn folder
- Submit a PR with:
- Your implementation
- Tests
- Documentation
- Example usage
Good extensions might get merged into the main project.
Challenge Yourself Further
Build Something New
Use the concepts you learned here to build:
- [Related tool 1] - [What it would do]
- [Related tool 2] - [Purpose]
- [Variation] - [How it's different]
Study Real Implementations
Compare your implementation to production tools:
- [Tool 1] - [What they do differently]
- [Tool 2] - [Interesting design choices]
Read their code, understand their tradeoffs, steal their good ideas.
Write About It
Document your extension:
- Blog post explaining [what you built]
- Tutorial for others to follow
- Comparison with [alternative approach]
Teaching others is the best way to verify you understand it.
Getting Help
Stuck on a challenge?
-
Debug systematically
- What did you expect?
- What actually happened?
- What's the smallest test case that reproduces it?
-
Read the existing code
- [Similar feature] does something related
- [Component] might have the pattern you need
-
Search for similar problems
- [Forum/community]
- [Stack Overflow tag]
-
Ask for help
- Post in [discussion forum]
- Include: what you tried, what happened, what you expected
- Don't just paste error messages - explain your understanding
Challenge Completion
Track your progress:
- Easy Challenge 1
- Easy Challenge 2
- Easy Challenge 3
- Intermediate Challenge 4
- Intermediate Challenge 5
- Advanced Challenge 6
- Advanced Challenge 7
- Expert Challenge 8
- Expert Challenge 9
Completed all of them? You've mastered this project. Time to build something new or contribute back to the community.