nuxt-models

Domain model classes with automatic hydration, relations, and type casting. Use when creating models for API entities, defining relationships between models, casting properties to enums/dates, or creating value objects.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "nuxt-models" with this command: npx skills add leeovery/claude-nuxt/leeovery-claude-nuxt-nuxt-models

Nuxt Models

Type-safe domain models with automatic hydration, relations, and property casting.

Core Concepts

models.md - Complete model patterns, lifecycle, relations, casts values.md - Value objects for typed wrappers (DateValue, etc.)

Basic Model

// app/models/Post.ts
import Model from '#layers/base/app/models/Model'
import type { Castable } from '#layers/base/app/types'
import PostStatus from '~/enums/PostStatus'
import DateValue from '~/values/DateValue'
import Author from '~/models/Author'

export default class Post extends Model {
  ulid: string
  title: string
  content: string
  status: PostStatus
  isDraft: boolean
  author: Author
  createdAt: DateValue

  public override primaryKey(): string {
    return 'ulid'
  }

  public override casts(): Record<string, Castable> {
    return {
      status: PostStatus,
      createdAt: DateValue,
    }
  }

  public override relations(): Record<string, typeof Model> {
    return {
      author: Author,
    }
  }

  public isPublished(): boolean {
    return !this.isDraft
  }
}

Model Lifecycle

API Response → booting() → transform() → Property Assignment
     → Relations Hydrated → Casts Applied → booted() → Ready

Usage

// Hydrate from API response
const post = Post.hydrate(apiResponse.data)

// Hydrate collection
const posts = Post.collect(apiResponse.data)

// Access typed properties
post.status.color()           // Enum method
post.createdAt.format()       // Value object method
post.author.name              // Relation property

// Compare models
post.is(otherPost)            // Same primary key?

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

nuxt-pages

No summary provided by upstream source.

Repository SourceNeeds Review
General

nuxt-architecture

No summary provided by upstream source.

Repository SourceNeeds Review
General

nuxt-config

No summary provided by upstream source.

Repository SourceNeeds Review
nuxt-models | V50.AI