A Vue.js application for tracking the latest LLM models using a timeline interface with filtering capabilities.
Visit the live application: https://yunatseng.github.io/llm-tracker/
- 📊 Timeline Visualization: Interactive timeline displaying model release history
- 🔍 Smart Filtering: Filter by architecture type, search by name, and multiple sorting options
- 🔄 Automated Updates: Daily automated data fetching from OpenRouter APIs via GitHub Actions
- 📱 Responsive Design: Works seamlessly on desktop and mobile devices
- ⚡ High Performance: Built with Vue 3 Composition API and Vite
- 🎨 Modern UI: Beautiful interface with Tailwind CSS and Inter font
- GPT Series: OpenAI GPT model family
- Claude Series: Anthropic Claude model family
- Gemini Series: Google Gemini model family
- Frontend: Vue 3 with Composition API
- Build Tool: Vite
- Styling: Tailwind CSS
- HTTP Client: Axios
- Fonts: Inter (Google Fonts)
- Deployment: GitHub Pages
- Automation: GitHub Actions
- Node.js 16+ and npm
This project is configured for automatic deployment to GitHub Pages using GitHub Actions.
The project includes a GitHub Actions workflow that:
- Runs daily at 8:00 UTC to fetch fresh model data
- Can be triggered manually from the Actions tab
- Automatically deploys to GitHub Pages after data updates
To trigger a manual update:
- Go to your repository on GitHub
- Click the "Actions" tab
- Select "Update LLM Models Data"
- Click "Run workflow"
If you prefer manual deployment:
# Build the project
npm run build
# Deploy to GitHub Pages (requires gh-pages package)
npm install -g gh-pages
gh-pages -d distsrc/
├── components/
│ ├── FilterPanel.vue # Filter panel component
│ ├── Timeline.vue # Timeline display component
│ ├── ModelCard.vue # Model card component
│ ├── Alert.vue # Alert notification component
│ └── LoadingSpinner.vue # Loading spinner component
├── App.vue # Main application component
├── main.js # Application entry point
└── style.css # Global styles with Tailwind CSS
Main application component responsible for:
- Data fetching from static JSON file
- State management and filtering logic
- Child component coordination
- Error handling and loading states
Filter control panel providing:
- Architecture type filtering (GPT, Claude, Gemini)
- Keyword search functionality
- Sorting options (name, date, price)
- Filter reset capability
Timeline display component supporting:
- Date-grouped model visualization
- Statistics and model count display
- Multiple sorting modes
- Responsive timeline layout
Model information card displaying:
- Model basic information and metadata
- Pricing information (input/output tokens)
- Technical specifications
- Context length and other details
Notification component for:
- Error messages
- Warning notifications
- Success confirmations
- Dismissible alerts
Loading state component providing:
- Animated loading indicators
- Loading text display
- Consistent loading UX
- Update
scripts/fetch-models.jsto include new API endpoints - Add new architecture options in
FilterPanel.vue - Configure color schemes in
Timeline.vue'sgetArchitectureColorfunction - Update documentation
The application expects model data in the following format:
{
"models": [
{
"id": "model-id",
"name": "Model Name",
"architecture": "GPT|Claude|Gemini",
"created": "2025-05-30T00:00:00Z",
"context_length": 128000,
"pricing": {
"prompt": "0.000001",
"completion": "0.000002"
}
}
],
"lastUpdated": "2025-05-30T12:00:00Z"
}- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Commit your changes:
git commit -m 'Add amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- OpenRouter for providing the model information
- Vue.js for the amazing framework
- Tailwind CSS for the utility-first CSS framework
- Vite for the fast build tool