---
title: "What You Built"
description: "A recap of the ski-alerts app and the Vercel platform features you integrated throughout the course."
canonical_url: "https://vercel.com/academy/svelte-on-vercel/svelte-conclusion"
md_url: "https://vercel.com/academy/svelte-on-vercel/svelte-conclusion.md"
docset_id: "vercel-academy"
doc_version: "1.0"
last_updated: "2026-04-11T16:27:25.628Z"
content_type: "lesson"
course: "svelte-on-vercel"
course_title: "Svelte on Vercel"
prerequisites:  []
---

<agent-instructions>
Vercel Academy — structured learning, not reference docs.
Lessons are sequenced.
Adapt commands to the human's actual environment (OS, package manager, shell, editor) — detect from project context or ask, don't assume.
The lesson shows one path; if the human's project diverges, adapt concepts to their setup.
Preserve the learning goal over literal steps.
Quizzes are pedagogical — engage, don't spoil.
Quiz answers are included for your reference.
</agent-instructions>

# What You Built

# 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](https://svelte.dev/docs/kit)**: Hooks, form actions, and advanced routing
- **[AI SDK docs](https://sdk.vercel.ai)**: Agents, MCP tool integration, and the `Chat` class from `@ai-sdk/svelte`
- **[Workflow DevKit docs](https://useworkflow.dev)**: Hooks, webhooks, streaming, and the `@workflow/ai` agent integration
- **[Vercel docs](https://vercel.com/docs)**: Cron Jobs, KV storage, and Fluid compute
- **[Svelte 5 runes](https://svelte.dev/docs/svelte/what-are-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.


---

[Full course index](/academy/llms.txt) · [Sitemap](/academy/sitemap.md)
