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.engineis 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 (
uvorpip). - Automatic Dockerization: If a web framework is detected (
FastAPI,Flask), Xenfra will:- Generate a
Dockerfile,docker-compose.yml, andCaddyfile. - Deploy your application as a container.
- Configure Caddy as a reverse proxy with automatic HTTPS.
- Generate a
🤝 Contributing
Contributions are welcome! Please check our CONTRIBUTING.md for more details.
📄 Created by DevHusnainAi
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file xenfra-0.1.4.tar.gz.
File metadata
- Download URL: xenfra-0.1.4.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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c046d5154e8722b71d461b4e4fc43c603b5c6f268779d582e1f10897552f9a8b
|
|
| MD5 |
859560eda6102b9dc23c5aeaef3051ce
|
|
| BLAKE2b-256 |
d30099d0a4d903d13fbb9f3a44f7749d9d0b325ed3e351664d7c8d938c8881aa
|
File details
Details for the file xenfra-0.1.4-py3-none-any.whl.
File metadata
- Download URL: xenfra-0.1.4-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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
86af3aabf39d80625887e0b0cb11e62b2c2f4948160bdd60db9a43e1d5d6cdba
|
|
| MD5 |
a3ee7ce433bc2d7852121e24e13beb7f
|
|
| BLAKE2b-256 |
8c45b7119fa3bff25fd7d12537f602e40775abc77aa3cbd42b43ff664c07ef70
|