Project Structure
Organization of the IfAI codebase.
Root Directory
ifai/
├── docs/ # Documentation
├── src/ # Frontend source
├── src-tauri/ # Backend source
├── public/ # Static assets
├── tests/ # Test files
├── package.json # Node dependencies
├── tsconfig.json # TypeScript config
├── vite.config.ts # Vite config
└── tauri.conf.json # Tauri configFrontend Structure (src/)
src/
├── main.tsx # App entry point
├── App.tsx # Root component
├── index.css # Global styles
│
├── components/ # React components (26 modules)
│ ├── layout/ # Layout components
│ │ ├── Header.tsx
│ │ ├── Footer.tsx
│ │ └── Sidebar.tsx
│ │
│ ├── editor/ # Editor components
│ │ ├── MonacoEditor.tsx
│ │ ├── EditorContainer.tsx
│ │ └── MiniMap.tsx
│ │
│ ├── AIChat/ # AI chat panel
│ │ ├── ChatPanel.tsx
│ │ ├── MessageList.tsx
│ │ ├── InputArea.tsx
│ │ └── CodeBlock.tsx
│ │
│ ├── Composer/ # Multi-file editor
│ │ ├── Composer.tsx
│ │ ├── DiffView.tsx
│ │ └── FileList.tsx
│ │
│ ├── FileTree/ # File browser
│ │ ├── FileTree.tsx
│ │ ├── TreeNode.tsx
│ │ └── FileIcon.tsx
│ │
│ ├── Terminal/ # Integrated terminal
│ │ ├── Terminal.tsx
│ │ └── TerminalTabs.tsx
│ │
│ └── common/ # Shared components
│ ├── Button.tsx
│ ├── Input.tsx
│ └── Modal.tsx
│
├── stores/ # Zustand stores (23 stores)
│ ├── useChatStore.ts # Chat state & logic
│ ├── useFileStore.ts # File operations
│ ├── useEditorStore.ts # Editor state
│ ├── useAgentStore.ts # Agent execution
│ ├── useSettingsStore.ts # User preferences
│ └── ...
│
├── services/ # Business logic
│ ├── ai/ # AI services
│ │ ├── aiClient.ts # AI API client
│ │ ├── streamHandler.ts # Response streaming
│ │ └── contextBuilder.ts # Context management
│ │
│ ├── codebase/ # Code analysis
│ │ ├── symbolIndex.ts # Symbol indexing
│ │ ├── codeParser.ts # Code parsing
│ │ └── referenceFinder.ts # Find references
│ │
│ ├── editor/ # Editor services
│ │ ├── monacoService.ts # Monaco integration
│ │ └── completionProvider.ts # Auto-completion
│ │
│ └── file/ # File operations
│ ├── fileWatcher.ts # File system watcher
│ └── gitService.ts # Git integration
│
├── hooks/ # Custom React hooks
│ ├── useAI.ts # AI interaction hook
│ ├── useDebounce.ts # Debounce utility
│ ├── useKeyboard.ts # Keyboard shortcuts
│ └── useFileSystem.ts # File system access
│
├── utils/ # Utility functions
│ ├── format.ts # Code formatting
│ ├── logger.ts # Logging utility
│ └── validation.ts # Input validation
│
├── types/ # TypeScript definitions
│ ├── ai.ts # AI-related types
│ ├── editor.ts # Editor types
│ ├── file.ts # File types
│ └── index.ts # Type exports
│
└── styles/ # CSS modules
├── editor.css
├── chat.css
└── theme.cssBackend Structure (src-tauri/)
src-tauri/
├── src/ # Rust source
│ ├── lib.rs # Main entry point
│ ├── main.rs # Application entry
│ ├── app.rs # App setup
│ │
│ ├── commands/ # Tauri commands (API)
│ │ ├── mod.rs # Command exports
│ │ ├── atomic_commands.rs # File operations
│ │ ├── core_wrappers.rs # Core functionality
│ │ ├── ai_commands.rs # AI-related commands
│ │ └── symbol_commands.rs # Symbol indexing
│ │
│ ├── ai/ # AI module
│ │ ├── mod.rs
│ │ ├── router.rs # AI provider routing
│ │ ├── openai.rs # OpenAI client
│ │ ├── anthropic.rs # Anthropic client
│ │ ├── zhipu.rs # Zhipu client
│ │ └── local.rs # Local LLM (Ollama)
│ │
│ ├── agent_system/ # Agent framework
│ │ ├── mod.rs
│ │ ├── supervisor.rs # Agent orchestration
│ │ └── toolchain.rs # Available tools
│ │
│ ├── conversation/ # Chat management
│ │ ├── mod.rs
│ │ ├── message.rs # Message types
│ │ └── history.rs # Chat history
│ │
│ ├── codebase/ # Code analysis
│ │ ├── mod.rs
│ │ ├── parser.rs # Tree-sitter wrapper
│ │ ├── symbols.rs # Symbol extraction
│ │ └── index.rs # Symbol index
│ │
│ ├── file_system/ # File operations
│ │ ├── mod.rs
│ │ ├── watcher.rs # File watcher
│ │ └── git.rs # Git operations
│ │
│ ├── prompt/ # Prompt templates
│ │ ├── mod.rs
│ │ └── templates.rs # Prompt definitions
│ │
│ └── utils/ # Utilities
│ ├── mod.rs
│ ├── error.rs # Error types
│ └── config.rs # Configuration
│
├── Cargo.toml # Rust dependencies
├── tauri.conf.json # Tauri configuration
├── build.rs # Build script
└── icons/ # App iconsTest Structure
tests/
├── e2e/ # E2E tests
│ ├── ai-chat.spec.ts # AI chat tests
│ ├── composer.spec.ts # Composer tests
│ ├── navigation.spec.ts # Code navigation tests
│ └── refactoring.spec.ts # Refactoring tests
│
├── unit/ # Unit tests
│ ├── services/ # Service tests
│ └── stores/ # Store tests
│
└── fixtures/ # Test fixtures
├── sample-code/ # Sample projects
└── mock-responses/ # Mock AI responsesDocumentation Structure
docs/
├── user/ # User documentation
├── development/ # Developer documentation
├── technical/ # Technical deep dives
├── public/ # Static assets
│ └── imgs/ # Images
└── .vitepress/ # VitePress configConfiguration Files
Frontend Config
| File | Purpose |
|---|---|
package.json | NPM dependencies |
tsconfig.json | TypeScript config |
vite.config.ts | Vite build config |
tailwind.config.js | Tailwind CSS config |
Backend Config
| File | Purpose |
|---|---|
Cargo.toml | Rust dependencies |
tauri.conf.json | Tauri configuration |
build.rs | Build script |
Next Steps
- Frontend Guide - React development
- Backend Guide - Rust development
- API Reference - Command reference