# Squiggleverse

Squiggleverse is a whimsical, game-based learning project focused on grammar, usage, and style. This repository contains the public landing page for the project: a fast, static SvelteKit site with brand artwork, a demo video, introductory copy, and production metadata.

The page is built to present Squiggleverse clearly as a polished education-through-play experience while keeping the implementation small, accessible, and easy to deploy.

![Squiggleverse landing page screenshot](static/screenshot.png)

## What Is Included

- Static SvelteKit landing page at `/`
- Responsive hero logo, demo video, and project introduction
- SEO, Open Graph, Twitter card, and JSON-LD metadata
- Web manifest, icons, favicon, robots file, sitemap, and social preview image
- Self-hosted video and image assets
- Static adapter configuration for prerendered output
- Docker and CapRover deployment files

## Tech Stack

- SvelteKit
- Svelte 5
- TypeScript
- Vite
- `@sveltejs/adapter-static`
- `@fontsource/nunito`
- Docker with nginx for containerized static hosting

## Project Structure

```txt
src/
  lib/
    assets/        Static media imported by Svelte components
    components/    Hero logo, video, and intro sections
  routes/          SvelteKit routes, layout, page metadata, and error page
  app.css          Global styling
  app.html         HTML shell
static/            Public assets copied directly into the build
Dockerfile         Static production image
captain-definition CapRover deployment definition
```

## Getting Started

Install dependencies:

```sh
npm install
```

Start the local development server:

```sh
npm run dev
```

Run Svelte and TypeScript checks:

```sh
npm run check
```

Create a production build:

```sh
npm run build
```

Preview the production build locally:

```sh
npm run preview
```

## Deployment

The site is configured for static generation through `@sveltejs/adapter-static`. Production output is written to `build/`.

For container deployments, the included `Dockerfile` builds the SvelteKit site with Node.js and serves the generated static files from nginx. The `captain-definition` file points CapRover at that Dockerfile.

## Content And Assets

Core landing page content lives in:

- `src/routes/+page.svelte`
- `src/lib/components/HeroLogo.svelte`
- `src/lib/components/VideoCard.svelte`
- `src/lib/components/IntroText.svelte`

Public metadata assets live in `static/`. Imported page media lives in `src/lib/assets/`.

Large source design files and rendered brand assets are kept at the repository root for project continuity.
