feat: rename app provider to application provider across codebase and update terminology
This commit is contained in:
@@ -106,7 +106,7 @@ impl DashboardController {
|
||||
if let Ok(content) = std::fs::read_to_string(&file_path) {
|
||||
if let Ok(user_data) = serde_json::from_str::<crate::services::user_persistence::UserPersistentData>(&content) {
|
||||
// Count deployments for this app provider's apps
|
||||
for deployment in &user_data.app_deployments {
|
||||
for deployment in &user_data.application_deployments {
|
||||
// Check if this deployment belongs to an app from our app provider
|
||||
// We need to get the app provider's apps to match
|
||||
let provider_apps = UserPersistence::get_user_apps(app_provider_email);
|
||||
@@ -512,8 +512,8 @@ impl DashboardController {
|
||||
render_template(&tmpl, "dashboard/resource_provider.html", &ctx)
|
||||
}
|
||||
|
||||
/// Renders the app provider section of the dashboard
|
||||
pub async fn app_provider_section(tmpl: web::Data<Tera>, session: Session) -> Result<impl Responder> {
|
||||
/// Renders the application provider section of the dashboard
|
||||
pub async fn application_provider_section(tmpl: web::Data<Tera>, session: Session) -> Result<impl Responder> {
|
||||
let mut ctx = crate::models::builders::ContextBuilder::new()
|
||||
.active_page("dashboard")
|
||||
.build();
|
||||
@@ -547,7 +547,7 @@ impl DashboardController {
|
||||
}
|
||||
|
||||
// Load fresh persistent deployments
|
||||
let fresh_deployments = crate::services::user_persistence::UserPersistence::get_user_app_deployments(&email);
|
||||
let fresh_deployments = crate::services::user_persistence::UserPersistence::get_user_application_deployments(&email);
|
||||
|
||||
// Only count deployments for apps published by this user
|
||||
let user_published_app_ids: std::collections::HashSet<String> = fresh_apps.iter().map(|a| a.id.clone()).collect();
|
||||
@@ -2854,8 +2854,8 @@ impl DashboardController {
|
||||
|
||||
|
||||
|
||||
/// API endpoint to return app provider dashboard data as JSON
|
||||
pub async fn app_provider_data_api(session: Session) -> Result<impl Responder> {
|
||||
/// API endpoint to return application provider dashboard data as JSON
|
||||
pub async fn application_provider_data_api(session: Session) -> Result<impl Responder> {
|
||||
|
||||
// Get user email for debugging
|
||||
let user_email = session.get::<String>("user_email")
|
||||
@@ -2875,7 +2875,7 @@ impl DashboardController {
|
||||
}
|
||||
}
|
||||
|
||||
let fresh_deployments = UserPersistence::get_user_app_deployments(&user_email);
|
||||
let fresh_deployments = UserPersistence::get_user_application_deployments(&user_email);
|
||||
|
||||
// Load user persistent data
|
||||
if let Some(user) = Self::load_user_with_persistent_data(&session) {
|
||||
@@ -5311,7 +5311,7 @@ impl DashboardController {
|
||||
};
|
||||
|
||||
// Load user's app deployments
|
||||
let deployments = UserPersistence::get_user_app_deployments(&user_email);
|
||||
let deployments = UserPersistence::get_user_application_deployments(&user_email);
|
||||
|
||||
// Find the specific deployment
|
||||
if let Some(deployment) = deployments.iter().find(|d| d.id == deployment_id) {
|
||||
|
@@ -1376,8 +1376,8 @@ pub fn create_marketplace_product_from_app(app: &crate::models::user::PublishedA
|
||||
.category_id("application")
|
||||
.base_price(rust_decimal::Decimal::from(app.monthly_revenue_usd.max(rust_decimal::Decimal::ONE))) // Use monthly revenue as base price, minimum $1
|
||||
.base_currency("USD")
|
||||
.provider_id("user-app-provider")
|
||||
.provider_name("App Provider")
|
||||
.provider_id("user-application-provider")
|
||||
.provider_name("Application Provider")
|
||||
.availability(availability)
|
||||
.metadata(metadata)
|
||||
.add_attribute("app_type", ProductAttribute {
|
||||
|
@@ -128,8 +128,8 @@ impl PublicController {
|
||||
render_template(&tmpl, "legal/terms-service-providers.html", &ctx)
|
||||
}
|
||||
|
||||
/// Renders the solution providers terms page
|
||||
pub async fn terms_solution_providers(tmpl: web::Data<Tera>, session: Session) -> Result<impl Responder> {
|
||||
/// Renders the application providers terms page
|
||||
pub async fn terms_application_providers(tmpl: web::Data<Tera>, session: Session) -> Result<impl Responder> {
|
||||
let mut ctx = crate::models::builders::ContextBuilder::new()
|
||||
.build();
|
||||
ctx.insert("active_page", "terms");
|
||||
@@ -145,7 +145,7 @@ impl PublicController {
|
||||
}
|
||||
}
|
||||
|
||||
render_template(&tmpl, "legal/terms-solution-providers.html", &ctx)
|
||||
render_template(&tmpl, "legal/terms-application-providers.html", &ctx)
|
||||
}
|
||||
|
||||
/// Renders the users terms page
|
||||
|
@@ -108,7 +108,7 @@ pub fn configure_routes(cfg: &mut web::ServiceConfig) {
|
||||
.route("/dashboard/slice-rentals/{id}", web::delete().to(DashboardController::cancel_slice_rental))
|
||||
.route("/dashboard/user/slice-rentals/{id}", web::post().to(DashboardController::manage_slice_rental))
|
||||
.route("/dashboard/resource_provider-data", web::get().to(DashboardController::resource_provider_data_api))
|
||||
.route("/dashboard/app-provider-data", web::get().to(DashboardController::app_provider_data_api))
|
||||
.route("/dashboard/application-provider-data", web::get().to(DashboardController::application_provider_data_api))
|
||||
.route("/dashboard/slice-products", web::get().to(DashboardController::get_slice_products))
|
||||
.route("/dashboard/slice-products", web::post().to(DashboardController::create_slice_product))
|
||||
.route("/dashboard/slice-products/{id}", web::delete().to(DashboardController::delete_slice_product))
|
||||
@@ -261,7 +261,7 @@ pub fn configure_routes(cfg: &mut web::ServiceConfig) {
|
||||
.route("", web::get().to(DashboardController::index))
|
||||
.route("/user", web::get().to(DashboardController::user_section))
|
||||
.route("/resource_provider", web::get().to(DashboardController::resource_provider_section))
|
||||
.route("/app-provider", web::get().to(DashboardController::app_provider_section))
|
||||
.route("/application-provider", web::get().to(DashboardController::application_provider_section))
|
||||
.route("/service-provider", web::get().to(DashboardController::service_provider_section))
|
||||
|
||||
// Shopping routes - embedded in dashboard
|
||||
@@ -284,7 +284,7 @@ pub fn configure_routes(cfg: &mut web::ServiceConfig) {
|
||||
.route("/terms", web::get().to(PublicController::terms))
|
||||
.route("/terms/resource_providers", web::get().to(PublicController::terms_resource_providers))
|
||||
.route("/terms/service-providers", web::get().to(PublicController::terms_service_providers))
|
||||
.route("/terms/solution-providers", web::get().to(PublicController::terms_solution_providers))
|
||||
.route("/terms/application-providers", web::get().to(PublicController::terms_application_providers))
|
||||
.route("/terms/users", web::get().to(PublicController::terms_users))
|
||||
.route("/changelog", web::get().to(PublicController::changelog))
|
||||
.route("/roadmap", web::get().to(PublicController::roadmap));
|
||||
|
@@ -626,8 +626,8 @@ impl OrderService {
|
||||
order.set_payment_details(payment_details.clone());
|
||||
}
|
||||
|
||||
// PHASE 1: Create app deployments for successful app orders
|
||||
if let Err(e) = self.create_app_deployments_from_order(&order) {
|
||||
// PHASE 1: Create application deployments for successful app orders
|
||||
if let Err(e) = self.create_application_deployments_from_order(&order) {
|
||||
}
|
||||
|
||||
// PHASE 2: Create service bookings for successful service orders
|
||||
@@ -780,8 +780,8 @@ impl OrderService {
|
||||
stats
|
||||
}
|
||||
|
||||
/// PHASE 1: Create app deployments when apps are successfully ordered
|
||||
fn create_app_deployments_from_order(&self, order: &Order) -> Result<(), String> {
|
||||
/// PHASE 1: Create application deployments when apps are successfully ordered
|
||||
fn create_application_deployments_from_order(&self, order: &Order) -> Result<(), String> {
|
||||
use crate::services::user_persistence::{UserPersistence, AppDeployment};
|
||||
use crate::models::user::ResourceUtilization;
|
||||
use chrono::Utc;
|
||||
@@ -837,14 +837,14 @@ impl OrderService {
|
||||
.build()
|
||||
.unwrap();
|
||||
|
||||
// Add deployment to app provider's data
|
||||
if let Err(e) = UserPersistence::add_user_app_deployment(&app_provider_email, deployment.clone()) {
|
||||
// Add deployment to application provider's data
|
||||
if let Err(e) = UserPersistence::add_user_application_deployment(&app_provider_email, deployment.clone()) {
|
||||
} else {
|
||||
}
|
||||
|
||||
// Also add deployment to customer's data (for future user dashboard)
|
||||
if customer_email != "guest" {
|
||||
if let Err(e) = UserPersistence::add_user_app_deployment(&customer_email, deployment) {
|
||||
if let Err(e) = UserPersistence::add_user_application_deployment(&customer_email, deployment) {
|
||||
} else {
|
||||
}
|
||||
}
|
||||
|
@@ -41,7 +41,7 @@ pub struct UserPersistentData {
|
||||
pub slas: Vec<ServiceLevelAgreement>,
|
||||
// App provider data
|
||||
pub apps: Vec<crate::models::user::PublishedApp>,
|
||||
pub app_deployments: Vec<AppDeployment>,
|
||||
pub application_deployments: Vec<AppDeployment>,
|
||||
// Account deletion tracking
|
||||
pub deleted: Option<bool>,
|
||||
pub deleted_at: Option<String>,
|
||||
@@ -137,7 +137,7 @@ impl Default for UserPersistentData {
|
||||
availability: None,
|
||||
slas: Vec::new(),
|
||||
apps: Vec::new(),
|
||||
app_deployments: Vec::new(),
|
||||
application_deployments: Vec::new(),
|
||||
deleted: None,
|
||||
deleted_at: None,
|
||||
deletion_reason: None,
|
||||
@@ -1247,22 +1247,22 @@ impl UserPersistence {
|
||||
}
|
||||
|
||||
/// Get app deployments for a user
|
||||
pub fn get_user_app_deployments(user_email: &str) -> Vec<AppDeployment> {
|
||||
pub fn get_user_application_deployments(user_email: &str) -> Vec<AppDeployment> {
|
||||
if let Some(data) = Self::load_user_data(user_email) {
|
||||
data.app_deployments
|
||||
data.application_deployments
|
||||
} else {
|
||||
Vec::default()
|
||||
}
|
||||
}
|
||||
|
||||
/// Add a new app deployment
|
||||
pub fn add_user_app_deployment(
|
||||
pub fn add_user_application_deployment(
|
||||
user_email: &str,
|
||||
deployment: AppDeployment
|
||||
) -> Result<(), Box<dyn std::error::Error>> {
|
||||
let mut data = crate::models::builders::SessionDataBuilder::load_or_create(user_email);
|
||||
|
||||
data.app_deployments.push(deployment.clone());
|
||||
data.application_deployments.push(deployment.clone());
|
||||
Self::save_user_data(&data)?;
|
||||
Ok(())
|
||||
}
|
||||
|
@@ -181,9 +181,9 @@ impl UserService {
|
||||
/// Get user's purchased applications (for user dashboard) - derived from deployments
|
||||
pub fn get_user_applications(&self, user_email: &str) -> Vec<crate::models::user::PublishedApp> {
|
||||
if let Some(persistent_data) = UserPersistence::load_user_data(user_email) {
|
||||
// Convert app deployments to application view for user dashboard
|
||||
// Convert application deployments to application view for user dashboard
|
||||
// IMPORTANT: Only show deployments where THIS user is the customer
|
||||
let purchased_apps: Vec<crate::models::user::PublishedApp> = persistent_data.app_deployments
|
||||
let purchased_apps: Vec<crate::models::user::PublishedApp> = persistent_data.application_deployments
|
||||
.into_iter()
|
||||
.filter(|d| d.status == "Active" && d.customer_email == user_email)
|
||||
.map(|deployment| crate::models::user::PublishedApp {
|
||||
|
@@ -566,7 +566,7 @@ document.addEventListener('DOMContentLoaded', function() {
|
||||
}
|
||||
|
||||
// Load app provider data via apiJson
|
||||
window.apiJson('/api/dashboard/app-provider-data', { cache: 'no-store' })
|
||||
window.apiJson('/api/dashboard/application-provider-data', { cache: 'no-store' })
|
||||
.then(data => {
|
||||
window.__appProviderDashboard = new window.AppProviderDashboard(data || {});
|
||||
})
|
@@ -508,7 +508,7 @@ class DashboardMessaging {
|
||||
const colors = {
|
||||
'service_booking': 'primary',
|
||||
'slice_rental': 'success',
|
||||
'app_deployment': 'info',
|
||||
'application_deployment': 'info',
|
||||
'general': 'secondary',
|
||||
'support': 'warning'
|
||||
};
|
||||
|
@@ -146,7 +146,7 @@ class DemoWorkflow {
|
||||
showNotification('Demo: Navigating to App Provider dashboard...', 'info');
|
||||
|
||||
setTimeout(() => {
|
||||
if (window.location.pathname !== '/dashboard/app-provider') {
|
||||
if (window.location.pathname !== '/dashboard/application-provider') {
|
||||
showNotification('Please navigate to the App Provider dashboard to continue the demo', 'warning');
|
||||
return;
|
||||
}
|
||||
|
@@ -81,7 +81,7 @@ impl DataValidator {
|
||||
("services", Value::Array(vec![])),
|
||||
("service_requests", Value::Array(vec![])),
|
||||
("apps", Value::Array(vec![])),
|
||||
("app_deployments", Value::Array(vec![])),
|
||||
("application_deployments", Value::Array(vec![])),
|
||||
("nodes", Value::Array(vec![])),
|
||||
("resource_provider_earnings", Value::Array(vec![])),
|
||||
("user_activities", Value::Array(vec![])),
|
||||
|
@@ -239,7 +239,7 @@ null
|
||||
{% endif %}
|
||||
</script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/chart.js@3.7.1/dist/chart.min.js"></script>
|
||||
<script src="/static/js/dashboard-app-provider.js"></script>
|
||||
<script src="/static/js/dashboard-application-provider.js"></script>
|
||||
<style>
|
||||
/* Ensure charts have consistent sizes */
|
||||
.card-body {
|
@@ -127,11 +127,11 @@
|
||||
</div>
|
||||
<div class="col-md-6 col-lg-3 mb-4">
|
||||
<div class="dashboard-card">
|
||||
<span class="badge bg-info badge-role">APP PROVIDER</span>
|
||||
<h4>App Provider Dashboard</h4>
|
||||
<span class="badge bg-info badge-role">APPLICATION PROVIDER</span>
|
||||
<h4>Application Provider Dashboard</h4>
|
||||
<p>Develop, deploy, and manage applications for the TF ecosystem.</p>
|
||||
<div class="d-grid">
|
||||
<a href="/dashboard/app-provider" class="btn btn-sm btn-outline-info">Access App Provider Dashboard</a>
|
||||
<a href="/dashboard/application-provider" class="btn btn-sm btn-outline-info">Access Application Provider Dashboard</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@@ -34,9 +34,9 @@
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link {% if active_section == 'app_provider' %}active{% endif %}" href="/dashboard/app-provider">
|
||||
<a class="nav-link {% if active_section == 'application_provider' %}active{% endif %}" href="/dashboard/application-provider">
|
||||
<i class="bi bi-app me-1"></i>
|
||||
App Provider
|
||||
Application Provider
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
|
@@ -1,10 +1,10 @@
|
||||
{% extends "docs/layout.html" %}
|
||||
|
||||
{% block title %}Application Solutions - Project Mycelium{% endblock %}
|
||||
{% block title %}Agentic Apps - Project Mycelium{% endblock %}
|
||||
|
||||
{% block docs_content %}
|
||||
<div class="my-4">
|
||||
<h1>Application Solutions</h1>
|
||||
<h1>Agentic Apps</h1>
|
||||
<p class="lead">Discover self-healing applications that maintain sovereignty while offering convenience.</p>
|
||||
|
||||
<div class="doc-section">
|
||||
@@ -18,7 +18,7 @@
|
||||
</div>
|
||||
<div>
|
||||
<h5 class="alert-heading">The ThreeFold Difference</h5>
|
||||
<p class="mb-0">Unlike traditional SaaS offerings that require surrendering control of your data to the provider, ThreeFold Application Solutions run on compute resources that remain under your sovereign control, while the solution provider manages only the application layer.</p>
|
||||
<p class="mb-0">Unlike traditional SaaS offerings that require surrendering control of your data to the provider, ThreeFold Application Solutions run on compute resources that remain under your sovereign control, while the application provider manages only the application layer.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -26,7 +26,7 @@
|
||||
|
||||
<div class="doc-section">
|
||||
<h2>Application Categories</h2>
|
||||
<p>The Project Mycelium offers a diverse range of application solutions across multiple categories:</p>
|
||||
<p>The Project Mycelium offers a diverse range of applications across multiple categories:</p>
|
||||
|
||||
<div class="row row-cols-1 row-cols-md-2 row-cols-lg-3 g-4 mb-4">
|
||||
<div class="col">
|
||||
@@ -88,7 +88,7 @@
|
||||
|
||||
<div class="doc-section">
|
||||
<h2>How It Works</h2>
|
||||
<p>Application Solutions on the Project Mycelium function through a unique partnership model between users and solution providers:</p>
|
||||
<p>Application Solutions on the Project Mycelium function through a unique partnership model between users and application providers:</p>
|
||||
|
||||
<div class="row align-items-center mb-4">
|
||||
<div class="col-md-6">
|
||||
@@ -105,7 +105,7 @@
|
||||
<li class="list-group-item d-flex">
|
||||
<div>
|
||||
<strong>Solution Deployment</strong>
|
||||
<p class="mb-0 text-muted">The solution provider deploys their application on your sovereign compute resources.</p>
|
||||
<p class="mb-0 text-muted">The application provider deploys their application on your sovereign compute resources.</p>
|
||||
</div>
|
||||
</li>
|
||||
<li class="list-group-item d-flex">
|
||||
@@ -117,7 +117,7 @@
|
||||
<li class="list-group-item d-flex">
|
||||
<div>
|
||||
<strong>Payment Model</strong>
|
||||
<p class="mb-0 text-muted">You pay the solution provider in USD Credits based on the agreed-upon pricing model.</p>
|
||||
<p class="mb-0 text-muted">You pay the application provider in USD Credits based on the agreed-upon pricing model.</p>
|
||||
</div>
|
||||
</li>
|
||||
</ol>
|
||||
@@ -131,7 +131,7 @@
|
||||
</div>
|
||||
<div>
|
||||
<h5 class="alert-heading">Sovereignty Maintained</h5>
|
||||
<p class="mb-0">Your data and applications remain on infrastructure under your control. The solution provider cannot access your data without your explicit permission, and you can revoke their management access at any time.</p>
|
||||
<p class="mb-0">Your data and applications remain on infrastructure under your control. The application provider cannot access your data without your explicit permission, and you can revoke their management access at any time.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -192,7 +192,7 @@
|
||||
</div>
|
||||
|
||||
<div class="doc-section">
|
||||
<h2>Solution Provider Certification</h2>
|
||||
<h2>Application Provider Certification</h2>
|
||||
<p>Solution providers in the Project Mycelium undergo a certification process to ensure quality and reliability:</p>
|
||||
|
||||
<div class="table-responsive">
|
||||
|
@@ -60,7 +60,7 @@
|
||||
<tr>
|
||||
<td><strong>Application Solutions</strong></td>
|
||||
<td>Pre-configured, self-healing applications</td>
|
||||
<td>Credits paid to solution providers for application management while users maintain sovereignty</td>
|
||||
<td>Credits paid to application providers for application management while users maintain sovereignty</td>
|
||||
<td><a href="/docs/applications" class="btn btn-sm btn-outline-primary">Learn More</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@@ -54,7 +54,7 @@
|
||||
<li class="nav-item">
|
||||
<a class="nav-link {% if active_section == 'applications' %}active{% endif %}" href="/docs/applications">
|
||||
<i class="bi bi-app me-1"></i>
|
||||
Application Solutions
|
||||
Agentic Apps
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
|
@@ -46,7 +46,7 @@
|
||||
<tr>
|
||||
<td><strong>Application Solutions</strong></td>
|
||||
<td>Pre-configured, self-healing applications</td>
|
||||
<td>Users provide slices to solution providers while maintaining sovereignty</td>
|
||||
<td>Users provide slices to application providers while maintaining sovereignty</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Human Energy Services</strong></td>
|
||||
|
@@ -118,9 +118,9 @@
|
||||
<p>Unlike traditional SaaS offerings where you surrender control to the provider, ThreeFold's model maintains your sovereignty in two ways:</p>
|
||||
<ol class="mb-3">
|
||||
<li><strong>Direct Management:</strong> Manage your own compute slices directly for complete control</li>
|
||||
<li><strong>Sovereign Allocation:</strong> Allocate your sovereign compute slices to solution providers who deploy and manage applications on your infrastructure</li>
|
||||
<li><strong>Sovereign Allocation:</strong> Allocate your sovereign compute slices to application providers who deploy and manage applications on your infrastructure</li>
|
||||
</ol>
|
||||
<p>With application solutions, you maintain control because:</p>
|
||||
<p>With applications, you maintain control because:</p>
|
||||
<ul>
|
||||
<li>You still own and control the underlying resources</li>
|
||||
<li>Your data remains on infrastructure under your control</li>
|
||||
|
@@ -1,6 +1,6 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}Solution Providers Terms and Conditions - Project Mycelium{% endblock %}
|
||||
{% block title %}Application Providers Terms and Conditions - Project Mycelium{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="container my-5">
|
||||
@@ -9,50 +9,50 @@
|
||||
<nav aria-label="breadcrumb">
|
||||
<ol class="breadcrumb">
|
||||
<li class="breadcrumb-item"><a href="/terms">Terms and Conditions</a></li>
|
||||
<li class="breadcrumb-item active" aria-current="page">Solution Providers</li>
|
||||
<li class="breadcrumb-item active" aria-current="page">Application Providers</li>
|
||||
</ol>
|
||||
</nav>
|
||||
|
||||
<div class="d-flex align-items-center mb-4">
|
||||
<i class="bi bi-box-seam fs-1 me-3 text-info"></i>
|
||||
<h1>Solution Providers Terms and Conditions</h1>
|
||||
<h1>Application Providers Terms and Conditions</h1>
|
||||
</div>
|
||||
<p class="lead mb-4">Last updated: May 22, 2025</p>
|
||||
|
||||
<div class="alert alert-info">
|
||||
<p class="mb-0">These terms specifically apply to Solution Providers on the Project Mycelium who develop and deploy applications and solutions on the ThreeFold Grid.</p>
|
||||
<p class="mb-0">These terms specifically apply to Application Providers on the Project Mycelium who develop and deploy applications and applications on the ThreeFold Grid.</p>
|
||||
</div>
|
||||
|
||||
<h2>1. Definition of a Solution Provider</h2>
|
||||
<p>A "Solution Provider" refers to any individual or entity that develops, deploys, and maintains software applications, platforms, or digital solutions on the Project Mycelium. Solution Providers create the applications and services that run on the ThreeFold Grid's infrastructure.</p>
|
||||
<p>A "Solution Provider" refers to any individual or entity that develops, deploys, and maintains software applications, platforms, or digital applications on the Project Mycelium. Application Providers create the applications and services that run on the ThreeFold Grid's infrastructure.</p>
|
||||
|
||||
<h2>2. Solution Provider Responsibilities</h2>
|
||||
<p>As a Solution Provider on the Project Mycelium, you agree to:</p>
|
||||
<ul>
|
||||
<li>Provide accurate descriptions of your applications and solutions</li>
|
||||
<li>Maintain your deployed solutions with regular updates and security patches</li>
|
||||
<li>Ensure your solutions comply with best practices for security and data protection</li>
|
||||
<li>Provide clear documentation for users of your solutions</li>
|
||||
<li>Provide accurate descriptions of your applications and applications</li>
|
||||
<li>Maintain your deployed applications with regular updates and security patches</li>
|
||||
<li>Ensure your applications comply with best practices for security and data protection</li>
|
||||
<li>Provide clear documentation for users of your applications</li>
|
||||
<li>Respond promptly to technical issues and bug reports</li>
|
||||
<li>Set fair and transparent pricing for your solutions</li>
|
||||
<li>Set fair and transparent pricing for your applications</li>
|
||||
</ul>
|
||||
|
||||
<h2>3. Reputation System and Staking</h2>
|
||||
<p>The Project Mycelium employs a reputation system that affects solution provider visibility and benefits:</p>
|
||||
<p>The Project Mycelium employs a reputation system that affects application provider visibility and benefits:</p>
|
||||
<ul>
|
||||
<li>Your reputation score is calculated based on user ratings, solution performance, security metrics, and staked Credits</li>
|
||||
<li>Your reputation score is calculated based on user ratings, application performance, security metrics, and staked Credits</li>
|
||||
<li>Higher reputation scores may result in improved visibility in marketplace listings</li>
|
||||
<li>Staking Credits increases your reputation score and may qualify you for reduced platform fees</li>
|
||||
<li>Security vulnerabilities or performance issues may result in reputation penalties</li>
|
||||
</ul>
|
||||
|
||||
<h2>4. Intellectual Property Rights</h2>
|
||||
<p>Regarding the intellectual property of your solutions:</p>
|
||||
<p>Regarding the intellectual property of your applications:</p>
|
||||
<ul>
|
||||
<li>You retain all intellectual property rights to your applications and solutions</li>
|
||||
<li>You grant ThreeFold a limited license to display, promote, and facilitate access to your solutions on the marketplace</li>
|
||||
<li>You are responsible for ensuring your solutions do not infringe on third-party intellectual property rights</li>
|
||||
<li>You may choose the appropriate licensing model for your solutions (open source, proprietary, etc.)</li>
|
||||
<li>You retain all intellectual property rights to your applications and applications</li>
|
||||
<li>You grant ThreeFold a limited license to display, promote, and facilitate access to your applications on the marketplace</li>
|
||||
<li>You are responsible for ensuring your applications do not infringe on third-party intellectual property rights</li>
|
||||
<li>You may choose the appropriate licensing model for your applications (open source, proprietary, etc.)</li>
|
||||
</ul>
|
||||
|
||||
<h2>5. Application Deployment and Credits</h2>
|
||||
@@ -60,20 +60,20 @@
|
||||
<ul>
|
||||
<li>All transactions on the marketplace use USD Credits as the medium of exchange</li>
|
||||
<li>Credits have a fixed value of 1.0 USD per Credit</li>
|
||||
<li>Solution Providers receive Credits from users who utilize their applications</li>
|
||||
<li>Application Providers receive Credits from users who utilize their applications</li>
|
||||
<li>Earned Credits can be exchanged for fiat currencies or other supported tokens through the available liquidity pools</li>
|
||||
<li>Platform fees may apply to transactions as detailed in your Solution Provider dashboard</li>
|
||||
<li>You are responsible for the resource utilization costs of your deployed solutions</li>
|
||||
<li>You are responsible for the resource utilization costs of your deployed applications</li>
|
||||
</ul>
|
||||
|
||||
<h2>6. Solution Listings and Distribution</h2>
|
||||
<p>Regarding your solution listings on the marketplace:</p>
|
||||
<p>Regarding your application listings on the marketplace:</p>
|
||||
<ul>
|
||||
<li>All solution descriptions must comply with the Marketplace Content Guidelines</li>
|
||||
<li>False or misleading claims about solutions are prohibited</li>
|
||||
<li>All application descriptions must comply with the Marketplace Content Guidelines</li>
|
||||
<li>False or misleading claims about applications are prohibited</li>
|
||||
<li>ThreeFold reserves the right to remove or request modifications to listings that violate guidelines</li>
|
||||
<li>You may utilize marketplace promotional tools to increase the visibility of your solutions</li>
|
||||
<li>You may offer free trials, freemium models, or paid solutions according to your business model</li>
|
||||
<li>You may utilize marketplace promotional tools to increase the visibility of your applications</li>
|
||||
<li>You may offer free trials, freemium models, or paid applications according to your business model</li>
|
||||
</ul>
|
||||
|
||||
<h2>7. API Usage and Integration</h2>
|
||||
@@ -91,12 +91,12 @@
|
||||
<li>Security vulnerabilities that put user data at risk</li>
|
||||
<li>Consistent performance issues that significantly impact user experience</li>
|
||||
<li>Violations of content guidelines or terms of service</li>
|
||||
<li>Fraudulent activities or misrepresentation of solution capabilities</li>
|
||||
<li>Fraudulent activities or misrepresentation of application capabilities</li>
|
||||
<li>Slashing penalties may include reputation reduction, temporary suspension of listings, or in severe cases, permanent removal from the marketplace</li>
|
||||
</ul>
|
||||
|
||||
<h2>9. Updates and Maintenance</h2>
|
||||
<p>Regarding the ongoing maintenance of your solutions:</p>
|
||||
<p>Regarding the ongoing maintenance of your applications:</p>
|
||||
<ul>
|
||||
<li>You are responsible for providing regular updates and maintenance</li>
|
||||
<li>Critical security updates should be prioritized and deployed promptly</li>
|
||||
@@ -107,10 +107,10 @@
|
||||
<h2>10. Termination of Solution Provider Status</h2>
|
||||
<p>You may cease being a Solution Provider by:</p>
|
||||
<ul>
|
||||
<li>Removing all solution listings from the marketplace</li>
|
||||
<li>Removing all application listings from the marketplace</li>
|
||||
<li>Providing a reasonable migration path or notice to existing users</li>
|
||||
<li>Completing all outstanding obligations to users</li>
|
||||
<li>Providing notice through your dashboard at least 30 days prior to solution removal</li>
|
||||
<li>Providing notice through your dashboard at least 30 days prior to application removal</li>
|
||||
</ul>
|
||||
|
||||
<div class="alert alert-warning mt-5">
|
@@ -15,7 +15,7 @@
|
||||
</div>
|
||||
<div>
|
||||
<h5 class="alert-heading">How Application Solutions Work</h5>
|
||||
<p>ThreeFold Application Solutions use a unique model: You provide the compute resources (Slices), while solution providers manage the applications. This ensures you maintain sovereignty over your infrastructure while benefiting from professional management.</p>
|
||||
<p>ThreeFold Application Solutions use a unique model: You provide the compute resources (Slices), while application providers manage the applications. This ensures you maintain sovereignty over your infrastructure while benefiting from professional management.</p>
|
||||
<hr>
|
||||
<p class="mb-0">When you deploy an application, you'll be guided through the process of allocating the necessary resources if you don't already have them.</p>
|
||||
</div>
|
||||
@@ -169,7 +169,7 @@
|
||||
<div class="text-center py-5">
|
||||
<i class="bi bi-app display-1 text-muted"></i>
|
||||
<h4 class="mt-3">No Applications Available</h4>
|
||||
<p class="text-muted">Check back later for new application solutions.</p>
|
||||
<p class="text-muted">Check back later for new applications.</p>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
@@ -273,7 +273,7 @@
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<h5>3. Deployment & Management</h5>
|
||||
<p>The solution provider handles deployment, updates, and maintenance while you retain full sovereignty.</p>
|
||||
<p>The application provider handles deployment, updates, and maintenance while you retain full sovereignty.</p>
|
||||
|
||||
<h5>4. Access & Control</h5>
|
||||
<p>Access your application through secure channels while maintaining complete control over your data and infrastructure.</p>
|
||||
|
Reference in New Issue
Block a user