Skip to main content

Project Structure

opentree/
├── packages/
│ ├── main/ # Electron main process
│ │ ├── src/
│ │ │ ├── main.ts # Entry point
│ │ │ ├── preload.ts # Preload script
│ │ │ ├── ipc/ # IPC channel handlers
│ │ │ │ ├── keychain.ts
│ │ │ │ ├── favorites.ts
│ │ │ │ ├── music.ts
│ │ │ │ └── countdown.ts
│ │ │ └── database/ # Database models
│ │ │ ├── index.ts
│ │ │ └── models/
│ │ └── package.json
│ │
│ ├── renderer/ # React renderer process
│ │ ├── src/
│ │ │ ├── App.tsx
│ │ │ ├── components/
│ │ │ │ ├── WorldTreePanelV2/ # World Tree panel
│ │ │ │ │ ├── modules/ # Module components
│ │ │ │ │ │ ├── keychain.tsx
│ │ │ │ │ │ ├── favorites.tsx
│ │ │ │ │ │ ├── music.tsx
│ │ │ │ │ │ └── countdown.tsx
│ │ │ │ │ ├── hooks/
│ │ │ │ │ └── types.ts
│ │ │ │ └── shared/
│ │ │ └── index.html
│ │ └── package.json
│ │
│ └── shared/ # Shared types and utilities
│ ├── src/
│ │ ├── types/
│ │ └── utils/
│ └── package.json

├── static/
│ └── metaverse-v2/ # Metaverse frontend (pure HTML/JS)
│ ├── index.html
│ ├── app.js
│ ├── api.js
│ └── style.css

├── docs/ # Documentation
├── scripts/
└── package.json

Core Directories

packages/main/

Electron main process, responsible for:

  • Window management
  • IPC communication
  • Database operations (SQLite)
  • File system access

packages/renderer/

React renderer process, responsible for:

  • World Tree panel UI
  • Module component rendering
  • User interaction

static/metaverse-v2/

Metaverse desktop environment, standalone frontend app:

  • 3D desktop rendering
  • PC workstation management
  • Module panels
  • Floating buttons

packages/shared/

Shared between main and renderer:

  • TypeScript type definitions
  • Utility functions
  • Constants

Monorepo Management

The project uses npm workspaces:

{
"workspaces": [
"packages/*"
]
}

Common commands:

# Install all dependencies
npm install

# Start dev mode for all packages
npm run dev

# Build all packages
npm run build

# Clean all node_modules
npm run clean