import { useState, type ReactNode, type ElementType } from 'react';
import {
ChevronDown,
ChevronRight,
Rocket,
Layers,
Sparkles,
GitBranch,
FolderTree,
Component,
Settings,
PlayCircle,
Bot,
LayoutGrid,
Terminal,
Palette,
Keyboard,
Cpu,
Zap,
Image,
TestTube,
Brain,
Users,
} from 'lucide-react';
interface WikiSection {
id: string;
title: string;
icon: ElementType;
content: ReactNode;
}
function CollapsibleSection({
section,
isOpen,
onToggle,
}: {
section: WikiSection;
isOpen: boolean;
onToggle: () => void;
}) {
const Icon = section.icon;
return (
{section.title}
{isOpen ? (
) : (
)}
{isOpen && (
)}
);
}
function CodeBlock({ children, title }: { children: string; title?: string }) {
return (
{title && (
{title}
)}
{children}
);
}
function FeatureList({
items,
}: {
items: { icon: ElementType; title: string; description: string }[];
}) {
return (
{items.map((item, index) => {
const ItemIcon = item.icon;
return (
{item.title}
{item.description}
);
})}
);
}
export function WikiView() {
const [openSections, setOpenSections] = useState>(new Set(['overview']));
const toggleSection = (id: string) => {
setOpenSections((prev) => {
const newSet = new Set(prev);
if (newSet.has(id)) {
newSet.delete(id);
} else {
newSet.add(id);
}
return newSet;
});
};
const expandAll = () => {
setOpenSections(new Set(sections.map((s) => s.id)));
};
const collapseAll = () => {
setOpenSections(new Set());
};
const sections: WikiSection[] = [
{
id: 'overview',
title: 'Project Overview',
icon: Rocket,
content: (
Automaker is an autonomous AI development
studio that helps developers build software faster using AI agents.
At its core, Automaker provides a visual Kanban board to manage features. When you're
ready, AI agents automatically implement those features in your codebase, complete with
git worktree isolation for safe parallel development.
Think of it as having a team of AI developers that can work on multiple features
simultaneously while you focus on the bigger picture.
),
},
{
id: 'architecture',
title: 'Architecture',
icon: Layers,
content: (
Automaker is built as a monorepo with two main applications and shared libraries:
apps/ui - React + TanStack Router +
Electron frontend for the desktop application
apps/server - Express backend handling
API requests and agent orchestration
libs/ - Shared packages for types,
utilities, and common logic used across apps
Key Technologies:
Electron + React + TanStack Router for cross-platform desktop support
Real-time communication via WebSocket for live agent updates
State management with Zustand for reactive UI updates
Claude Agent SDK for AI capabilities
Shared monorepo packages (@automaker/*) for code reuse
),
},
{
id: 'features',
title: 'Key Features',
icon: Sparkles,
content: (
),
},
{
id: 'data-flow',
title: 'How It Works (Data Flow)',
icon: GitBranch,
content: (
Here's what happens when you use Automaker to implement a feature:
Create Feature
Add a new feature card to the Kanban board with description and steps
Feature Saved
Feature saved to{' '}
.automaker/features/{id}/feature.json
Start Work
Drag to "In Progress" or enable auto mode to start implementation
Git Worktree Created
Backend AutoModeService creates isolated git worktree (if enabled)
Agent Executes
Claude Agent SDK runs with file/bash/git tool access
Progress Streamed
Real-time updates via WebSocket as agent works
Completion
On success, feature moves to "waiting_approval" for your review
Verify
Review changes and move to "verified" when satisfied
),
},
{
id: 'structure',
title: 'Project Structure',
icon: FolderTree,
content: (
The Automaker codebase is organized as follows:
{`automaker/
├─ apps/
│ ├─ ui/ Frontend (React + Electron)
│ │ └─ src/
│ │ ├─ routes/ TanStack Router pages
│ │ ├─ components/
│ │ │ ├─ layout/ Layout components (sidebar, etc.)
│ │ │ ├─ views/ View components (board, agent, etc.)
│ │ │ ├─ dialogs/ Dialog components
│ │ │ └─ ui/ shadcn/ui components
│ │ ├─ store/ Zustand state management
│ │ ├─ hooks/ Custom React hooks
│ │ ├─ lib/ Utilities and helpers
│ │ ├─ config/ App configuration files
│ │ ├─ contexts/ React context providers
│ │ ├─ styles/ CSS styles and theme definitions
│ │ ├─ types/ TypeScript type definitions
│ │ ├─ utils/ Utility functions
│ │ ├─ main.ts Electron main process entry
│ │ ├─ preload.ts Electron preload script
│ │ └─ renderer.tsx React renderer entry
│ │
│ └─ server/ Backend (Express)
│ └─ src/
│ ├─ routes/ API endpoints
│ ├─ services/ Business logic (AutoModeService, etc.)
│ ├─ lib/ Library utilities
│ ├─ middleware/ Express middleware
│ ├─ providers/ AI provider implementations
│ ├─ types/ TypeScript type definitions
│ └─ index.ts Server entry point
│
├─ libs/ Shared packages (monorepo)
│ ├─ types/ TypeScript type definitions
│ ├─ utils/ Common utilities (logging, errors)
│ ├─ prompts/ AI prompt templates
│ ├─ platform/ Platform & path utilities
│ ├─ model-resolver/ Claude model resolution
│ ├─ dependency-resolver/ Feature dependency ordering
│ └─ git-utils/ Git operations & parsing
│
├─ docs/ Documentation
└─ package.json Workspace root
`}
),
},
{
id: 'components',
title: 'Key Components',
icon: Component,
content: (
The main UI components that make up Automaker:
{[
{
file: 'layout/sidebar.tsx',
desc: 'Main navigation with project picker and view switching',
},
{
file: 'views/board-view.tsx',
desc: 'Kanban board with drag-and-drop cards',
},
{
file: 'views/agent-view.tsx',
desc: 'AI chat interface for conversational development',
},
{
file: 'views/spec-view/',
desc: 'Project specification editor with AI generation',
},
{
file: 'views/context-view.tsx',
desc: 'Context file manager for AI context',
},
{
file: 'views/terminal-view/',
desc: 'Integrated terminal with splits and tabs',
},
{
file: 'views/profiles-view.tsx',
desc: 'AI profile management (model + thinking presets)',
},
{
file: 'store/app-store.ts',
desc: 'Central Zustand state management',
},
].map((item) => (
{item.file}
{item.desc}
))}
),
},
{
id: 'configuration',
title: 'Configuration',
icon: Settings,
content: (
Automaker stores project configuration in the{' '}
.automaker/ directory:
{[
{
file: 'app_spec.txt',
desc: 'Project specification describing your app for AI context',
},
{
file: 'context/',
desc: 'Additional context files (docs, examples) for AI',
},
{
file: 'features/',
desc: 'Feature definitions with descriptions and steps',
},
].map((item) => (
{item.file}
{item.desc}
))}
Tip: App Spec Best Practices
Include your tech stack and key dependencies
Describe the project structure and conventions
List any important patterns or architectural decisions
Note testing requirements and coding standards
),
},
{
id: 'getting-started',
title: 'Getting Started',
icon: PlayCircle,
content: (
Follow these steps to start building with Automaker:
Create or Open a Project
Use the sidebar to create a new project or open an existing folder
Write an App Spec
Go to Spec Editor and describe your project. This helps AI understand your codebase.
Add Context (Optional)
Add relevant documentation or examples to the Context view for better AI results
Create Features
Add feature cards to your Kanban board with clear descriptions and implementation
steps
Configure AI Profile
Choose an AI profile or customize model/thinking settings per feature
Start Implementation
Drag features to "In Progress" or enable auto mode to let AI work
Review and Verify
Check completed features, review changes, and mark as verified
Pro Tips:
Use keyboard shortcuts for faster navigation (press{' '}
? to see all)
Enable git worktree isolation for parallel feature development
Start with "Quick Edit" profile for simple tasks, use "Heavy Task" for complex work
Keep your app spec up to date as your project evolves
),
},
];
return (
{/* Header */}
Wiki
Learn how Automaker works and how to use it effectively
Expand All
Collapse All
{/* Content */}
{sections.map((section) => (
toggleSection(section.id)}
/>
))}
);
}