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.53.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.53-py3-none-any.whl (182.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: globe_server-0.0.53.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.53.tar.gz
Algorithm Hash digest
SHA256 610d72a79a4d8eb30d98a6f894d8a4a898e8aae8e9318a55a6910f217e042f42
MD5 32c18876f832753c9596ae97caa7b649
BLAKE2b-256 48f9e526abe6367f4adb9eac65169e8d333ac600f63ec46a0bec0b2c65121b96

See more details on using hashes here.

Provenance

The following attestation bundles were made for globe_server-0.0.53.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.53-py3-none-any.whl.

File metadata

  • Download URL: globe_server-0.0.53-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.53-py3-none-any.whl
Algorithm Hash digest
SHA256 60a5b09eee2c149d4a61a19f28084943a83d0347ea00ba28b6d87aeff88b0920
MD5 49fa9c480c2a97bee2c4a4fde859363e
BLAKE2b-256 8206839e728d00417804accfcde28194d1141f3130efa768c9c4060a34721a48

See more details on using hashes here.

Provenance

The following attestation bundles were made for globe_server-0.0.53-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