Vercel Logo

What You Built

It's 5:47am and Grand Targhee just got 14 inches overnight. Your app handles what happens next. The streaming chat parses "powder at Targhee" into a structured alert, the background workflow evaluates conditions across five resorts without blocking, and the cached dashboard loads in milliseconds for every skier refreshing the page.

What You Learned by Section

Deployment Foundations. You configured adapter-vercel, set up environment variables across three scopes, used preview deployments for safe iteration, and pinned your Node.js runtime version.

AI Gateway. You built streaming chat with streamText(), created tools with Valibot schemas for type-safe AI interactions, extracted structured data with Output.object(), and centralized your provider with usage tracking middleware.

Workflows. You built durable workflows with the Workflow DevKit, ran parallel steps with independent retries, scheduled re-checks with sleep(), and classified errors as FatalError or RetryableError with exponential backoff.

Production. You configured ISR for fast cached pages, added structured logging with request IDs for observability, and set Cache-Control headers for CDN-level caching on API routes.

Keep Building

The ski-alerts app has natural extensions if you want to keep going:

  • Persist alerts to a database. Swap localStorage for Vercel KV or Postgres so alerts survive across devices.
  • Add a cron trigger. Use Vercel Cron Jobs to start the workflow on a schedule so alerts evaluate automatically.
  • Send real notifications. Wire triggered alert IDs to email or push notifications.
  • Add more conditions. Wind speed, visibility, lift status from resort APIs.

Where to Go Next

  • SvelteKit docs: Hooks, form actions, and advanced routing
  • AI SDK docs: Agents, MCP tool integration, and the Chat class from @ai-sdk/svelte
  • Workflow DevKit docs: Hooks, webhooks, streaming, and the @workflow/ai agent integration
  • Vercel docs: Cron Jobs, KV storage, and Fluid compute
  • Svelte 5 runes: $state, $derived, $effect, and the reactivity model

The ski-alerts app is yours. Ship it, extend it, or use the patterns here in your next project.