Skip to content

lance0821/extension-dashboard-project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

5 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Browser Extension Manager

A modern, responsive browser extension manager built with React, TypeScript, and Tailwind CSS v4. This project demonstrates clean architecture, component composition, and modern React patterns including the latest React 19 features.

React TypeScript Tailwind CSS Vite

๐Ÿš€ Features

  • Extension Management: Toggle extensions on/off, remove unwanted extensions
  • Smart Filtering: Filter extensions by status (All, Active, Inactive)
  • Dark Mode Support: Full dark mode implementation with system preference detection
  • Responsive Design: Mobile-first approach with adaptive layouts
  • Persistent State: Extensions state saved to localStorage
  • Modern UI: Clean, accessible interface following Figma design specifications

๐Ÿ›  Tech Stack

  • React 19 - Latest React features including new Context syntax
  • TypeScript - Type-safe code with interfaces and type definitions
  • Tailwind CSS v4 - Utility-first CSS with custom design tokens
  • Vite - Lightning-fast build tool and dev server
  • ESLint - Code quality and consistency

๐Ÿ“ Project Structure

src/
โ”œโ”€โ”€ components/           # React components
โ”‚   โ”œโ”€โ”€ ExtensionCard.tsx
โ”‚   โ”œโ”€โ”€ ExtensionActions.tsx
โ”‚   โ”œโ”€โ”€ ExtensionInfo.tsx
โ”‚   โ”œโ”€โ”€ FilterHeader.tsx
โ”‚   โ”œโ”€โ”€ Header.tsx
โ”‚   โ”œโ”€โ”€ Logo.tsx
โ”‚   โ””โ”€โ”€ TabButton.tsx
โ”œโ”€โ”€ context/             # React Context providers
โ”‚   โ”œโ”€โ”€ ExtensionsContext.tsx
โ”‚   โ”œโ”€โ”€ ExtensionsProvider.tsx
โ”‚   โ”œโ”€โ”€ ThemeContext.tsx
โ”‚   โ””โ”€โ”€ ThemeProvider.tsx
โ”œโ”€โ”€ hooks/               # Custom React hooks
โ”‚   โ”œโ”€โ”€ useExtensions.ts
โ”‚   โ”œโ”€โ”€ useExtensionsState.ts
โ”‚   โ”œโ”€โ”€ useFilteredExtensions.ts
โ”‚   โ””โ”€โ”€ useTheme.ts
โ”œโ”€โ”€ utils/               # Utility functions
โ”‚   โ””โ”€โ”€ logoLoader.ts
โ”œโ”€โ”€ assets/              # Images and icons
โ”œโ”€โ”€ data.json           # Extension data
โ”œโ”€โ”€ index.css           # Global styles and Tailwind layers
โ”œโ”€โ”€ App.tsx             # Main app component
โ””โ”€โ”€ main.tsx            # App entry point

๐ŸŽจ Design Highlights

Component Architecture

  • Single Responsibility Principle: Each component has one clear purpose
  • Composition over Inheritance: Small, reusable components composed together
  • Custom Hooks: Business logic extracted into reusable hooks

Tailwind CSS v4 Features

  • Custom Design Tokens: Spacing, colors, typography scales
  • Component Classes: Reusable component styles using @layer components
  • Dark Mode: Class-based dark mode with custom color schemes
  • Focus States: Accessibility-first with custom focus rings

React 19 Features

  • New Context Syntax: Using <Context value={...}> instead of <Context.Provider>
  • Improved Performance: Leveraging React 19's optimizations

๐Ÿšฆ Getting Started

Prerequisites

  • Node.js 18+
  • npm or yarn

Installation

  1. Clone the repository:
git clone https://github.com/lance0821/browser-extension-manager.git
cd browser-extension-manager
  1. Install dependencies:
npm install
  1. Start the development server:
npm run dev
  1. Open your browser and navigate to http://localhost:5173

Available Scripts

npm run dev      # Start development server
npm run build    # Build for production
npm run lint     # Run ESLint
npm run preview  # Preview production build

๐Ÿ— Architecture Decisions

State Management

  • Context API for global state (theme, extensions)
  • Local component state for UI-specific state
  • Custom hooks for encapsulating stateful logic

Styling Approach

  • Tailwind CSS v4 with custom configuration
  • Component classes for reusable styles
  • CSS-in-CSS approach (no CSS-in-JS)
  • Design tokens for consistent spacing and colors

Code Organization

  • Feature-based structure with clear separation of concerns
  • TypeScript interfaces for type safety
  • ESLint configuration for code quality
  • Fast Refresh optimized file structure

๐Ÿ”ง Key Components

ExtensionCard

Main card component that displays extension information and controls. Uses composition pattern with ExtensionInfo and ExtensionActions sub-components.

ExtensionsProvider

Manages global extension state and provides toggle/remove functionality through Context API.

ThemeProvider

Handles dark mode toggling and system preference detection with localStorage persistence.

Custom Hooks

  • useExtensionsState - Manages extensions data and persistence
  • useFilteredExtensions - Filters extensions based on active tab
  • useTheme - Provides theme context access
  • useExtensions - Provides extensions context access

๐Ÿ“ฑ Responsive Design

  • Mobile: Single column layout
  • Tablet: Two column grid
  • Desktop: Three column grid
  • Adaptive typography and spacing

๐ŸŽฏ Performance Optimizations

  • Dynamic imports for logo assets
  • Memoized filtering logic
  • Efficient re-renders with proper component composition
  • Fast Refresh for instant development feedback

๐Ÿ”ฎ Future Enhancements

  • Search functionality
  • Drag and drop reordering
  • Extension categories
  • Import/export settings
  • Keyboard navigation
  • Animation transitions

๐Ÿ“„ License

This project is open source and available under the MIT License.

๐Ÿค Contributing

Contributions, issues, and feature requests are welcome! Feel free to check the issues page.

๐Ÿ‘ค Author

Lance Lewandowski

๐Ÿ™ Acknowledgments

  • Design inspired by Frontend Mentor challenges
  • Built with modern React best practices
  • Tailwind CSS v4 for styling

About

A responsive extension manager with dark mode, smart filtering, and localStorage persistence. Built with React 19, TypeScript, and Tailwind CSS v4.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors