Skip to content

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 config

Frontend 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.css

Backend 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 icons

Test 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 responses

Documentation Structure ​

docs/
├── user/                   # User documentation
├── development/            # Developer documentation
├── technical/              # Technical deep dives
├── public/                 # Static assets
│   └── imgs/               # Images
└── .vitepress/             # VitePress config

Configuration Files ​

Frontend Config ​

FilePurpose
package.jsonNPM dependencies
tsconfig.jsonTypeScript config
vite.config.tsVite build config
tailwind.config.jsTailwind CSS config

Backend Config ​

FilePurpose
Cargo.tomlRust dependencies
tauri.conf.jsonTauri configuration
build.rsBuild script

Next Steps ​

Released under the MIT License.