vueuse-composables
π―Skillfrom zatkniz/sporty-group
Provides reusable Vue composition functions leveraging VueUse utilities for managing reactive state, API interactions, and common frontend logic in the sports leagues application.
Installation
npx skills add https://github.com/zatkniz/sporty-group --skill vueuse-composablesSkill Details
Overview
# Sports Leagues SPA
A single-page application that displays sports leagues from around the world with filtering capabilities and badge viewing.




Features
- π Browse Leagues - View all sports leagues from TheSportsDB API
- π Search - Filter leagues by name in real-time
- π― Filter by Sport - Dropdown to filter by sport type (Soccer, Basketball, etc.)
- π View Badges - Click any league to view its season badge
- πΎ Caching - Badge responses are cached in localStorage
- π± Responsive - Works on mobile, tablet, and desktop
- π Dark Mode - Automatic dark mode support
Tech Stack
- Framework: [Nuxt 4](https://nuxt.com/) + [Vue 3](https://vuejs.org/)
- Language: [TypeScript](https://www.typescriptlang.org/)
- UI Library: [Nuxt UI](https://ui.nuxt.com/) + [Tailwind CSS](https://tailwindcss.com/)
- State Management: [Pinia](https://pinia.vuejs.org/)
- Utilities: [VueUse](https://vueuse.org/)
- API: [TheSportsDB](https://www.thesportsdb.com/free_sports_api)
Getting Started
Prerequisites
- Node.js 20.x or higher
- npm, yarn, or pnpm
Installation
```bash
# Clone the repository
git clone https://github.com/zatkniz/sporty-group.git
cd sporty-group
# Install dependencies
npm install
```
Development
Start the development server on http://localhost:3000:
```bash
npm run dev
```
Production
Build for production:
```bash
npm run build
```
Preview the production build:
```bash
npm run preview
```
Project Structure
```
app/
βββ components/ # Vue components
β βββ LeagueCard.vue # Individual league card
β βββ LeaguesFilters.vue # Search & filter controls
β βββ LeaguesGrid.vue # Grid layout for leagues
β βββ BadgeModal.vue # Modal for displaying badges
βββ composables/ # Reusable composition functions
β βββ useApi.ts # API client wrapper
βββ stores/ # Pinia stores
β βββ sportsLeagues.ts # Leagues state management
βββ types/ # TypeScript definitions
β βββ thesportsdb.ts # API response types
βββ pages/ # Route pages
β βββ index.vue # Main leagues page
βββ layouts/ # Layout components
βββ default.vue # Default layout
```
API Endpoints
| Endpoint | Description |
|----------|-------------|
| all_leagues.php | Fetch all sports leagues |
| search_all_seasons.php?badge=1&id={id} | Fetch league badge by ID |
Documentation
For detailed development documentation, including architecture decisions and AI tools used, see [DEVELOPMENT.md](./DEVELOPMENT.md).
License
This project is for demonstration purposes.
More from this repository4
Helps developers quickly discover and search through available Nuxt modules by providing an interactive, filterable catalog of Nuxt ecosystem modules.
Helps developers quickly find and reference specific sections of Nuxt documentation by providing an intelligent, searchable lookup mechanism within a Claude Code interaction.
Configures and manages dynamic theming for Nuxt UI components, enabling seamless dark/light mode switching and custom color palette definitions.
Helps developers quickly locate and preview Nuxt UI components within the project by providing an interactive search and filtering mechanism.