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