Antigravity Manager Developer Guide
🏗️ Architecture Overview
Antigravity Manager is a hybrid Desktop Application built with Electron, React, and NestJS. It follows a modular architecture where the frontend (Renderer) communicates with the backend (Main) via type-safe IPC (ORPC).
mermaid
graph TD
User[User Interface] -->|React/Vite| Renderer[Renderer Process]
Renderer -->|ORPC Client| IPC[IPC Layer]
IPC -->|ORPC Router| Main[Main Process]
Main -->|Bootstraps| Server[NestJS Server]
Main -->|Calls| Services[Service Layer]
Services -->|Read/Write| DB[(SQLite Database)]
Services -->|HTTP| Cloud[Cloud APIs (Google/Anthropic)]
Key Technologies
- •Frontend: React 19, TailwindCSS v4, TanStack Router, TanStack Query.
- •Backend: Electron (Main), NestJS (Core Logic), Better-SQLite3 (Data).
- •Communication: ORPC (Type-safe IPC wrapper around Electron IPC).
- •Build: Electron Forge + Vite.
📂 Directory Structure
- •
src/main.ts: Electron Main Process entry point. - •
src/preload.ts: Bridge between Main and Renderer. - •
src/renderer.tsx: React App entry point. - •
src/components/: Reusable React UI components (Radix UI based). - •
src/ipc/: IPC Routers and Handlers (Domain logic).- •
router.ts: Main ORPC router definition. - •
account/,cloud/,database/: Domain-specific handlers.
- •
- •
src/server/: NestJS application modules (proxies/gateways). - •
src/services/: Core business logic (framework agnostic).- •
GoogleAPIService.ts: Gemini/Cloud interactions. - •
AutoSwitchService.ts: Account rotation logic.
- •
- •
src/routes/: Frontend routing definitions (File-based).
🚀 Development Workflow
Prerequisites
- •Node.js 18+
- •npm (Project uses
package-lock.json)
Common Commands
- •Start Dev Server:
npm start - •Lint Code:
npm run lint - •Unit Test:
npm run test:unit - •E2E Test:
npm run test:e2e - •Build Production:
npm run make
🧠 Core Concepts
IPC Communication (ORPC)
The project uses orpc for type-safe communication.
- •Define: Create a router in
src/ipc/router.tswith Zod schemas. - •Implement: Add logic in handlers (e.g.,
src/ipc/account/handler.ts). - •Call: Use the generated client in React components.
Database Access
Data is stored in a local SQLite file (test.db in dev, user data in prod).
- •Use
Better-SQLite3for direct access. - •Logic should be encapsulated in
src/servicesorsrc/ipc.
Account Management
- •Accounts are added via OAuth (Google/Claude).
- •
GoogleAPIServicehandles token exchange and refreshing. - •
AutoSwitchServicemonitors usage and switches active accounts automatically.
⚠️ Critical Rules
- •Type Safety: strict TypeScript usage; Zod for runtime validation.
- •Components: Use
src/components/ui(Radix primitives) for consistency. - •Async: Handle all IPC/DB calls asynchronously with try/catch.
- •Security: Never commit secrets. API keys are user-provided or encrypted locally.