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