parent
ff34c52aa7
commit
f087f6d7ec
@ -1,11 +1,130 @@
|
||||
# Restyle your Extension
|
||||
# Assignment: Restyle Your Browser Extension
|
||||
|
||||
## Overview
|
||||
|
||||
Now that you've built the HTML structure for your carbon footprint browser extension, it's time to make it visually appealing and user-friendly. Great design enhances the user experience and makes your extension more professional and engaging.
|
||||
|
||||
Your extension comes with basic CSS styling, but this assignment challenges you to create a unique visual identity that reflects your personal style while maintaining excellent usability.
|
||||
|
||||
## Instructions
|
||||
|
||||
The codebase for this extension comes complete with styles, but you don't have to use them; make your extension your own by restyling it by editing its css file.
|
||||
### Part 1: Analyze the Current Design
|
||||
|
||||
Before making changes, examine the existing CSS structure:
|
||||
|
||||
1. **Locate** the CSS files in your extension project
|
||||
2. **Review** the current styling approach and color scheme
|
||||
3. **Identify** areas for improvement in layout, typography, and visual hierarchy
|
||||
4. **Consider** how the design supports user goals (easy form completion and clear data display)
|
||||
|
||||
### Part 2: Design Your Custom Styling
|
||||
|
||||
Create a cohesive visual design that includes:
|
||||
|
||||
**Color Scheme:**
|
||||
- Choose a primary color palette that reflects environmental themes
|
||||
- Ensure sufficient contrast for accessibility (use tools like WebAIM's contrast checker)
|
||||
- Consider how colors will look across different browser themes
|
||||
|
||||
**Typography:**
|
||||
- Select readable fonts that work well at small extension sizes
|
||||
- Establish a clear hierarchy with appropriate font sizes and weights
|
||||
- Ensure text remains legible in both light and dark browser themes
|
||||
|
||||
**Layout and Spacing:**
|
||||
- Improve the visual organization of form elements and data display
|
||||
- Add appropriate padding and margins for better readability
|
||||
- Consider responsive design principles for different screen sizes
|
||||
|
||||
### Part 3: Implement Your Design
|
||||
|
||||
Modify the CSS files to implement your design:
|
||||
|
||||
```css
|
||||
/* Example starting points for customization */
|
||||
|
||||
.form-data {
|
||||
/* Style the configuration form */
|
||||
background: /* your choice */;
|
||||
padding: /* your spacing */;
|
||||
border-radius: /* your preference */;
|
||||
}
|
||||
|
||||
.result-container {
|
||||
/* Style the data display area */
|
||||
background: /* complementary color */;
|
||||
border: /* your border style */;
|
||||
margin: /* your spacing */;
|
||||
}
|
||||
|
||||
/* Add your custom styles here */
|
||||
```
|
||||
|
||||
**Key areas to style:**
|
||||
- **Form elements**: Input fields, labels, and submit button
|
||||
- **Results display**: Data container, text styling, and loading states
|
||||
- **Interactive elements**: Hover effects, button states, and transitions
|
||||
- **Overall layout**: Container spacing, background colors, and visual hierarchy
|
||||
|
||||
### Part 4: Test and Refine
|
||||
|
||||
1. **Build** your extension with `npm run build`
|
||||
2. **Load** the updated extension into your browser
|
||||
3. **Test** all visual states (form entry, loading, results display, errors)
|
||||
4. **Verify** accessibility with browser developer tools
|
||||
5. **Refine** your styles based on actual usage
|
||||
|
||||
## Creative Challenges
|
||||
|
||||
### Basic Level
|
||||
- Update colors and fonts to create a cohesive theme
|
||||
- Improve spacing and alignment throughout the interface
|
||||
- Add subtle hover effects to interactive elements
|
||||
|
||||
### Intermediate Level
|
||||
- Design custom icons or graphics for your extension
|
||||
- Implement smooth transitions between different states
|
||||
- Create a unique loading animation for API calls
|
||||
|
||||
### Advanced Level
|
||||
- Design multiple theme options (light/dark/high-contrast)
|
||||
- Implement responsive design for different browser window sizes
|
||||
- Add micro-interactions that enhance the user experience
|
||||
|
||||
## Submission Guidelines
|
||||
|
||||
Your completed assignment should include:
|
||||
|
||||
- **Modified CSS files** with your custom styling
|
||||
- **Screenshots** showing your extension in different states (form, loading, results)
|
||||
- **Brief description** (2-3 sentences) explaining your design choices and how they improve the user experience
|
||||
|
||||
## Assessment Rubric
|
||||
|
||||
| Criteria | Exemplary (4) | Proficient (3) | Developing (2) | Beginning (1) |
|
||||
|----------|---------------|----------------|----------------|----------------|
|
||||
| **Visual Design** | Creative, cohesive design that enhances usability and reflects strong design principles | Good design choices with consistent styling and clear visual hierarchy | Basic design improvements with some consistency issues | Minimal styling changes or inconsistent design |
|
||||
| **Functionality** | All styles work perfectly across different states and browser environments | Styles work well with minor issues in edge cases | Most styles functional with some display problems | Significant styling issues that impact usability |
|
||||
| **Code Quality** | Clean, well-organized CSS with meaningful class names and efficient selectors | Good CSS structure with appropriate use of selectors and properties | Acceptable CSS with some organization issues | Poor CSS structure or overly complex styling |
|
||||
| **Accessibility** | Excellent color contrast, readable fonts, and consideration for users with disabilities | Good accessibility practices with minor areas for improvement | Basic accessibility considerations with some issues | Limited attention to accessibility requirements |
|
||||
|
||||
## Tips for Success
|
||||
|
||||
> 💡 **Design Tip**: Start with subtle changes and build up to more dramatic styling. Small improvements in typography and spacing often have big impacts on perceived quality.
|
||||
|
||||
**Best practices to follow:**
|
||||
- **Test** your extension in both light and dark browser themes
|
||||
- **Use** relative units (em, rem) for better scalability
|
||||
- **Maintain** consistent spacing using CSS custom properties
|
||||
- **Consider** how your design will look to users with different visual needs
|
||||
- **Validate** your CSS to ensure it follows proper syntax
|
||||
|
||||
> ⚠️ **Common Mistake**: Don't sacrifice usability for visual appeal. Your extension should be both beautiful and functional.
|
||||
|
||||
## Rubric
|
||||
**Remember to:**
|
||||
- **Keep** important information easily readable
|
||||
- **Ensure** buttons and interactive elements are easy to click
|
||||
- **Maintain** clear visual feedback for user actions
|
||||
- **Test** your design with real data, not just placeholder text
|
||||
|
||||
| Criteria | Exemplary | Adequate | Needs Improvement |
|
||||
| -------- | -------------------------------------------- | --------------------- | ----------------- |
|
||||
| | Code is submitted with functional new styles | Styling is incomplete | Styles are buggy |
|
||||
Good luck creating a browser extension that's both functional and visually stunning!
|
||||
@ -1,11 +1,93 @@
|
||||
# Adopt an API
|
||||
|
||||
## Overview
|
||||
|
||||
APIs open up endless possibilities for creative web development! In this assignment, you'll choose an external API and build a browser extension that solves a real problem or provides valuable functionality to users.
|
||||
|
||||
## Instructions
|
||||
|
||||
APIs can be very fun to play with. Here is a [list of many free ones](https://github.com/public-apis/public-apis). Pick an API, and build a browser extension that solves a problem. It can be as small a problem of not having enough pet pictures (so, try the [dog CEO API](https://dog.ceo/dog-api/)) or something bigger - have fun!
|
||||
### Step 1: Choose Your API
|
||||
Select an API from this curated [list of free public APIs](https://github.com/public-apis/public-apis). Consider these categories:
|
||||
|
||||
**Popular options for beginners:**
|
||||
- **Entertainment**: [Dog CEO API](https://dog.ceo/dog-api/) for random dog pictures
|
||||
- **Weather**: [OpenWeatherMap](https://openweathermap.org/api) for current weather data
|
||||
- **Quotes**: [Quotable API](https://quotable.io/) for inspirational quotes
|
||||
- **News**: [NewsAPI](https://newsapi.org/) for current headlines
|
||||
- **Fun Facts**: [Numbers API](http://numbersapi.com/) for interesting number facts
|
||||
|
||||
### Step 2: Plan Your Extension
|
||||
Before coding, answer these planning questions:
|
||||
- What problem does your extension solve?
|
||||
- Who is your target user?
|
||||
- What data will you store in local storage?
|
||||
- How will you handle API failures or rate limits?
|
||||
|
||||
### Step 3: Build Your Extension
|
||||
Your extension should include:
|
||||
|
||||
**Required Features:**
|
||||
- Form inputs for any required API parameters
|
||||
- API integration with proper error handling
|
||||
- Local storage for user preferences or API keys
|
||||
- Clean, responsive user interface
|
||||
- Loading states and user feedback
|
||||
|
||||
**Code Requirements:**
|
||||
- Use modern JavaScript (ES6+) features
|
||||
- Implement async/await for API calls
|
||||
- Include proper error handling with try/catch blocks
|
||||
- Add meaningful comments explaining your code
|
||||
- Follow consistent code formatting
|
||||
|
||||
### Step 4: Test and Polish
|
||||
- Test your extension with various inputs
|
||||
- Handle edge cases (no internet, invalid API responses)
|
||||
- Ensure your extension works after browser restart
|
||||
- Add user-friendly error messages
|
||||
|
||||
## Bonus Challenges
|
||||
|
||||
Take your extension to the next level:
|
||||
- Add multiple API endpoints for richer functionality
|
||||
- Implement data caching to reduce API calls
|
||||
- Create keyboard shortcuts for common actions
|
||||
- Add data export/import features
|
||||
- Implement user customization options
|
||||
|
||||
## Submission Requirements
|
||||
|
||||
1. **Working browser extension** that successfully integrates with your chosen API
|
||||
2. **README file** explaining:
|
||||
- Which API you chose and why
|
||||
- How to install and use your extension
|
||||
- Any API keys or setup required
|
||||
- Screenshots of your extension in action
|
||||
3. **Clean, commented code** following modern JavaScript practices
|
||||
|
||||
## Rubric
|
||||
|
||||
| Criteria | Exemplary | Adequate | Needs Improvement |
|
||||
| -------- | -------------------------------------------------------------------------- | ---------------------------------------- | ----------------------- |
|
||||
| | A complete browser extension is submitted using an API from the above list | A partial browser extension is submitted | The submission has bugs |
|
||||
| Criteria | Exemplary (90-100%) | Proficient (80-89%) | Developing (70-79%) | Beginning (60-69%) |
|
||||
|----------|---------------------|---------------------|---------------------|--------------------|
|
||||
| **API Integration** | Flawless API integration with comprehensive error handling and edge case management | Successful API integration with basic error handling | API works but has limited error handling | API integration has significant issues |
|
||||
| **Code Quality** | Clean, well-commented modern JavaScript following best practices | Good code structure with adequate comments | Code works but needs better organization | Poor code quality with minimal comments |
|
||||
| **User Experience** | Polished interface with excellent loading states and user feedback | Good interface with basic user feedback | Basic interface that functions adequately | Poor user experience with confusing interface |
|
||||
| **Local Storage** | Sophisticated use of local storage with data validation and management | Proper implementation of local storage for key features | Basic local storage implementation | Minimal or incorrect use of local storage |
|
||||
| **Documentation** | Comprehensive README with setup instructions and screenshots | Good documentation covering most requirements | Basic documentation missing some details | Poor or missing documentation |
|
||||
|
||||
## Getting Started Tips
|
||||
|
||||
1. **Start simple**: Choose an API that doesn't require complex authentication
|
||||
2. **Read the docs**: Thoroughly understand your chosen API's endpoints and responses
|
||||
3. **Plan your UI**: Sketch your extension's interface before coding
|
||||
4. **Test frequently**: Build incrementally and test each feature as you add it
|
||||
5. **Handle errors**: Always assume API calls might fail and plan accordingly
|
||||
|
||||
## Resources
|
||||
|
||||
- [Browser Extension Documentation](https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions)
|
||||
- [Fetch API Guide](https://developer.mozilla.org/docs/Web/API/Fetch_API/Using_Fetch)
|
||||
- [Local Storage Tutorial](https://developer.mozilla.org/docs/Web/API/Window/localStorage)
|
||||
- [JSON Parsing and Handling](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/JSON)
|
||||
|
||||
Have fun building something useful and creative! 🚀
|
||||
@ -1,9 +1,93 @@
|
||||
# Analyze a site for performance
|
||||
|
||||
Provide a detailed report of a web site, showing areas where performance is problematic. Analyze why the site is slow and what you could do to speed it up. Don't rely only on the browser tools, but do some research on other tools that can help your report.
|
||||
## Assignment Overview
|
||||
|
||||
Performance analysis is a critical skill for modern web developers. In this assignment, you'll conduct a comprehensive performance audit of a real website, using both browser-based tools and third-party services to identify bottlenecks and propose optimization strategies.
|
||||
|
||||
Your task is to provide a detailed performance report that demonstrates your understanding of web performance principles and your ability to use professional analysis tools effectively.
|
||||
|
||||
## Assignment Instructions
|
||||
|
||||
**Choose a website** for analysis - select one of the following options:
|
||||
- A popular website you use frequently (news site, social media, e-commerce)
|
||||
- An open-source project website (GitHub pages, documentation sites)
|
||||
- A local business website or portfolio site
|
||||
- Your own project or previous coursework
|
||||
|
||||
**Conduct multi-tool analysis** using at least three different approaches:
|
||||
- **Browser DevTools** - Use Chrome/Edge Performance tab for detailed profiling
|
||||
- **Online auditing tools** - Try Lighthouse, GTmetrix, or WebPageTest
|
||||
- **Network analysis** - Examine resource loading, file sizes, and request patterns
|
||||
|
||||
**Document your findings** in a comprehensive report that includes:
|
||||
|
||||
### Performance Metrics Analysis
|
||||
- **Load time measurements** from multiple tools and perspectives
|
||||
- **Core Web Vitals** scores (LCP, FID, CLS) and their implications
|
||||
- **Resource breakdown** showing which assets contribute most to load time
|
||||
- **Network waterfall analysis** identifying blocking resources
|
||||
|
||||
### Problem Identification
|
||||
- **Specific performance bottlenecks** with supporting data
|
||||
- **Root cause analysis** explaining why each issue occurs
|
||||
- **User impact assessment** describing how problems affect real users
|
||||
- **Priority ranking** of issues based on severity and fixing difficulty
|
||||
|
||||
### Optimization Recommendations
|
||||
- **Specific, actionable improvements** with expected impact
|
||||
- **Implementation strategies** for each recommended change
|
||||
- **Modern best practices** that could be applied (lazy loading, compression, etc.)
|
||||
- **Tools and techniques** for ongoing performance monitoring
|
||||
|
||||
## Research Requirements
|
||||
|
||||
**Don't rely only on browser tools** - expand your analysis using:
|
||||
|
||||
**Third-party auditing services:**
|
||||
- [Google Lighthouse](https://developers.google.com/web/tools/lighthouse) - Comprehensive audits
|
||||
- [GTmetrix](https://gtmetrix.com/) - Performance and optimization insights
|
||||
- [WebPageTest](https://www.webpagetest.org/) - Real-world testing conditions
|
||||
- [Pingdom](https://tools.pingdom.com/) - Global performance monitoring
|
||||
|
||||
**Specialized analysis tools:**
|
||||
- [Bundle Analyzer](https://bundlephobia.com/) - JavaScript bundle size analysis
|
||||
- [Image optimization tools](https://squoosh.app/) - Asset optimization opportunities
|
||||
- [Security headers analysis](https://securityheaders.com/) - Security performance impact
|
||||
|
||||
## Deliverables Format
|
||||
|
||||
Create a professional report (2-3 pages) that includes:
|
||||
|
||||
1. **Executive Summary** - Key findings and recommendations overview
|
||||
2. **Methodology** - Tools used and testing approach
|
||||
3. **Current Performance Assessment** - Baseline metrics and measurements
|
||||
4. **Issues Identified** - Detailed problem analysis with supporting data
|
||||
5. **Recommendations** - Prioritized improvement strategies
|
||||
6. **Implementation Roadmap** - Step-by-step optimization plan
|
||||
|
||||
**Include visual evidence:**
|
||||
- Screenshots of performance tools and metrics
|
||||
- Charts or graphs showing performance data
|
||||
- Before/after comparisons where possible
|
||||
- Network waterfall charts and resource breakdowns
|
||||
|
||||
## Rubric
|
||||
|
||||
| Criteria | Exemplary | Adequate | Needs Improvement |
|
||||
| -------- | ---------------------------------------------------------------------------------------------------------- | --------------------------- | ----------------------------- |
|
||||
| | A report is presented with details drawn not only from browser tools but from 3rd party tools if available | A basic report is presented | A minimal report is presented |
|
||||
| Criteria | Exemplary (90-100%) | Adequate (70-89%) | Needs Improvement (50-69%) |
|
||||
| -------- | ------------------- | ----------------- | -------------------------- |
|
||||
| **Analysis Depth** | Comprehensive analysis using 4+ tools with detailed metrics, root cause analysis, and user impact assessment | Good analysis using 3 tools with clear metrics and basic problem identification | Basic analysis using 2 tools with limited depth and minimal problem identification |
|
||||
| **Tool Diversity** | Uses browser tools + 3+ third-party services with comparative analysis and insights from each | Uses browser tools + 2 third-party services with some comparative analysis | Uses browser tools + 1 third-party service with limited comparison |
|
||||
| **Problem Identification** | Identifies 5+ specific performance issues with detailed root cause analysis and quantified impact | Identifies 3-4 performance issues with good analysis and some impact measurement | Identifies 1-2 performance issues with basic analysis |
|
||||
| **Recommendations** | Provides specific, actionable recommendations with implementation details, expected impact, and modern best practices | Provides good recommendations with some implementation guidance and expected outcomes | Provides basic recommendations with limited implementation details |
|
||||
| **Professional Presentation** | Well-organized report with clear structure, visual evidence, executive summary, and professional formatting | Good organization with some visual evidence and clear structure | Basic organization with minimal visual evidence |
|
||||
|
||||
## Learning Outcomes
|
||||
|
||||
By completing this assignment, you will demonstrate your ability to:
|
||||
- **Apply** professional performance analysis tools and methodologies
|
||||
- **Identify** performance bottlenecks using data-driven analysis
|
||||
- **Analyze** the relationship between code quality and user experience
|
||||
- **Recommend** specific, actionable optimization strategies
|
||||
- **Communicate** technical findings in a professional format
|
||||
|
||||
This assignment reinforces the performance concepts learned in the lesson while building practical skills you'll use throughout your web development career.
|
||||
|
||||
Loading…
Reference in new issue