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.42.tar.gz (164.8 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.42-py3-none-any.whl (181.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: globe_server-0.0.42.tar.gz
  • Upload date:
  • Size: 164.8 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.42.tar.gz
Algorithm Hash digest
SHA256 3ab4b12f3007ea97e9e011ad2a72d9be492948bca3a35b01df0dd081e282a193
MD5 20fd3a0763fa1ecf7febf19fc32c37ce
BLAKE2b-256 b993dc54a89d57a054744fb237859f320a8c8c7e5adab923b586f4ad2f9098e2

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: globe_server-0.0.42-py3-none-any.whl
  • Upload date:
  • Size: 181.5 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.42-py3-none-any.whl
Algorithm Hash digest
SHA256 4cc7c97761489ea05b11386acfc385a2e207dcf2b7a6b8326281186db8a24067
MD5 9e62dceeb33df933afe81416a22cd00e
BLAKE2b-256 88e157d0ca0b601b86ad0e1894f18dd0acadeda0758e11a774789a07ef383f59

See more details on using hashes here.

Provenance

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