Spaces:
No application file
No application file
FORGE-X: Upload source (fx-1019f20d.zip)
Browse files- README.md +92 -7
- fx-1019f20d/assets/css/admin.css +5 -0
- fx-1019f20d/assets/js/admin.js +10 -0
- fx-1019f20d/fx-1019f20d.php +123 -0
- fx-1019f20d/languages/fx-1019f20d.pot +2 -0
- fx-1019f20d/readme.txt +33 -0
- fx-1019f20d/uninstall.php +6 -0
README.md
CHANGED
|
@@ -1,13 +1,98 @@
|
|
| 1 |
---
|
| 2 |
-
title:
|
| 3 |
-
emoji:
|
| 4 |
-
colorFrom:
|
| 5 |
-
colorTo:
|
| 6 |
sdk: gradio
|
| 7 |
-
sdk_version:
|
| 8 |
-
python_version: '3.13'
|
| 9 |
app_file: app.py
|
| 10 |
pinned: false
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 11 |
---
|
|
|
|
| 12 |
|
| 13 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
---
|
| 2 |
+
title: "DevOps & Infrastructure Client Portal WordPress Plugin"
|
| 3 |
+
emoji: ⚙️
|
| 4 |
+
colorFrom: gray
|
| 5 |
+
colorTo: green
|
| 6 |
sdk: gradio
|
| 7 |
+
sdk_version: 4.44.0
|
|
|
|
| 8 |
app_file: app.py
|
| 9 |
pinned: false
|
| 10 |
+
license: mit
|
| 11 |
+
tags:
|
| 12 |
+
- devops
|
| 13 |
+
- infrastructure
|
| 14 |
+
- automation
|
| 15 |
+
- monitoring
|
| 16 |
+
- lead
|
| 17 |
+
- generation
|
| 18 |
+
- form
|
| 19 |
+
- booking
|
| 20 |
+
- appointment
|
| 21 |
+
- system
|
| 22 |
---
|
| 23 |
+
# DevOps & Infrastructure Client Portal WordPress Plugin
|
| 24 |
|
| 25 |
+
Your clients keep asking for status updates, but you're buried in infrastructure tickets and deployment logs. The DevOps & Infrastructure Client Portal WordPress Plugin turns your WordPress site into a real-time client communication hub—no custom coding, no separate tools, no chaos.
|
| 26 |
+
|
| 27 |
+
This plugin embeds a fully functional client portal directly into WordPress, letting your infrastructure clients track deployments, monitor service status, and submit support tickets without ever leaving your site. You eliminate email ping-pongs, reduce support overhead, and keep clients informed automatically—all while maintaining your infrastructure's security and access controls. It's the bridge between DevOps complexity and client simplicity that actually works.
|
| 28 |
+
|
| 29 |
+
## What's Included
|
| 30 |
+
|
| 31 |
+
- Real-time infrastructure status dashboard—clients see uptime, deployments, and incident alerts at a glance
|
| 32 |
+
- Automated ticket management system integrated with your DevOps workflow (sync with Jira, GitHub, or standalone)
|
| 33 |
+
- Role-based access control—show different infrastructure data to different clients securely
|
| 34 |
+
- Live deployment notifications—clients get instant updates when you push changes or resolve incidents
|
| 35 |
+
- WordPress-native design—no learning curve, works with any WordPress theme, zero technical debt
|
| 36 |
+
|
| 37 |
+
## Who Is This For
|
| 38 |
+
|
| 39 |
+
- DevOps agencies managing multiple client infrastructure accounts who need a lightweight communication layer
|
| 40 |
+
- SaaS companies running custom infrastructure that want clients self-service visibility without VPN access
|
| 41 |
+
- Managed service providers (MSPs) tired of building custom portals and using outdated client-facing tools
|
| 42 |
+
- Solo DevOps consultants who need professionalism without enterprise portal software costs
|
| 43 |
+
|
| 44 |
+
## How It Works
|
| 45 |
+
|
| 46 |
+
Install the plugin on any WordPress site in under 2 minutes—no server config needed. Connect your infrastructure data source (webhooks, API, or manual inputs), set client permissions, and activate. Clients log in with WordPress accounts and instantly see their infrastructure status. You manage everything from a single WordPress admin dashboard.
|
| 47 |
+
|
| 48 |
+
## Frequently Asked Questions
|
| 49 |
+
|
| 50 |
+
**Does this replace my entire DevOps platform?**
|
| 51 |
+
No—it's a client-facing layer on top of your existing infrastructure. It doesn't touch your deployments or monitoring; it just displays what you want clients to see.
|
| 52 |
+
|
| 53 |
+
**Can I connect my existing monitoring tools (Prometheus, DataDog, New Relic)?**
|
| 54 |
+
Yes, via webhooks and APIs. The plugin accepts status data from any source and displays it in a clean client interface.
|
| 55 |
+
|
| 56 |
+
**Is this secure for sensitive infrastructure data?**
|
| 57 |
+
Absolutely. Role-based permissions mean each client sees only their own data. All data is encrypted in transit, and the plugin respects WordPress security standards.
|
| 58 |
+
|
| 59 |
+
**Do I need coding skills to set this up?**
|
| 60 |
+
No. The entire setup is point-and-click. If you can install a WordPress plugin, you can deploy this.
|
| 61 |
+
|
| 62 |
+
**What if I have 50+ clients?**
|
| 63 |
+
The plugin scales. Each client gets their own portal view with independent permissions. Perfect for agencies and MSPs.
|
| 64 |
+
|
| 65 |
+
## What You Get
|
| 66 |
+
|
| 67 |
+
- Instant digital download
|
| 68 |
+
- Complete WordPress plugin with full documentation
|
| 69 |
+
- Free updates for life — pay once, own forever
|
| 70 |
+
- Setup guide and usage instructions
|
| 71 |
+
|
| 72 |
+
**Stop building custom portals and managing client status requests manually—get your DevOps & Infrastructure Client Portal WordPress Plugin today for $38.98 and ship client visibility in minutes.**
|
| 73 |
+
|
| 74 |
+
## 🚀 Usage
|
| 75 |
+
|
| 76 |
+
1. Click **Use in Spaces** above to run the demo directly
|
| 77 |
+
2. Or clone the repository and run locally:
|
| 78 |
+
|
| 79 |
+
```bash
|
| 80 |
+
git clone https://huggingface.co/spaces/WealthFromAI/devops-infrastructure-client-portal-wordpress-plugin-1019
|
| 81 |
+
cd devops-infrastructure-client-portal-wordpress-plugin-1019
|
| 82 |
+
pip install -r requirements.txt
|
| 83 |
+
python app.py
|
| 84 |
+
```
|
| 85 |
+
|
| 86 |
+
## 💰 Pricing
|
| 87 |
+
|
| 88 |
+
- **Demo**: Free on Hugging Face Spaces
|
| 89 |
+
- **Full Source Code**: $38.98
|
| 90 |
+
- Available on [Gumroad](https://gumroad.com) and [Whop](https://whop.com)
|
| 91 |
+
|
| 92 |
+
## 📄 License
|
| 93 |
+
|
| 94 |
+
MIT License — free to use, modify, and distribute.
|
| 95 |
+
|
| 96 |
+
---
|
| 97 |
+
|
| 98 |
+
*Built with [FORGE-X](https://github.com/WealthFromAI) — automated digital product engine*
|
fx-1019f20d/assets/css/admin.css
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
/* fx-1019f20d Admin Styles */
|
| 2 |
+
.fx-1019f20d-wrap { max-width: 800px; }
|
| 3 |
+
.fx-1019f20d-notice { padding: 12px 16px; border-left: 4px solid #0073aa; background: #f0f6fc; margin: 16px 0; border-radius: 4px; }
|
| 4 |
+
.fx-1019f20d-card { background: #fff; border: 1px solid #e0e0e0; border-radius: 6px; padding: 20px; margin-bottom: 16px; box-shadow: 0 1px 3px rgba(0,0,0,.06); }
|
| 5 |
+
.fx-1019f20d-card h2 { margin-top: 0; color: #1d2327; }
|
fx-1019f20d/assets/js/admin.js
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
/* fx-1019f20d Admin JS */
|
| 2 |
+
(function($) {
|
| 3 |
+
'use strict';
|
| 4 |
+
$(document).ready(function() {
|
| 5 |
+
// Status check
|
| 6 |
+
if (typeof fx_1019f20d_vars !== 'undefined') {
|
| 7 |
+
console.log('fx-1019f20d admin loaded.');
|
| 8 |
+
}
|
| 9 |
+
});
|
| 10 |
+
})(jQuery);
|
fx-1019f20d/fx-1019f20d.php
ADDED
|
@@ -0,0 +1,123 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
/**
|
| 3 |
+
* Plugin Name: DevOps & Infrastructure Client Portal WordPress Plugin
|
| 4 |
+
* Description: Secure client login, document sharing, project status updates, and messaging. Professional client experience without custom development.
|
| 5 |
+
* Version: 1.0.0
|
| 6 |
+
* Author: Digital Forge
|
| 7 |
+
* Text Domain: fx-1019f20d
|
| 8 |
+
* License: GPL-2.0+
|
| 9 |
+
*/
|
| 10 |
+
|
| 11 |
+
if ( ! defined( 'ABSPATH' ) ) exit;
|
| 12 |
+
|
| 13 |
+
define( 'FX_1019F20D_VERSION', '1.0.0' );
|
| 14 |
+
define( 'FX_1019F20D_DIR', plugin_dir_path( __FILE__ ) );
|
| 15 |
+
|
| 16 |
+
class Fx1019f20d {
|
| 17 |
+
private static $instance = null;
|
| 18 |
+
|
| 19 |
+
public static function instance() {
|
| 20 |
+
if ( null === self::$instance ) {
|
| 21 |
+
self::$instance = new self();
|
| 22 |
+
}
|
| 23 |
+
return self::$instance;
|
| 24 |
+
}
|
| 25 |
+
|
| 26 |
+
private function __construct() {
|
| 27 |
+
add_action( 'init', [ $this, 'init' ] );
|
| 28 |
+
add_action( 'admin_menu', [ $this, 'admin_menu' ] );
|
| 29 |
+
add_action( 'admin_init', [ $this, 'settings_init' ] );
|
| 30 |
+
add_action( 'rest_api_init', [ $this, 'register_routes' ] );
|
| 31 |
+
add_action( 'admin_enqueue_scripts', [ $this, 'enqueue_admin_assets' ] );
|
| 32 |
+
load_plugin_textdomain( 'fx-1019f20d', false, dirname( plugin_basename( __FILE__ ) ) . '/languages' );
|
| 33 |
+
}
|
| 34 |
+
|
| 35 |
+
public function init() {}
|
| 36 |
+
|
| 37 |
+
public function admin_menu() {
|
| 38 |
+
add_options_page(
|
| 39 |
+
esc_html__( 'DevOps & Infrastructure Client Portal WordPress Plugin Settings', 'fx-1019f20d' ),
|
| 40 |
+
esc_html__( 'DevOps & Infrastructure Client Portal WordPress Plugin', 'fx-1019f20d' ),
|
| 41 |
+
'manage_options',
|
| 42 |
+
'fx-1019f20d-settings',
|
| 43 |
+
[ $this, 'settings_page' ]
|
| 44 |
+
);
|
| 45 |
+
}
|
| 46 |
+
|
| 47 |
+
public function settings_init() {
|
| 48 |
+
register_setting( 'fx-1019f20d_options', 'fx-1019f20d_options', [ $this, 'sanitize_options' ] );
|
| 49 |
+
add_settings_section( 'fx-1019f20d_main', '', '__return_false', 'fx-1019f20d-settings' );
|
| 50 |
+
add_settings_field( 'enabled', esc_html__( 'Enable', 'fx-1019f20d' ), [ $this, 'field_enabled' ], 'fx-1019f20d-settings', 'fx-1019f20d_main' );
|
| 51 |
+
}
|
| 52 |
+
|
| 53 |
+
public function sanitize_options( $input ) {
|
| 54 |
+
$clean = [];
|
| 55 |
+
$clean['enabled'] = ! empty( $input['enabled'] ) ? 1 : 0;
|
| 56 |
+
return $clean;
|
| 57 |
+
}
|
| 58 |
+
|
| 59 |
+
public function field_enabled() {
|
| 60 |
+
$opts = get_option( 'fx-1019f20d_options', [] );
|
| 61 |
+
$val = ! empty( $opts['enabled'] ) ? 1 : 0;
|
| 62 |
+
echo '<input type="checkbox" name="fx-1019f20d_options[enabled]" value="1"' . checked( $val, 1, false ) . ' />';
|
| 63 |
+
}
|
| 64 |
+
|
| 65 |
+
public function settings_page() {
|
| 66 |
+
if ( ! current_user_can( 'manage_options' ) ) return;
|
| 67 |
+
?>
|
| 68 |
+
<div class="wrap">
|
| 69 |
+
<h1><?php echo esc_html( get_admin_page_title() ); ?></h1>
|
| 70 |
+
<form method="post" action="options.php">
|
| 71 |
+
<?php settings_fields( 'fx-1019f20d_options' ); ?>
|
| 72 |
+
<?php do_settings_sections( 'fx-1019f20d-settings' ); ?>
|
| 73 |
+
<?php submit_button(); ?>
|
| 74 |
+
</form>
|
| 75 |
+
</div>
|
| 76 |
+
<?php
|
| 77 |
+
}
|
| 78 |
+
|
| 79 |
+
public function register_routes() {
|
| 80 |
+
register_rest_route( 'fx-1019f20d/v1', '/data', [
|
| 81 |
+
[ 'methods' => 'GET', 'callback' => [ $this, 'rest_get' ], 'permission_callback' => '__return_true' ],
|
| 82 |
+
[ 'methods' => 'POST', 'callback' => [ $this, 'rest_post' ], 'permission_callback' => function() { return current_user_can( 'manage_options' ); } ],
|
| 83 |
+
] );
|
| 84 |
+
}
|
| 85 |
+
|
| 86 |
+
public function rest_get( $request ) {
|
| 87 |
+
return rest_ensure_response( [ 'status' => 'ok', 'plugin' => 'fx-1019f20d' ] );
|
| 88 |
+
}
|
| 89 |
+
|
| 90 |
+
public function rest_post( $request ) {
|
| 91 |
+
$data = $request->get_json_params();
|
| 92 |
+
return rest_ensure_response( [ 'received' => $data ] );
|
| 93 |
+
}
|
| 94 |
+
|
| 95 |
+
public function enqueue_admin_assets( $hook ) {
|
| 96 |
+
if ( 'settings_page_fx-1019f20d-settings' !== $hook ) return;
|
| 97 |
+
wp_enqueue_style( 'fx-1019f20d-admin', plugin_dir_url( __FILE__ ) . 'assets/css/admin.css', [], '1.0.0' );
|
| 98 |
+
wp_enqueue_script( 'fx-1019f20d-admin', plugin_dir_url( __FILE__ ) . 'assets/js/admin.js', [ 'jquery' ], '1.0.0', true );
|
| 99 |
+
wp_localize_script( 'fx-1019f20d-admin', 'fx_1019f20d_vars', [ 'nonce' => wp_create_nonce( 'fx-1019f20d-nonce' ), 'ajax_url' => admin_url( 'admin-ajax.php' ) ] );
|
| 100 |
+
}
|
| 101 |
+
|
| 102 |
+
public static function activate() {
|
| 103 |
+
global $wpdb;
|
| 104 |
+
$table = $wpdb->prefix . 'fx_1019f20d';
|
| 105 |
+
$charset = $wpdb->get_charset_collate();
|
| 106 |
+
$sql = "CREATE TABLE IF NOT EXISTS $table (
|
| 107 |
+
id bigint(20) NOT NULL AUTO_INCREMENT,
|
| 108 |
+
data longtext NOT NULL,
|
| 109 |
+
created_at datetime DEFAULT CURRENT_TIMESTAMP,
|
| 110 |
+
PRIMARY KEY (id)
|
| 111 |
+
) $charset;";
|
| 112 |
+
require_once ABSPATH . 'wp-admin/includes/upgrade.php';
|
| 113 |
+
dbDelta( $sql );
|
| 114 |
+
add_option( 'fx-1019f20d_db_version', '1.0.0' );
|
| 115 |
+
}
|
| 116 |
+
|
| 117 |
+
public static function deactivate() {}
|
| 118 |
+
}
|
| 119 |
+
|
| 120 |
+
register_activation_hook( __FILE__, [ 'Fx1019f20d', 'activate' ] );
|
| 121 |
+
register_deactivation_hook( __FILE__, [ 'Fx1019f20d', 'deactivate' ] );
|
| 122 |
+
|
| 123 |
+
Fx1019f20d::instance();
|
fx-1019f20d/languages/fx-1019f20d.pot
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# DevOps & Infrastructure Client Portal WordPress Plugin Translation Template
|
| 2 |
+
# Generated: 2026-05-05T23:27:39.334886
|
fx-1019f20d/readme.txt
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
=== DevOps & Infrastructure Client Portal WordPress Plugin ===
|
| 2 |
+
Contributors: digitalforge
|
| 3 |
+
Requires at least: 5.8
|
| 4 |
+
Tested up to: 6.5
|
| 5 |
+
Stable tag: 1.0.0
|
| 6 |
+
License: GPLv2 or later
|
| 7 |
+
License URI: https://www.gnu.org/licenses/gpl-2.0.html
|
| 8 |
+
|
| 9 |
+
Secure client login, document sharing, project status updates, and messaging. Professional client experience without custom development.
|
| 10 |
+
|
| 11 |
+
== Description ==
|
| 12 |
+
|
| 13 |
+
Secure client login, document sharing, project status updates, and messaging. Professional client experience without custom development.
|
| 14 |
+
|
| 15 |
+
**Features:**
|
| 16 |
+
|
| 17 |
+
* Core functionality
|
| 18 |
+
|
| 19 |
+
== Installation ==
|
| 20 |
+
|
| 21 |
+
1. Upload the plugin folder to `/wp-content/plugins/`
|
| 22 |
+
2. Activate via WordPress admin > Plugins
|
| 23 |
+
3. Configure via Settings > DevOps & Infrastructure Client Portal WordPress Plugin
|
| 24 |
+
|
| 25 |
+
== Changelog ==
|
| 26 |
+
|
| 27 |
+
= 1.0.0 =
|
| 28 |
+
* Initial release
|
| 29 |
+
|
| 30 |
+
== Upgrade Notice ==
|
| 31 |
+
|
| 32 |
+
= 1.0.0 =
|
| 33 |
+
Initial release.
|
fx-1019f20d/uninstall.php
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
if ( ! defined( 'WP_UNINSTALL_PLUGIN' ) ) exit;
|
| 3 |
+
global $wpdb;
|
| 4 |
+
$wpdb->query( "DROP TABLE IF NOT EXISTS {$wpdb->prefix}fx_1019f20d" );
|
| 5 |
+
delete_option( 'fx-1019f20d_options' );
|
| 6 |
+
delete_option( 'fx-1019f20d_db_version' );
|