Add GFTD marketplace listing and discovery

This commit is contained in:
defiQUG
2026-07-30 13:12:19 -07:00
parent 89a180faf3
commit c25e4891be
9 changed files with 325 additions and 36 deletions
-4
View File
@@ -1,7 +1,3 @@
[submodule "marketplace/as4-411"]
path = marketplace/as4-411
url = https://gitea.d-bis.org/d-bis/as4-411.git
[submodule "portal/src/data/project-atlas"]
path = portal/src/data/project-atlas
url = [email protected]:Sankofa_Phoenix/projectAtlas.git
branch = main
@@ -196,6 +196,26 @@
"productPath": "/marketplace/products/phoenix-aegis-vault-cti",
"managePath": "/marketplace/entitlements/phoenix-aegis-vault-cti"
}
},
{
"productSlug": "phoenix-gftd-directory",
"displayName": "GFTD Directory",
"entitlementKeys": ["GFTD_DIRECTORY_ENTITLED"],
"publisher": "phoenix-cloud-services",
"category": "INTERNET_REGISTRY",
"onboardingRunbook": "docs/marketplace/sovereign-stack/gftd-directory-service.md",
"catalogSkus": [
"gftd-preview",
"gftd-professional",
"gftd-institutional",
"gftd-enterprise"
],
"fulfillmentMode": "operator_provisioned",
"status": "preview",
"surfaces": {
"productPath": "/marketplace/products/phoenix-gftd-directory",
"managePath": "/marketplace/entitlements/phoenix-gftd-directory"
}
}
]
}
+153 -1
View File
@@ -19,6 +19,8 @@ interface ServiceDefinition {
basePrice?: number
currency?: string
billingPeriod?: string
billingModel?: string
quoteRequired?: boolean
usageRates?: Record<string, any>
freeTier?: {
requestsPerMonth?: number
@@ -488,7 +490,7 @@ const services: ServiceDefinition[] = [
name: 'DBIS B2B Integration Hub',
slug: 'phoenix-b2b-integration-hub',
category: 'PLATFORM_SERVICES',
description: 'Enterprise B2B orchestration for DBIS and OMNL — EDI, file transfer, PEPPOL and EBICS fan-out to CanonicalMessage and Fineract.',
description: 'Enterprise B2B orchestration for DBIS and OMNL — EDI, file transfer, PEPPOL, EBICS, and AS4 fan-out to CanonicalMessage and Fineract.',
shortDescription: 'B2B orchestration hub for DBIS and OMNL',
tags: ['b2b', 'edi', 'integration', 'platform'],
featured: true,
@@ -538,6 +540,28 @@ const services: ServiceDefinition[] = [
quoteRequired: true,
},
},
{
name: 'DBIS AS4 Gateway',
slug: 'phoenix-as4-gateway',
category: 'FINANCIAL_MESSAGING',
description: 'Standalone AS4/eBMS3 gateway for external B2B document exchange with canonical message handoff into the DBIS B2B Integration Hub.',
shortDescription: 'AS4/eBMS3 external gateway',
tags: ['as4', 'ebms3', 'b2b', 'financial-messaging'],
featured: false,
documentationUrl: 'https://docs.sankofa.nexus/marketplace/sovereign-stack/as4-gateway-service',
metadata: {
architecture: 'docs/marketplace/sovereign-stack/as4-gateway-service.md',
entitlement: 'AS4_GATEWAY_ENTITLED',
status: 'operator_ready_external_pending'
},
pricingType: 'SUBSCRIPTION',
pricingConfig: {
currency: 'USD',
billingPeriod: 'MONTHLY',
billingModel: 'enterprise_contract',
quoteRequired: true,
},
},
{
name: 'Chain 138 Participant Onboarding',
slug: 'phoenix-chain138-participant-onboard',
@@ -592,6 +616,29 @@ const services: ServiceDefinition[] = [
quoteRequired: true,
}
},
{
name: 'HSM/PKI for PCI and Tokenization',
slug: 'phoenix-hsm-pki-pci-tokenization',
category: 'SECURITY_SERVICES',
description: 'Managed HSM, PKI, key ceremony, certificate lifecycle, PCI key controls, and tokenization enablement for regulated banking tenants.',
shortDescription: 'HSM/PKI service for PCI and tokenization',
tags: ['hsm', 'pki', 'pci', 'tokenization', 'banking'],
featured: false,
documentationUrl: 'https://docs.sankofa.nexus/marketplace/sovereign-stack/hsm-pki-pci-tokenization-service',
metadata: {
architecture: 'docs/marketplace/sovereign-stack/hsm-pki-pci-tokenization-service.md',
entitlement: 'HSM_PKI_TOKENIZATION_ENTITLED',
targetTenants: ['OMNL', 'zBank', 'NovaBank', 'Ananka Bank'],
status: 'planned'
},
pricingType: 'SUBSCRIPTION',
pricingConfig: {
currency: 'USD',
billingPeriod: 'MONTHLY',
billingModel: 'enterprise_contract',
quoteRequired: true,
}
},
{
name: 'OpenPayd Financial Services Connector',
slug: 'phoenix-openpayd-connector',
@@ -617,6 +664,111 @@ const services: ServiceDefinition[] = [
billingModel: 'enterprise_contract',
quoteRequired: true,
}
},
{
name: 'MTN Developer Platform Connector',
slug: 'phoenix-mtn-developer-platform',
category: 'PLATFORM_SERVICES',
description: 'Operator-provisioned MTN connector for Mobile Money, messaging, payment, customer, security, and TMF APIs for Phoenix Financial and Telecom Cloud subscribers.',
shortDescription: 'MTN Developer Platform connector for financial and telecom cloud subscribers',
tags: ['mtn', 'mobile-money', 'telecom', 'payments', 'messaging', 'oauth', 'platform'],
featured: false,
documentationUrl: 'https://docs.sankofa.nexus/marketplace/sovereign-stack/mtn-developer-platform-service',
metadata: {
architecture: 'docs/marketplace/sovereign-stack/mtn-developer-platform-service.md',
entitlement: 'MTN_DEVELOPER_PLATFORM_ENTITLED',
manifestRef: 'config/mtn-developer-platform-marketplace.v1.json',
targetTenants: ['DBIS', 'OMNL', 'zBank', 'NovaBank', 'Ananka Bank'],
fulfillmentMode: 'operator_provisioned',
status: 'planned_mtn_onboarding_required',
gatedCapabilities: ['mobile-money', 'telecom-catalog', 'country-approval-matrix']
},
pricingType: 'SUBSCRIPTION',
pricingConfig: {
currency: 'USD',
billingPeriod: 'MONTHLY',
billingModel: 'enterprise_contract',
quoteRequired: true,
}
},
{
name: 'TRISA Travel Rule Gateway',
slug: 'phoenix-trisa-travel-rule',
category: 'FINANCIAL_MESSAGING',
description: 'Operator-provisioned TRISA and IVMS101 gateway for VASP Travel Rule payload exchange, mTLS identity, peer discovery, and compliance audit evidence in Phoenix Financial Cloud.',
shortDescription: 'TRISA and IVMS101 Travel Rule gateway for VASP compliance exchange',
tags: ['trisa', 'travel-rule', 'ivms101', 'vasp', 'mtls', 'financial-messaging'],
featured: false,
documentationUrl: 'https://docs.sankofa.nexus/marketplace/sovereign-stack/trisa-travel-rule-service',
metadata: {
architecture: 'docs/marketplace/sovereign-stack/trisa-travel-rule-service.md',
entitlement: 'TRISA_TRAVEL_RULE_ENTITLED',
manifestRef: 'config/trisa-travel-rule-marketplace.v1.json',
targetTenants: ['DBIS', 'OMNL', 'zBank', 'NovaBank', 'Ananka Bank'],
fulfillmentMode: 'operator_provisioned',
status: 'planned_directory_and_compliance_approval_required',
gatedCapabilities: ['mainnet_directory', 'production_counterparties', 'asset_movement_handoff']
},
pricingType: 'SUBSCRIPTION',
pricingConfig: {
currency: 'USD',
billingPeriod: 'MONTHLY',
billingModel: 'enterprise_contract',
quoteRequired: true,
}
},
{
name: 'GFTD Directory',
slug: 'phoenix-gftd-directory',
category: 'INTERNET_REGISTRY',
description: 'Rights-aware entity intelligence for approved live source lanes, redacted public-safe views, subscription tiers, and bounded observability through Sankofa Marketplace.',
shortDescription: 'Rights-aware entity directory with live source lanes and public-safe redaction',
tags: ['gftd', 'directory', 'registry', 'redaction', 'observability', 'subscription', 'marketplace'],
featured: false,
documentationUrl: 'https://docs.sankofa.nexus/marketplace/sovereign-stack/gftd-directory-service',
metadata: {
architecture: 'docs/marketplace/sovereign-stack/gftd-directory-service.md',
entitlement: 'GFTD_DIRECTORY_ENTITLED',
fulfillmentMode: 'operator_provisioned',
status: 'preview',
subscriptionTiers: ['preview', 'professional', 'institutional', 'enterprise'],
personaMatrix: ['compliance-analyst', 'integration-engineer', 'marketplace-operator', 'legal-counsel', 'operations-sre', 'product-owner', 'institutional-customer'],
publicValueProposition: 'Rights-aware entity intelligence with redacted public outputs, live approved source lanes, and bounded observability.',
gatedCapabilities: ['live_source_lanes', 'redacted_public_views', 'bounded_observability']
},
pricingType: 'SUBSCRIPTION',
pricingConfig: {
currency: 'USD',
billingPeriod: 'MONTHLY',
billingModel: 'enterprise_contract',
quoteRequired: true,
}
},
{
name: 'EAC AppChain',
slug: 'phoenix-eac-appchain',
category: 'PLATFORM_SERVICES',
description: 'Operator-provisioned Universal Enterprise State Network for connectors, canonical state, events, workflows, identity graph, audit, policy, and AI context boundaries.',
shortDescription: 'Canonical application fabric and enterprise state network',
tags: ['appchain', 'connectors', 'canonical-state', 'workflow', 'ai-runtime', 'audit'],
featured: false,
documentationUrl: 'https://docs.sankofa.nexus/marketplace/sovereign-stack/eac-appchain-service',
metadata: {
architecture: 'docs/marketplace/sovereign-stack/eac-appchain-service.md',
entitlement: 'EAC_APPCHAIN_ENTITLED',
manifestRef: 'config/eac-appchain-marketplace.v1.json',
targetTenants: ['DBIS', 'OMNL', 'zBank', 'NovaBank', 'Ananka Bank'],
fulfillmentMode: 'operator_provisioned',
status: 'planned_sankofa_key_handoff_required',
keyHandoff: 'Sankofa returns secret references and key metadata only; no plaintext keys in Marketplace records.'
},
pricingType: 'SUBSCRIPTION',
pricingConfig: {
currency: 'USD',
billingPeriod: 'MONTHLY',
billingModel: 'enterprise_contract',
quoteRequired: true,
}
}
]
+5 -1
View File
@@ -26,6 +26,10 @@ The Sovereign Stack is a comprehensive set of services designed to replace relia
8. **[Phoenix Audit Service](./audit-service.md)** - Immutable audit logs and WORM archive
9. **[Phoenix Observability Stack](./observability.md)** - Distributed tracing, structured logs, SLOs
### Registry Services
10. **[GFTD Directory](./gftd-directory-service.md)** - Rights-aware entity intelligence, redaction, and bounded observability
## Guiding Principles
1. **No provider is System of Record (SoR)**
@@ -57,7 +61,7 @@ All services follow a consistent architecture pattern:
## Getting Started
1. Browse services in the [Sankofa Marketplace](https://portal.sankofa.nexus/marketplace)
2. Review service documentation for integration details
2. Review service documentation for integration details, including the GFTD Directory offering
3. Subscribe to services via the marketplace
4. Use API keys for authentication
5. Monitor usage and costs via the billing dashboard
@@ -0,0 +1,97 @@
# GFTD Directory
## Summary
The GFTD Directory is a rights-aware, operator-provisioned Sankofa Marketplace
service for teams that need verified entity intelligence, redacted public-safe
views, and bounded runtime observability.
It packages the DBIS Global Financial Trust Directory as a marketplace offering
with clear source-rights boundaries, subscription tiers, and persona-specific
value.
## Entitlement
| Field | Value |
| --- | --- |
| Product slug | `phoenix-gftd-directory` |
| Entitlement flag | `GFTD_DIRECTORY_ENTITLED` |
| Fulfillment mode | `operator_provisioned` |
| Manage path | `/marketplace/entitlements/phoenix-gftd-directory` |
| Marketplace status | `preview` |
## Subscription Tiers
| Tier | Who it is for | What it includes | Limits and controls |
| --- | --- | --- | --- |
| Preview | Evaluators, partners, and early adopters | Public-safe homepage, limited samples, fixture-backed demo data, redaction examples, and basic docs | No live restricted data, no authority claims, no production SLA |
| Professional | Operators, integrators, and compliance teams | Live approved source lanes, API access, bounded query depth, refresh alerts, and audit snapshots | Approved sources only, role-based access, and rate limits |
| Institutional | Regulated firms, marketplaces, and service providers | Multi-source coverage, evidence pack exports, onboarding and acceptance artifacts, and observability status | Contractual use terms, approval gates, and stricter access control |
| Enterprise | Market operators and platform teams | Custom SLAs, dedicated onboarding, tenant-specific redaction policies, integration support, and governance reporting | Bespoke legal and compliance review with scoped deployment |
## User Needs By Persona
| Persona | What they need | Why they subscribe | What matters most |
| --- | --- | --- | --- |
| Compliance analyst | Verified source-rights status, publication boundaries, audit trails | To prove what can and cannot be published | Traceability and redaction correctness |
| Integration engineer | Stable API, live source adapters, query-depth controls | To wire GFTD into internal tools | Reliability, docs, predictable responses |
| Marketplace operator | Packaging, tiers, onboarding, feature gating | To sell and support the service | Clear commercial segmentation |
| Legal counsel | Rights evidence, terms references, disclaimers, approval records | To approve the public surface | Low-risk wording and explicit boundaries |
| Operations / SRE | Health checks, observability snapshots, runtime limits | To keep the service safe in production | Monitoring, bounded behavior, incident signals |
| Product owner | Value proposition, user segmentation, adoption evidence | To position the offering | Clarity and defensibility |
| Institutional customer | Approved data, support, service acceptance | To use it in workflows | Trust, supportability, contractual clarity |
## Public Homepage Value Proposition
**Headline**
GFTD delivers rights-aware, production-safe entity intelligence.
**Subheadline**
Access approved live source lanes, redacted public outputs, bounded
observability, and evidence-backed operational controls through Sankofa
Marketplace.
**Core benefits**
- Verified source-rights and publication boundaries.
- Live approved data where rights allow it.
- Redacted, public-safe outputs by default.
- Bounded query depth and operator-safe runtime controls.
- Audit-ready evidence and onboarding artifacts.
- Marketplace-ready packaging for institutional adoption.
**What it is not**
- It is not a claim of legal authority.
- It is not a payment rail.
- It is not a license to republish restricted data.
- It is not a substitute for counsel or compliance review.
**Call to action**
- View the public-safe demo.
- Review subscription tiers.
- Request institutional onboarding.
- Explore approved live source coverage.
## Operator Boundary
Marketplace listing alone does not grant authority to republish restricted
source data, confer banking or payment rights, authorize licensing, or imply
source-provider approval beyond the approved rights record.
The service remains subject to source-rights review, publication and redaction
policy, and adoption evidence gates before any restricted or institution-facing
surface is enabled.
## References
- GFTD live public endpoint: `https://gftd.d-bis.org`
- GFTD monorepo: `https://gitea.d-bis.org/Sankofa_Phoenix/gftd-monorepo.git`
- Public-safe docs summary: `https://gftd.d-bis.org/docs`
- GFTD live source ingestion runbook:
`/home/intlc/projects/gftd_monorepo/docs/runbooks/live-source-ingestion.md`
- GFTD publication and redaction pack:
`/home/intlc/projects/gftd_monorepo/docs/runbooks/publication-redaction-pack.md`
@@ -1,26 +0,0 @@
#!/usr/bin/env bash
set -euo pipefail
repo_root="$(git rev-parse --show-toplevel)"
submodule_path="${PROJECT_ATLAS_SUBMODULE_PATH:-portal/src/data/project-atlas}"
ssh_key="${PROJECT_ATLAS_SSH_PRIVATE_KEY:-}"
key_file="${RUNNER_TEMP:-/tmp}/project-atlas-submodule-key"
# The Project Atlas submodule lives in Gitea and must be fetched with a
# read-only deploy key stored in PROJECT_ATLAS_SSH_PRIVATE_KEY.
if git -C "$repo_root" submodule status -- "$submodule_path" | grep -q '^-'; then
if [[ -z "$ssh_key" ]]; then
echo "PROJECT_ATLAS_SSH_PRIVATE_KEY is required to initialize the private projectAtlas submodule." >&2
exit 1
fi
install -d -m 700 "$HOME/.ssh"
printf '%s\n' "$ssh_key" > "$key_file"
chmod 600 "$key_file"
ssh-keyscan -H gitea.d-bis.org >> "$HOME/.ssh/known_hosts"
git -C "$repo_root" submodule sync -- "$submodule_path"
GIT_SSH_COMMAND="ssh -i $key_file -o IdentitiesOnly=yes -o StrictHostKeyChecking=yes" \
git -C "$repo_root" submodule update --init --recursive -- "$submodule_path"
fi
+43 -2
View File
@@ -8,7 +8,7 @@ import { Input } from '@/components/ui/input'
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'
import { Badge } from '@/components/ui/badge'
import { ProductCard } from '@/components/marketplace/ProductCard'
import { Search, Filter } from 'lucide-react'
import { Search, Filter, ArrowRight, ShieldCheck, BookOpen } from 'lucide-react'
const PRODUCT_CATEGORIES = [
{ value: 'COMPUTE', label: 'Compute' },
@@ -75,6 +75,48 @@ export default function MarketplacePage() {
</p>
</div>
<Card className="mb-8 border-border/60 bg-gradient-to-r from-slate-950 via-slate-900 to-slate-800 text-white">
<CardHeader>
<div className="flex flex-wrap items-center gap-2 mb-2">
<Badge variant="secondary" className="bg-white/10 text-white hover:bg-white/20">
New
</Badge>
<Badge variant="outline" className="border-white/20 text-white">
Internet Registry
</Badge>
</div>
<CardTitle className="text-2xl">GFTD Directory</CardTitle>
<CardDescription className="text-slate-300">
Rights-aware entity intelligence with live approved source lanes, redacted public-safe outputs, and bounded observability.
</CardDescription>
</CardHeader>
<CardContent className="flex flex-col gap-4 md:flex-row md:items-center md:justify-between">
<div className="flex flex-wrap gap-4 text-sm text-slate-300">
<span className="inline-flex items-center gap-2">
<ShieldCheck className="h-4 w-4" />
Source-rights gated
</span>
<span className="inline-flex items-center gap-2">
<BookOpen className="h-4 w-4" />
Subscription tiers available
</span>
</div>
<div className="flex gap-3">
<Button variant="outline" className="border-white/20 text-white hover:bg-white/10" asChild>
<Link href="/marketplace/products/phoenix-gftd-directory">
View GFTD
<ArrowRight className="ml-2 h-4 w-4" />
</Link>
</Button>
<Button variant="phoenix" asChild>
<Link href="/marketplace/products/phoenix-gftd-directory">
Subscribe
</Link>
</Button>
</div>
</CardContent>
</Card>
{/* Search and Filters */}
<div className="mb-8 space-y-4">
<div className="flex gap-4">
@@ -153,4 +195,3 @@ export default function MarketplacePage() {
</div>
)
}
+7 -1
View File
@@ -34,6 +34,10 @@ const CATEGORY_LABELS: Record<string, string> = {
AI_LLM_AGENT: 'AI',
}
const CATEGORY_DESCRIPTIONS: Record<string, string> = {
INTERNET_REGISTRY: 'Rights-aware registry and entity intelligence',
}
export function ProductCard({ product }: ProductCardProps) {
return (
<Card className="hover:shadow-lg transition-shadow">
@@ -72,6 +76,9 @@ export function ProductCard({ product }: ProductCardProps) {
{CATEGORY_LABELS[product.category] || product.category}
</Badge>
{product.featured && <Badge variant="default">Featured</Badge>}
{CATEGORY_DESCRIPTIONS[product.category] && (
<Badge variant="outline">{CATEGORY_DESCRIPTIONS[product.category]}</Badge>
)}
</div>
</CardHeader>
<CardContent>
@@ -102,4 +109,3 @@ export function ProductCard({ product }: ProductCardProps) {
</Card>
)
}