Skip to main content

Architecture Introduction

This document introduces the system architecture and design philosophy of PveSphere.

System Overview​

PveSphere adopts a frontend-backend separation architecture design, with frontend using Vue 3 + TypeScript and backend using Go + Gin.

Architecture Diagram​

┌─────────────────┐
│ Web Browser │
└────────┬────────┘
│
▼
┌─────────────────┐
│ PveSphere UI │ (Vue 3 + TypeScript)
│ (Frontend) │
└────────┬────────┘
│ HTTP/WebSocket
▼
┌─────────────────┐
│ PveSphere API │ (Go + Gin)
│ (Backend) │
└────────┬────────┘
│
┌────┴────┐
▼ ▼
┌────────┐ ┌─────────┐
│ MySQL │ │ Redis │
│ DB │ │ Cache │
└────────┘ └─────────┘
│
▼
┌─────────────────┐
│ Proxmox VE API │
│ (PVE Cluster) │
└─────────────────┘

Technology Stack​

Frontend Architecture​

  • Framework: Vue 3 (Composition API)
  • Build Tool: Vite 7
  • UI Library: Element Plus 2
  • Language: TypeScript 5
  • State Management: Pinia 3
  • Routing: Vue Router 4
  • Internationalization: Vue I18n
  • Charts: ECharts 6
  • Terminal: xterm.js 5, noVNC

Backend Architecture​

  • Language: Go 1.23
  • Web Framework: Gin 1.10
  • ORM: GORM 1.30
  • Database: MySQL / PostgreSQL / SQLite
  • Authentication: JWT (golang-jwt/jwt)
  • Cache: Redis 9
  • WebSocket: Gorilla WebSocket
  • Task Scheduling: gocron
  • Logging: Zap

Design Patterns​

PveSphere backend adopts a layered architecture design:

Handler Layer (API Layer)
↓
Service Layer (Business Logic Layer)
↓
Repository Layer (Data Access Layer)
↓
Model Layer (Data Model Layer)

Controller Pattern​

Uses Kubernetes Controller pattern to manage PVE resources, implementing automatic resource synchronization and state management.

Repository Pattern​

Uses Repository pattern to encapsulate data access logic, providing a unified data operation interface.

Deployment Architecture​

Docker Deployment​

Uses Docker Compose to manage multiple services:

  • api-server: API service
  • controller: Controller service
  • migration: Database migration service

Kubernetes Deployment​

Supports Kubernetes deployment, achieving high availability and automatic scaling.

Next Steps​