---
layout: ../layouts/BaseLayout.astro
title: Development
description: Local development setup and architecture for contributors.
---

# Development

## Local Setup

```bash
cd "typescript-version"
npm install
npm run build
npm start
```

## Architecture

| Layer | File(s) | Responsibility |
| --- | --- | --- |
| Main process | `src/main.ts` | IPC handlers, Twitch API, downloads, ffmpeg/streamlink execution, updater |
| Preload bridge | `src/preload.ts` | Safe API surface exposed to renderer |
| Renderer shell | `src/index.html` + `src/styles.css` | UI markup and styling |
| Renderer modules | `src/renderer*.ts` | UI logic by feature (streamers, queue, settings, updates, shared state) |

## Renderer Module Split

- `renderer-shared.ts`: common state + DOM helper functions
- `renderer-streamers.ts`: streamer list + VOD loading
- `renderer-queue.ts`: queue rendering + start/stop behavior
- `renderer-settings.ts`: credentials, folder, and theme handling
- `renderer-updates.ts`: update banner and download/install flow
- `renderer.ts`: app init + clip/cutter/merge orchestration

## Useful Commands

```bash
# Build TypeScript only
npm run build

# Run app in dev mode
npm start

# Quick UI smoke test
npm run test:e2e

# Template guide + live preview checks
npm run test:e2e:guide

# Full end-to-end validation pass
npm run test:e2e:full

# Release validation suite (build + smoke + guide + full)
npm run test:e2e:release

# Extra stress pass (runs release suite 3x)
npm run test:e2e:stress

# Build Windows installer
npm run dist:win
```

## Docs Workspace

```bash
cd "docs"
npm install
npm run dev
```

Docs site is Astro + MDX and can be updated independently from app runtime code.
