Frontend Structure
The ZeroLimit frontend is built with React 19 and TypeScript, following a feature-sliced design pattern with clear separation of concerns.Directory Layout
Feature Module Pattern
Each feature follows a consistent structure:Example: Quota Feature
Page Component (QuotaPage.tsx)
Presenter Hook (useQuotaPresenter.ts)
State Management
ZeroLimit uses Zustand for global state management with dedicated stores per domain:Store Examples
Configuration Store (features/settings/config.store.ts)
Key Stores
| Store | Location | Purpose |
|---|---|---|
auth.store.ts | features/auth/ | Authentication state |
config.store.ts | features/settings/ | App configuration |
cliProxy.store.ts | features/settings/ | CLI Proxy state |
usage.store.ts | features/dashboard/ | Usage statistics |
update.store.ts | features/about/ | App update checking |
Service Layer
API Client Architecture
The API client (services/api/client.ts) uses Axios with interceptors:
API Services
| Service | Purpose |
|---|---|
auth.service.ts | Login, session validation |
config.service.ts | App configuration management |
quota.service.ts | Quota data fetching |
oauth.service.ts | OAuth provider integration |
logs.service.ts | Log file retrieval |
Provider Parsers
Each AI provider has a dedicated parser inservices/api/parsers/:
antigravity.parser.tsclaude.parser.tscodex.parser.tscopilot.parser.tsgemini.parser.tskiro.parser.ts
Tauri Integration
Tauri Service Bridge (services/tauri/index.ts)
Tauri Plugins Used
Routing
Route Structure (router/MainRoutes.ts)
Protected Routes
UI Component System
Base Components (shared/components/ui/)
Built on Radix UI primitives with Tailwind styling:
Button.tsx- Button variantsDialog.tsx- Modal dialogsSelect.tsx- Dropdown selectsProgress.tsx- Progress barsScrollArea.tsx- Custom scrollbarsLabel.tsx- Form labels
Styling Strategy
Custom Hooks
Shared Hooks (shared/hooks/)
| Hook | Purpose |
|---|---|
useAppVersion.ts | Get app version from Tauri |
useHeaderRefresh.ts | Refresh on header action |
useInterval.ts | Declarative interval hook |
Example: Interval Hook
Type System
Core Types (types/)
Internationalization
Setup with i18next for future multi-language support:Performance Optimizations
1. React Compiler
2. Request Deduplication
3. Cache with Expiry
Build Configuration
TypeScript Configuration
Path Alias
All imports use@/ prefix:
Next Steps
- Architecture Overview - Overall system architecture
- Backend Structure - Rust/Tauri backend details