Skip to main content

Globe Server Backend - Webserver control of Globe

Project description

Globe Software

Complete interactive globe visualization system with hardware control, media playback, and web interface.

Overview

Globe Software is a complete system for controlling and visualizing content on a physical rotating globe display. This package includes both the FastAPI backend server and the React web interface as static files.

WARNING: This package is designed to be used on the Globe platform hardware - use on other systems may result in unexpected behaviour like forced network disconnects.

Features

  • Web Interface: React-based UI for controlling the globe (served as static files)
  • FastAPI Backend: High-performance async web server with REST API
  • Globe Visualization: Real-time 3D globe rendering with earth-viz
  • Media Management: Upload and manage video/image content with playlist support
  • Hardware Control: Interface with ESP32 (motor) and FPGA (display) hardware
  • Network Management: WiFi configuration, network switching, and access point mode
  • Automatic Updates: Online (PyPI) and offline (.whl) update support
  • Real-time Communication: WebSocket support for live status updates

Installation

Quick Install

pip install globe-server

Initial Setup

After installation, run the setup wizard to configure the system:

globe-server-setup

This will:

  • Create the ~/.globe-server/ directory structure
  • Download required static images for visualization
  • Prompt for configuration (ESP32 API key, WiFi credentials, etc.)

Production Deployment (Raspberry Pi)

For production deployment on Raspberry Pi, see the installation guide which covers:

  • Creating the installation directory and virtual environment
  • Installing as a systemd service
  • Automatic startup and update management

Usage

Starting the Server

# Start the server
globe-server

The server will start on http://localhost:8000 and serve:

  • Web interface at http://localhost:8000/
  • API documentation at http://localhost:8000/docs
  • Alternative API docs at http://localhost:8000/redoc

Accessing the Web Interface

Once the server is running, open your browser to:

  • http://localhost:8000 (local access)
  • http://<raspberry-pi-ip>:8000 (remote access)

The web interface provides:

  • Media upload and playlist management
  • Globe visualization controls
  • Motor speed and rotation control
  • Network and WiFi configuration
  • System settings and firmware updates

Command Line Options

# Start with default settings
globe-server

# Or use uvicorn directly for custom configuration
uvicorn globe_server.main:app --host 0.0.0.0 --port 8000 --reload

Configuration

The server stores configuration and data in ~/.globe-server/:

  • .env - Environment variables (API keys, WiFi credentials)
  • globe.db - SQLite database
  • media/ - Uploaded media files
  • updates/ - Software update packages (.whl files)
  • logs/ - Application logs

Key configuration settings (from globe_server.config):

  • GLOBE_DATA_DIR: ~/.globe-server (base directory)
  • GLOBE_MEDIA_DIRECTORY: Media storage location
  • UPDATE_DIRECTORY: Software update packages
  • MOTOR_RPM: Default motor rotation speed
  • ESP32_API_KEY: Authentication for ESP32 communication

System Architecture

┌─────────────────┐
│  Web Interface  │ (React - served as static files)
│  Port 8000      │
└────────┬────────┘
         │ HTTP/WebSocket
┌────────▼────────┐
│  FastAPI Server │ (Python)
│  Port 8000      │
└────┬───────┬────┘
     │       │
     │       └──────────┐
┌────▼────┐      ┌──────▼──────┐
│  ESP32  │      │    FPGA     │
│ (Motor) │      │ (Display)   │
└─────────┘      └─────────────┘

API Endpoints

The REST API provides programmatic access to all features:

  • / - Web interface (static files)
  • /media/* - Media file management and playback
  • /playlist/* - Playlist operations
  • /motor/* - Motor control (ESP32)
  • /status/* - Server status and WebSocket updates
  • /settings/* - Server configuration
  • /update/* - Software and firmware updates (server, ESP32, FPGA)
  • /network/* - Network and WiFi management
  • /earth-viz/* - Globe visualization rendering

Full interactive API documentation available at /docs when server is running.

Software Updates

Globe Software supports both online and offline updates:

Online Updates (PyPI)

When connected to the internet, the system automatically checks for updates on startup (when using the systemd service).

Offline Updates

For systems without internet access:

  1. Download the update bundle (.whl files for the package and all dependencies)
  2. Copy all .whl files to ~/.globe-server/updates/
  3. Restart the server

The startup script will automatically install from local files if PyPI is unavailable.

Development

From Source

git clone https://github.com/edcatley/Globe-Software.git
cd Globe-Software/backend
pip install -e .[dev]

Running Tests

pytest

Code Quality

# Format code
black src/

# Type checking
mypy src/

Links

Requirements

Software

  • Python 3.8 or higher
  • VLC media player (for video/image playback)

Hardware (Optional)

  • Raspberry Pi (tested on Bookworm)
  • ESP32 microcontroller (for motor control)
  • FPGA (for display control)

The system can run without hardware for development and testing.

Python Dependencies

All Python dependencies are automatically installed:

  • FastAPI & Uvicorn (web server)
  • SQLite (database)
  • VLC Python bindings (media playback)
  • PyQt5 & PyQtWebEngine (visualization windows)
  • earth-viz (globe rendering)
  • pyserial (UART communication)
  • zeroconf (network discovery)

See the pyproject.toml for the complete dependency list.

Author

Edward Catley (edward.catley@catleytech.com)

License

MIT License - see LICENSE for details

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

globe_server-0.0.54.tar.gz (165.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

globe_server-0.0.54-py3-none-any.whl (182.3 kB view details)

Uploaded Python 3

File details

Details for the file globe_server-0.0.54.tar.gz.

File metadata

  • Download URL: globe_server-0.0.54.tar.gz
  • Upload date:
  • Size: 165.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for globe_server-0.0.54.tar.gz
Algorithm Hash digest
SHA256 88f50a0e8d9d259535ad1c890106e97239f377f5840b4343b8668290e02b2969
MD5 40aec109c61da07803337c7062351ff4
BLAKE2b-256 8d2d5efef964e1a878872bfd3ab769ad14a84a031949f606149d30a06836dceb

See more details on using hashes here.

Provenance

The following attestation bundles were made for globe_server-0.0.54.tar.gz:

Publisher: release.yml on edcatley/Globe-Software

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file globe_server-0.0.54-py3-none-any.whl.

File metadata

  • Download URL: globe_server-0.0.54-py3-none-any.whl
  • Upload date:
  • Size: 182.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for globe_server-0.0.54-py3-none-any.whl
Algorithm Hash digest
SHA256 5e593cc9c1bd86b8351b647b3207b4a855e01b241889242d940dc602acd04984
MD5 6c18ff0a7a464bc94cabd311949c1b88
BLAKE2b-256 856d7cf51815e4eb7dc2da68265d047f1035ae1fadc7ab1a1c7119c176913a37

See more details on using hashes here.

Provenance

The following attestation bundles were made for globe_server-0.0.54-py3-none-any.whl:

Publisher: release.yml on edcatley/Globe-Software

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page