A fast, SEO-optimized static website for discovering and accessing GGUF models from Hugging Face. The system automatically fetches fresh model data every 24 hours and serves it from static JSON files for optimal performance and search engine visibility.
- Fast Model Discovery: Search and filter thousands of GGUF models instantly
- Automated Updates: Daily data refresh from Hugging Face at 23:59 UTC
- SEO Optimized: Individual model pages with structured data and meta tags
- GitHub Pages Ready: Optimized for static hosting with CDN delivery
- Mobile Responsive: Works perfectly on all devices
- Accessibility Compliant: WCAG 2.1 AA standards with keyboard navigation
- Performance Optimized: Virtual scrolling, lazy loading, and caching
- Node.js 18+ and npm
- Python 3.8+ (for data pipeline)
- Git
-
Clone the repository
git clone https://github.com/your-username/gguf-model-discovery.git cd gguf-model-discovery
-
Install dependencies
npm install pip install -r scripts/requirements.txt
-
Run initial data fetch
python scripts/update_models.py
-
Start development server
npm run dev
-
Open in browser
http://localhost:3000
βββββββββββββββββββ ββββββββββββββββββββ βββββββββββββββββββ
β GitHub Actions ββββββ Hugging Face ββββββ Static JSON β
β (Data Fetcher) β β API β β Files β
βββββββββββββββββββ ββββββββββββββββββββ βββββββββββββββββββ
β β β
βΌ βΌ βΌ
βββββββββββββββββββ ββββββββββββββββββββ βββββββββββββββββββ
β GitHub Pages ββββββ Frontend App ββββββ Search Engine β
β (Static Host) β β (Vanilla JS) β β Optimization β
βββββββββββββββββββ ββββββββββββββββββββ βββββββββββββββββββ
- Daily Updates: GitHub Actions runs at 23:59 UTC to fetch fresh data
- Static Generation: Processes and optimizes data into JSON files
- Fast Delivery: GitHub Pages CDN serves static files globally
- Real-time Search: Client-side search engine for instant results
βββ components/ # UI components
β βββ ModelCard.js # Individual model cards
β βββ ModelGrid.js # Grid layout with virtual scrolling
β βββ FilterPanel.js # Search and filter interface
β βββ Header.js # Site header and navigation
βββ services/ # Business logic
β βββ DataService.js # Data loading and caching
β βββ SearchEngine.js # Search and filtering
β βββ FilterService.js # Filter management
βββ utils/ # Utility functions
β βββ performance.js # Performance monitoring
β βββ errorHandler.js # Error handling
β βββ seoManager.js # SEO optimization
βββ scripts/ # Data pipeline
β βββ update_models.py # Main data fetcher
β βββ test_pipeline.py # Pipeline testing
βββ .github/workflows/ # GitHub Actions
β βββ update-gguf-models.yml
β βββ deploy-pages.yml
βββ data/ # Generated data files
βββ dist/ # Build output
βββ tests/ # Test suites
Create a .env
file for local development:
# Hugging Face API (optional - for higher rate limits)
HUGGING_FACE_TOKEN=your_token_here
# Analytics (optional)
GOOGLE_ANALYTICS_ID=GA_MEASUREMENT_ID
# Performance monitoring
ENABLE_PERFORMANCE_MONITORING=true
-
Enable GitHub Pages
- Go to Settings β Pages
- Source: GitHub Actions
- Custom domain (optional): your-domain.com
-
Set Repository Secrets
HUGGING_FACE_TOKEN=your_token_here
-
Configure Branch Protection
- Require status checks for main branch
- Enable automatic security updates
The site automatically deploys when you push to the main branch:
-
Commit your changes
git add . git commit -m "Update site content" git push origin main
-
Monitor deployment
- Check GitHub Actions tab for build status
- Site updates within 2-3 minutes
For immediate deployment:
# Build the site
npm run build
# Deploy to GitHub Pages
npm run deploy
The data pipeline runs daily at 23:59 UTC:
- Fetches latest GGUF models from Hugging Face
- Processes model metadata and file information
- Generates optimized JSON files and search indices
- Updates sitemap and SEO files
- Commits changes and triggers deployment
To update data immediately:
python scripts/update_models.py
Monitor pipeline health:
python scripts/test_pipeline.py
- Real-time search as you type
- Fuzzy matching for typos and partial matches
- Multi-field search across model names, organizations, and descriptions
- Search highlighting in results
- Bookmarkable URLs for search results
- Architecture: Llama, Mistral, Phi, Gemma, etc.
- Quantization: Q4_K_M, Q8_0, F16, etc.
- Model Size: Small (β€2 files), Medium (3-4), Large (>4)
- Organization: Filter by model publisher
- Download Count: Sort by popularity
The site uses Tailwind CSS for styling. Customize in:
styles/main.css
- Main stylesheettailwind.config.js
- Tailwind configurationcomponents/*.js
- Component-specific styles
Modify search behavior in services/SearchEngine.js
:
// Adjust search weights
const searchWeights = {
modelName: 3.0,
organization: 2.0,
description: 1.0,
tags: 1.5
};
Configure performance features in utils/performance.js
:
// Virtual scrolling threshold
const VIRTUAL_SCROLL_THRESHOLD = 100;
// Lazy loading settings
const LAZY_LOAD_MARGIN = '50px';
Built-in performance monitoring tracks:
- Page load times
- Search performance
- Memory usage
- User interactions
Access metrics via browser console:
window.performanceMonitor.getStats()
Automatic error tracking captures:
- JavaScript errors
- Network failures
- Search issues
- Performance problems
Track SEO performance:
- Google Search Console integration
- Structured data validation
- Meta tag optimization
- Sitemap submission
npm test
- Unit Tests: Individual component testing
- Integration Tests: Full workflow testing
- E2E Tests: User journey testing
- Performance Tests: Load and speed testing
npm run test:coverage
- Content Security Policy (CSP) headers
- Input sanitization for search queries
- XSS prevention in model data display
- HTTPS enforcement for all external resources
- No sensitive data in client-side code
Regular security checks:
npm audit
python -m pip check
Build Failures
# Clear cache and reinstall
rm -rf node_modules package-lock.json
npm install
Data Pipeline Issues
# Test pipeline health
python scripts/test_pipeline.py
# Check GitHub Actions logs
# Go to Actions tab in GitHub repository
Search Not Working
# Verify data files exist
ls -la gguf_models*.json
# Check browser console for errors
# Open DevTools β Console
Performance Issues
# Run performance audit
npm run test:performance
# Check memory usage
# Open DevTools β Performance tab
- Check the logs: Browser console and GitHub Actions
- Review documentation: All features are documented
- Search issues: Check existing GitHub issues
- Create issue: Provide detailed error information
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests for new features
- Ensure all tests pass
- Submit a pull request
- JavaScript: ES6+ with JSDoc comments
- Python: PEP 8 with type hints
- CSS: Tailwind utility classes
- Testing: Comprehensive test coverage
- Update documentation for new features
- Add tests for bug fixes
- Ensure CI passes
- Request review from maintainers
This project is licensed under the MIT License - see the LICENSE file for details.
- Hugging Face for providing the model data API
- GitHub Pages for free static hosting
- Tailwind CSS for the utility-first CSS framework
- Vite for the fast build system
- Documentation: Full documentation
- Issues: GitHub Issues
- Discussions: GitHub Discussions
Made with β€οΈ for the AI community