Updated terminology in README and app.js to use 'app' instead of 'application' for consistency and brevity across documentation and code comments.
201 lines
7.5 KiB
Markdown
201 lines
7.5 KiB
Markdown
# META.js Customizer
|
|
|
|
## 🎯 Overview
|
|
|
|
META.js Customizer is a modern, intuitive web app that allows users to easily create custom META.js of [xixu-me/META](https://github.com/xixu-me/META). It provides a beautiful visual interface to select and configure service rulesets from the [xixu-me/RFM](https://github.com/xixu-me/RFM) repository.
|
|
|
|
### ✨ Key Features
|
|
|
|
- 🔍 **Smart Service Search**: Instantly search and filter through all available services
|
|
- 🎨 **Modern Glass UI**: Beautiful, responsive design with glassmorphism effects
|
|
- 🌙 **Intelligent Theming**: Auto-detects system theme with manual override options
|
|
- 📱 **Mobile Responsive**: Seamlessly adapts to all device sizes
|
|
- 🚀 **Real-time Generation**: Instantly generates META.js as you select services
|
|
- 📋 **One-click Copy**: Copy generated configuration to clipboard with visual feedback
|
|
- 💾 **Download Support**: Download your configuration as META.js file
|
|
- ♿ **Accessibility First**: WCAG compliant with full keyboard navigation support
|
|
- 🎯 **Modern Architecture**: Clean, modular codebase with BEM methodology
|
|
|
|
## 🚀 Quick Start
|
|
|
|
### Online Usage (Recommended)
|
|
|
|
Visit **[metajs.xi-xu.me](https://metajs.xi-xu.me)** to use the customizer directly in your browser.
|
|
|
|
### Local Development
|
|
|
|
1. **Clone the repository**
|
|
|
|
```bash
|
|
git clone https://github.com/xixu-me/META.js-Customizer.git
|
|
cd META.js-Customizer
|
|
```
|
|
|
|
2. **Serve the files**
|
|
|
|
```bash
|
|
# Using Python 3
|
|
python -m http.server 8000
|
|
|
|
# Using Python 2
|
|
python -m SimpleHTTPServer 8000
|
|
|
|
# Using Node.js http-server
|
|
npx http-server
|
|
|
|
# Using PHP
|
|
php -S localhost:8000
|
|
|
|
# Or simply open index.html in your browser
|
|
```
|
|
|
|
3. **Open in browser**
|
|
Navigate to `http://localhost:8000` (or your chosen port)
|
|
|
|
## 📖 Usage Guide
|
|
|
|
### Basic Workflow
|
|
|
|
1. **🔍 Search for Services**: Use the search bar to find services you want to include
|
|
2. **✅ Select Services**: Click on search results to add them to your configuration
|
|
3. **📝 Review Selection**: Check your selected services in the main panel
|
|
4. **⚙️ Generate Configuration**: Your META.js is automatically generated in real-time
|
|
5. **📋 Copy or Download**: Use the action buttons to copy or download your configuration
|
|
|
|
### Service Configuration Logic
|
|
|
|
Service icons are sourced from [xixu-me/favicons](https://github.com/xixu-me/favicons). Auto-generated configurations may require manual adjustments based on availability:
|
|
|
|
#### Configuration Rules
|
|
|
|
- **🚫 Icon Unavailable**: Uses specific `domain` for services requiring custom domains
|
|
- *Example*: `rednote` → `{ name: "rednote", domain: "xiaohongshu.com" }`
|
|
|
|
- **✅ Icon Available**: Uses only `tld` when service name matches Second-Level Domain
|
|
- *Example*: `github` → `{ name: "GitHub", tld: "com" }`
|
|
|
|
- **🔧 Name Mismatch**: Adds `sld` when name doesn't match SLD
|
|
- *Example*: `xai` → `{ name: "xAI", sld: "x", tld: "ai" }`
|
|
|
|
### Theme Options
|
|
|
|
Click the theme toggle button to cycle through:
|
|
|
|
- 🌙 **Auto**: Follows system preference (default)
|
|
- ☀️ **Light**: Force light mode
|
|
- 🌙 **Dark**: Force dark mode
|
|
|
|
The app automatically detects system theme changes and applies them when in auto mode.
|
|
|
|
## 🏗️ Architecture
|
|
|
|
The META.js Customizer follows a modern, modular architecture designed for maintainability, scalability, and performance:
|
|
|
|
### 🧩 Component-Based Design
|
|
|
|
#### **🎨 ThemeManager**
|
|
|
|
- Handles system theme detection and manual switching
|
|
- Supports auto, light, and dark modes with smooth transitions
|
|
- Persists user preferences in localStorage
|
|
- Responsive to system theme changes
|
|
|
|
#### **🔍 ServicesManager**
|
|
|
|
- Fetches and caches services from RFM repository via GitHub API
|
|
- Implements debounced search for optimal performance
|
|
- Manages service selection state with event-driven updates
|
|
- Provides real-time filtering and search capabilities
|
|
|
|
#### **⚙️ ServiceConfigGenerator**
|
|
|
|
- Intelligent favicon detection from xixu-me/favicons repository
|
|
- Smart configuration generation with domain parsing
|
|
- Handles special cases and complex domain patterns
|
|
- Caches favicon availability for performance optimization
|
|
|
|
#### **📤 OutputManager**
|
|
|
|
- Real-time META.js code generation and preview
|
|
- Clipboard integration with comprehensive error handling
|
|
- File download functionality with progress feedback
|
|
- Template management and dynamic content substitution
|
|
|
|
#### **🎯 MetaJSCustomizer (Main Controller)**
|
|
|
|
- App lifecycle management and component orchestration
|
|
- Global error handling with user-friendly feedback
|
|
- Performance monitoring and optimization
|
|
- Loading state management and initialization coordination
|
|
|
|
### 🚀 Modern JavaScript Features
|
|
|
|
- **ES6+ Modules**: Clean import/export system for better organization
|
|
- **Async/Await**: Modern asynchronous programming patterns
|
|
- **Error Boundaries**: Comprehensive error handling with user feedback
|
|
- **Event-Driven Architecture**: Loose coupling between components
|
|
- **Performance Optimization**: Debouncing, caching, and efficient DOM operations
|
|
|
|
### 🎨 Enhanced UI/UX
|
|
|
|
- **Glassmorphism Design**: Modern glass effects with backdrop blur
|
|
- **Smooth Animations**: CSS-based transitions and micro-interactions
|
|
- **Responsive Layout**: Mobile-first design that adapts to all screen sizes
|
|
- **Accessibility First**: ARIA labels, semantic HTML, and keyboard navigation
|
|
- **Loading States**: Clear feedback during async operations
|
|
|
|
### 💻 Technology Stack
|
|
|
|
- **Frontend**: Modern HTML5, CSS3, JavaScript (ES2020+)
|
|
- **Architecture**: Component-based modular design with ES6 modules
|
|
- **Styling**: CSS Custom Properties, CSS Grid/Flexbox, Glassmorphism effects
|
|
- **Methodology**: BEM (Block Element Modifier) for CSS organization
|
|
- **Icons**: Font Awesome 6.5.1 for consistent iconography
|
|
- **API Integration**: GitHub REST API for dynamic service fetching
|
|
- **Performance**: Debounced search, caching strategies, optimized DOM operations
|
|
- **Accessibility**: WCAG 2.1 AA compliant with comprehensive ARIA support
|
|
- **Build**: Zero-build architecture - runs directly in modern browsers
|
|
|
|
## 🎨 Design Features
|
|
|
|
### Glassmorphism UI
|
|
|
|
- **Translucent cards** with backdrop blur effects
|
|
- **Smooth animations** and micro-interactions
|
|
- **Modern button interactions** with liquid shine effects
|
|
- **Depth and hierarchy** through layered glass elements
|
|
|
|
### Responsive Design
|
|
|
|
- **Mobile-first approach** with progressive enhancement
|
|
- **Adaptive layouts** for all screen sizes (320px+)
|
|
- **Touch-friendly interface** elements with proper hit targets
|
|
- **Optimized typography** scaling across devices
|
|
|
|
### Accessibility Features
|
|
|
|
- **Semantic HTML structure** for screen readers
|
|
- **ARIA labels and roles** for enhanced accessibility
|
|
- **Keyboard navigation support** for all interactive elements
|
|
- **High contrast mode support** for visual accessibility
|
|
- **Reduced motion support** for users with vestibular disorders
|
|
- **Focus management** with visible focus indicators
|
|
|
|
### Performance Optimizations
|
|
|
|
- **Minimal dependencies** - vanilla JavaScript only
|
|
- **CSS custom properties** for efficient theming
|
|
- **Debounced search** to reduce API calls
|
|
- **Lazy loading** of non-critical resources
|
|
- **Optimized animations** with `transform` and `opacity`
|
|
|
|
## 📄 License
|
|
|
|
This project is licensed under the **GNU General Public License v3.0** - see the [LICENSE](LICENSE) file for details.
|
|
|
|
## 🤝 Related Projects
|
|
|
|
- **[xixu-me/META](https://github.com/xixu-me/META)** - The main META.js repository
|
|
- **[xixu-me/RFM](https://github.com/xixu-me/RFM)** - Rulesets
|
|
- **[xixu-me/favicons](https://github.com/xixu-me/favicons)** - Service icons repository
|