AppView in a box as a Vite plugin thing hatk.dev
2
fork

Configure Feed

Select the types of activity you want to include in your feed.


layout: home

hero: name: hatk tagline: Build AT Protocol apps with typed XRPC endpoints. actions: - theme: brand text: Get Started link: /getting-started/quickstart - theme: alt text: CLI Reference link: /cli/

features:

  • title: Typed end-to-end details: Lexicons generate TypeScript types for records, queries, and feeds. Your editor catches mistakes before your users do.
  • title: SQLite by default details: No external database to configure. Data lives in a single file that just works — locally and in production.
  • title: OAuth built-in details: AT Protocol auth with session cookies. Login, logout, and viewer resolution with zero setup.
  • title: SvelteKit-first details: Full-stack with SSR, remote commands, and typed XRPC calls from a generated client.

Project Structure#

A hatk app looks like this:

my-app/
├── app/                        # SvelteKit frontend
│   ├── routes/
│   │   ├── +layout.server.ts   # parseViewer(cookies)
│   │   └── +page.svelte        # Your UI
│   └── lib/
├── server/                     # Backend handlers
│   ├── feeds/                  # Feed generators
│   │   └── recent.ts           # defineFeed({ ... })
│   └── xrpc/                   # Custom XRPC endpoints
│       └── getProfile.ts       # defineQuery('...', ...)
├── seeds/
│   └── seed.ts                 # Test fixture data
├── lexicons/                   # AT Protocol schemas (like Prisma models)
├── hatk.config.ts              # Server configuration
└── hatk.generated.ts           # Auto-generated types from lexicons