| layout | default |
|---|---|
| title | Chapter 7: Development and Source Build Workflow |
| nav_order | 7 |
| parent | Vibe Kanban Tutorial |
Welcome to Chapter 7: Development and Source Build Workflow. In this part of Vibe Kanban Tutorial: Multi-Agent Orchestration Board for Coding Workflows, you will build an intuitive mental model first, then move into concrete implementation details and practical production tradeoffs.
This chapter targets contributors building and extending Vibe Kanban from source.
- set up prerequisite toolchain for development
- run local dev server reliably
- build frontend/source artifacts for release testing
- understand contributor expectations before submitting changes
From README:
- Rust (stable)
- Node.js >= 18
- pnpm >= 8
- optional dev tools:
cargo-watch,sqlx-cli
pnpm i
pnpm run dev- frontend-only build through
frontendworkspace - macOS local build script for source test workflows
You now have a contributor-ready workflow for iterating on Vibe Kanban itself.
Next: Chapter 8: Production Operations and Governance
The BinaryInfo interface in npx-cli/src/download.ts handles a key part of this chapter's functionality:
process.env.VIBE_KANBAN_LOCAL === '1';
export interface BinaryInfo {
sha256: string;
size: number;
}
export interface BinaryManifest {
latest?: string;
platforms: Record<string, Record<string, BinaryInfo>>;
}
export interface DesktopPlatformInfo {
file: string;
sha256: string;
type: string | null;
}
export interface DesktopManifest {
platforms: Record<string, DesktopPlatformInfo>;
}
export interface DesktopBundleInfo {
archivePath: string | null;
dir: string;
type: string | null;
}
type ProgressCallback = (downloaded: number, total: number) => void;
function fetchJson<T>(url: string): Promise<T> {
return new Promise((resolve, reject) => {This interface is important because it defines how Vibe Kanban Tutorial: Multi-Agent Orchestration Board for Coding Workflows implements the patterns covered in this chapter.
The BinaryManifest interface in npx-cli/src/download.ts handles a key part of this chapter's functionality:
}
export interface BinaryManifest {
latest?: string;
platforms: Record<string, Record<string, BinaryInfo>>;
}
export interface DesktopPlatformInfo {
file: string;
sha256: string;
type: string | null;
}
export interface DesktopManifest {
platforms: Record<string, DesktopPlatformInfo>;
}
export interface DesktopBundleInfo {
archivePath: string | null;
dir: string;
type: string | null;
}
type ProgressCallback = (downloaded: number, total: number) => void;
function fetchJson<T>(url: string): Promise<T> {
return new Promise((resolve, reject) => {
https
.get(url, (res) => {
if (res.statusCode === 301 || res.statusCode === 302) {
return fetchJson<T>(res.headers.location!)
.then(resolve)This interface is important because it defines how Vibe Kanban Tutorial: Multi-Agent Orchestration Board for Coding Workflows implements the patterns covered in this chapter.
The DesktopPlatformInfo interface in npx-cli/src/download.ts handles a key part of this chapter's functionality:
}
export interface DesktopPlatformInfo {
file: string;
sha256: string;
type: string | null;
}
export interface DesktopManifest {
platforms: Record<string, DesktopPlatformInfo>;
}
export interface DesktopBundleInfo {
archivePath: string | null;
dir: string;
type: string | null;
}
type ProgressCallback = (downloaded: number, total: number) => void;
function fetchJson<T>(url: string): Promise<T> {
return new Promise((resolve, reject) => {
https
.get(url, (res) => {
if (res.statusCode === 301 || res.statusCode === 302) {
return fetchJson<T>(res.headers.location!)
.then(resolve)
.catch(reject);
}
if (res.statusCode !== 200) {
return reject(new Error(`HTTP ${res.statusCode} fetching ${url}`));
}This interface is important because it defines how Vibe Kanban Tutorial: Multi-Agent Orchestration Board for Coding Workflows implements the patterns covered in this chapter.
The DesktopManifest interface in npx-cli/src/download.ts handles a key part of this chapter's functionality:
}
export interface DesktopManifest {
platforms: Record<string, DesktopPlatformInfo>;
}
export interface DesktopBundleInfo {
archivePath: string | null;
dir: string;
type: string | null;
}
type ProgressCallback = (downloaded: number, total: number) => void;
function fetchJson<T>(url: string): Promise<T> {
return new Promise((resolve, reject) => {
https
.get(url, (res) => {
if (res.statusCode === 301 || res.statusCode === 302) {
return fetchJson<T>(res.headers.location!)
.then(resolve)
.catch(reject);
}
if (res.statusCode !== 200) {
return reject(new Error(`HTTP ${res.statusCode} fetching ${url}`));
}
let data = '';
res.on('data', (chunk: string) => (data += chunk));
res.on('end', () => {
try {
resolve(JSON.parse(data) as T);
} catch {This interface is important because it defines how Vibe Kanban Tutorial: Multi-Agent Orchestration Board for Coding Workflows implements the patterns covered in this chapter.
flowchart TD
A[BinaryInfo]
B[BinaryManifest]
C[DesktopPlatformInfo]
D[DesktopManifest]
E[DesktopBundleInfo]
A --> B
B --> C
C --> D
D --> E