~ knotless Search/
↑↓ move↵ open⇧↵ all results

chadtmiller.com/hatk

AT Protocol app framework

1
0
main
69 lines · 2.6 KB Raw History
---
title: Quickstart
description: Create and run your first hatk project in under two minutes.
---

## Prerequisites

- **Vite+** — install with `curl -fsSL https://vite.plus | bash` (or `irm https://vite.plus/ps1 | iex` on Windows)
- **Docker** — needed to run the local PDS (Personal Data Server) during development

Vite+ manages Node.js and your package manager automatically. Run `vp help` to verify it's installed.

## Create a new project

```bash
vp create github:hatk-dev/hatk-template-starter
```

This scaffolds a full-stack project with a SvelteKit frontend, OAuth login, seed data, and everything wired together. The generated project includes:

```
my-appview/
├── app/                        # SvelteKit frontend (routes, components, styles)
├── server/                     # Backend logic (hooks, feeds, XRPC handlers)
├── lexicons/                   # AT Protocol schemas for your data types
├── seeds/                      # Test fixture data for local development
├── db/                         # Database reference schemas
├── hatk.config.ts              # Project configuration
├── hatk.generated.ts           # Auto-generated types (server)
├── hatk.generated.client.ts    # Auto-generated types (client)
├── vite.config.ts              # Vite+ / SvelteKit config
├── svelte.config.js            # SvelteKit adapter config
├── tsconfig.json               # TypeScript config (app)
├── tsconfig.server.json        # TypeScript config (server)
└── docker-compose.yml          # Local PLC directory and PDS for development
```

## Start the dev server

```bash
cd my-appview
npx svelte-kit sync
vp dev
```

This does three things automatically:

1. Starts a local PDS via Docker (your own mini AT Protocol server)
2. Runs seed data to create test accounts and records
3. Starts the hatk backend and SvelteKit dev server with hot reload

## See it running

Open `http://127.0.0.1:3000` in your browser. You should see the starter app running with seeded data. Both the frontend and API are served on the same port.

Try hitting an endpoint directly:

```bash
curl http://127.0.0.1:3000/xrpc/dev.hatk.describeCollections
```

This returns the data collections your server is indexing, derived from your lexicon schemas.

## Next steps

- [Project Structure](/getting-started/project-structure) -- understand each file and directory
- [Configuration](/getting-started/configuration) -- customize `hatk.config.ts`
- [Feeds](/guides/feeds) -- build custom feed algorithms
- [Auth](/guides/auth) -- add login and authenticated actions