Skip to main content

A 'Zen Mode' infrastructure engine for Python developers.

Project description

🧘 Xenfra: Infrastructure in Zen Mode

Xenfra is a modular infrastructure engine for Python developers that automates the deployment of applications to DigitalOcean. It is designed as a library first, with a beautiful and interactive CLI as the default frontend.

It handles the complexity of server provisioning, context-aware configuration, Dockerization, and automatic HTTPS, allowing you to focus on your code.

✨ Core Philosophy

  • Engine as the Brain: xenfra.engine is the core library. It owns the DigitalOcean API, the SSH "Auto-Heal" retry loops, and the Dockerizer services. It is stateful, robust, and can be imported into any Python project.
  • Clients as the Face: Frontends like the default CLI (xenfra.cli) are thin, stateless clients responsible only for user interaction.
  • Zen Mode: If a server setup fails due to common issues like a locked package manager, the Engine automatically fixes it without exposing raw errors to the user.

🚀 Quickstart: As a Library

This demonstrates the power of Xenfra's engine for programmatic infrastructure management.

1. Installation

# Install from PyPI (once published)
pip install xenfra

2. Prerequisites

Ensure your DigitalOcean API token is available as an environment variable:

export DIGITAL_OCEAN_TOKEN="your_secret_token_here"

3. Programmatic Usage

from xenfra.engine import InfraEngine

# Optional: a logger to receive status updates
def my_logger(message):
    print(f"[My App] {message}")

try:
    # The engine automatically finds and validates the API token
    engine = InfraEngine()

    # Define the server and deploy
    result = engine.deploy_server(
        name="my-app-server",
        region="nyc3",
        size="s-1vcpu-1gb",
        image="ubuntu-24-04-x64",
        logger=my_logger
    )

    print(f"🎉 Deployment successful! IP Address: {result.get('ip')}")

except Exception as e:
    print(f"❌ Deployment failed: {e}")

💻 CLI Usage

Xenfra also provides a beautiful, interactive CLI for manual control.

1. Installation

pip install xenfra

2. Configuration

Create a .env file in your project root with your DigitalOcean token:

DIGITAL_OCEAN_TOKEN=dop_v1_your_token_here

3. Run the CLI

Once installed, simply run the xenfra command:

xenfra

This will launch the interactive menu where you can:

  • 🚀 Deploy New Server: A guided workflow to provision and deploy your application.
  • 📋 List Active Servers: View your current DigitalOcean droplets.
  • 🧨 Destroy a Server: Decommission servers you no longer need.

📦 Supported Frameworks & Features

  • Smart Context Detection: Automatically detects your package manager (uv or pip).
  • Automatic Dockerization: If a web framework is detected (FastAPI, Flask), Xenfra will:
    • Generate a Dockerfile, docker-compose.yml, and Caddyfile.
    • Deploy your application as a container.
    • Configure Caddy as a reverse proxy with automatic HTTPS.

🤝 Contributing

Contributions are welcome! Please check our CONTRIBUTING.md for more details.

📄 Created by DevHusnainAi

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

xenfra-0.1.2.tar.gz (11.2 kB view details)

Uploaded Source

Built Distribution

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

xenfra-0.1.2-py3-none-any.whl (13.9 kB view details)

Uploaded Python 3

File details

Details for the file xenfra-0.1.2.tar.gz.

File metadata

  • Download URL: xenfra-0.1.2.tar.gz
  • Upload date:
  • Size: 11.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for xenfra-0.1.2.tar.gz
Algorithm Hash digest
SHA256 39a8c446ff5d3fcd96cd4c8c18b2f06b6f51ad6734ea1d758f78235545727e1b
MD5 05e31a89d5c49882ec849b0b3228ff5a
BLAKE2b-256 a4c68a2160d4ede64dec1d19607bad30264e547dea80a9e982074eac5c824427

See more details on using hashes here.

File details

Details for the file xenfra-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: xenfra-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 13.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for xenfra-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 8adadb96a1c1b7273ec73625468d995e01dcbb07872530d73c0490683551c909
MD5 4ed5ad7ccec50113c1bb2af53494f48d
BLAKE2b-256 ef85886aba2c1e44c27720c01e0c444ae01e260faed37756de49546ffbf9bbad

See more details on using hashes here.

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