Noun Schemas
Domain component schemas for business entities and concepts
Noun Schemas
Domain components represent entire business models and entities. These are higher-order abstractions that compose Sites, Apps, Agents, and Services into cohesive business domains.
Business Model Domains
Startup
Venture-backed technology company with product, billing, and analytics.
interface StartupProps extends BaseDomain {
$type: 'Startup'
revenueModel: 'subscription' | 'usage' | 'transaction' | 'commission' | 'licensing' | 'advertising' | 'freemium' | 'hybrid'
funding?: {
total: number
currency: string // ISO 4217 (USD, EUR)
round?: 'pre_seed' | 'seed' | 'series_a' | 'series_b' | 'series_c' | 'growth'
investors?: string[]
}
metrics?: {
mrr?: number // Monthly recurring revenue
arr?: number // Annual recurring revenue
customers?: number
users?: number
growth?: number // MoM growth percentage
churn?: number // Monthly churn rate
ltv?: number // Customer lifetime value
cac?: number // Customer acquisition cost
}
pricing?: PricingTier[]
features?: Feature[]
targetMarket?: {
segment: 'b2b' | 'b2c' | 'b2b2c' | 'enterprise'
verticals?: string[]
personas?: string[]
}
integrations?: string[]
social?: SocialLinks
}Usage:
<Startup
name="Acme Analytics"
domain="acme.analytics"
revenueModel="subscription"
metrics={{ mrr: 50000, customers: 150 }}
/>Agency
Professional services business with portfolio and client management.
interface AgencyProps extends BaseDomain {
$type: 'Agency'
specialty: string
services: Service[]
portfolio?: PortfolioProject[]
testimonials?: Testimonial[]
team?: TeamMember[]
rateRange?: {
min: number
max: number
currency: string
}
industries?: string[]
awards?: Award[]
certifications?: string[]
process?: ProcessStep[]
}Usage:
<Agency
name="Design Studio"
specialty="Brand Design"
services={[
{ name: "Brand Identity", startingPrice: 5000 },
{ name: "Web Design", startingPrice: 8000 }
]}
/>Marketplace
Multi-sided platform connecting buyers and sellers.
interface MarketplaceProps extends BaseDomain {
$type: 'Marketplace'
marketplaceType: 'product' | 'service' | 'rental' | 'digital' | 'nft' | 'b2b'
fees: {
buyerFee?: number // Percentage
sellerFee: number // Percentage
flatFee?: number
currency: string
processingFee?: number
}
categories?: Category[]
verification?: {
seller: Array<'email' | 'phone' | 'id' | 'bank' | 'business'>
buyer: Array<'email' | 'phone' | 'id' | 'payment'>
}
paymentMethods: Array<'card' | 'bank' | 'paypal' | 'stripe' | 'crypto' | 'escrow' | 'cod'>
escrow?: boolean
}SaaS Product
Software-as-a-Service product offering.
interface SaaSProductProps extends BaseDomain {
$type: 'SaaSProduct'
category: string
pricingModel: 'freemium' | 'subscription' | 'usage' | 'per_seat' | 'tiered'
plans: PricingPlan[]
features: Feature[]
integrations?: Integration[]
apiAvailable?: boolean
uptime?: number // SLA percentage
dataResidency?: string[]
compliance?: string[] // SOC2, GDPR, HIPAA, etc.
}Platform
Multi-tenant platform with apps, APIs, and ecosystems.
interface PlatformProps extends BaseDomain {
$type: 'Platform'
platformType: 'developer' | 'marketplace' | 'integration' | 'infrastructure'
apps?: App[]
apis?: API[]
webhooks?: boolean
sdks?: SDK[]
pricing: PricingModel
limits?: {
freeRequests?: number
rateLimits?: Record<string, number>
}
regions?: string[]
partners?: Partner[]
}Service Model Domains
Studio
Creative studio offering design, production, or development services.
interface StudioProps extends BaseDomain {
$type: 'Studio'
studioType: 'design' | 'video' | 'audio' | 'dev' | 'creative' | 'production'
services: Service[]
portfolio: PortfolioProject[]
process?: ProcessStep[]
team?: TeamMember[]
tools?: string[]
awards?: Award[]
}Portal
Client or partner portal for account management.
interface PortalProps extends BaseDomain {
$type: 'Portal'
portalType: 'client' | 'partner' | 'vendor' | 'employee'
features: string[]
dashboards?: string[]
integrations?: Integration[]
sso?: boolean
customBranding?: boolean
}Directory
Searchable directory or listing platform.
interface DirectoryProps extends BaseDomain {
$type: 'Directory'
directoryType: 'business' | 'professional' | 'product' | 'service' | 'location'
categories: Category[]
searchFields: string[]
filters?: Filter[]
verified?: boolean
claims?: boolean // Can owners claim listings?
reviews?: boolean
}Consultancy
Consulting firm offering expert advisory services.
interface ConsultancyProps extends BaseDomain {
$type: 'Consultancy'
expertise: string[]
services: Service[]
consultants?: Consultant[]
methodology?: string
industries?: string[]
caseStudies?: CaseStudy[]
pricing?: {
model: 'hourly' | 'project' | 'retainer' | 'value'
range?: { min: number; max: number }
}
}Venture
Venture capital or investment firm.
interface VentureProps extends BaseDomain {
$type: 'Venture'
focus: string[]
stages: Array<'pre_seed' | 'seed' | 'series_a' | 'series_b' | 'growth'>
checkSize?: {
min: number
max: number
currency: string
}
portfolio?: PortfolioCompany[]
partners?: Partner[]
thesis?: string
regions?: string[]
}Content Model Domains
Creator
Content creator (YouTuber, podcaster, influencer).
interface CreatorProps extends BaseDomain {
$type: 'Creator'
platforms: Array<'youtube' | 'podcast' | 'twitch' | 'tiktok' | 'instagram' | 'twitter'>
content: {
type: string
frequency: string
topics: string[]
}
audience?: {
size: number
demographics?: Record<string, unknown>
}
monetization?: Array<'ads' | 'sponsors' | 'memberships' | 'merch' | 'courses'>
sponsors?: Sponsor[]
}Publisher
Publishing house or media company.
interface PublisherProps extends BaseDomain {
$type: 'Publisher'
publications?: Publication[]
topics?: string[]
formats?: Array<'blog' | 'magazine' | 'book' | 'newsletter' | 'podcast'>
distribution?: Array<'web' | 'email' | 'rss' | 'app'>
monetization?: Array<'ads' | 'subscriptions' | 'sponsored' | 'affiliates'>
authors?: Author[]
}Newsletter
Email newsletter publication.
interface NewsletterProps extends BaseDomain {
$type: 'Newsletter'
frequency: 'daily' | 'weekly' | 'biweekly' | 'monthly'
topics: string[]
subscribers?: number
openRate?: number
clickRate?: number
pricing?: 'free' | 'paid' | 'freemium'
platform?: string
archives?: boolean
}Community Model Domains
Community
Online community or membership platform.
interface CommunityProps extends BaseDomain {
$type: 'Community'
communityType: 'open' | 'invite' | 'paid' | 'token_gated'
platforms: Array<'discord' | 'slack' | 'circle' | 'custom'>
members?: number
channels?: Channel[]
events?: Event[]
roles?: Role[]
monetization?: Array<'membership' | 'events' | 'courses' | 'sponsor'>
}DAO
Decentralized autonomous organization.
interface DAOProps extends BaseDomain {
$type: 'DAO'
governance: {
token: string
votingMechanism: 'token' | 'reputation' | 'quadratic' | 'conviction'
quorum?: number
threshold?: number
}
treasury?: {
value: number
currency: string
assets?: Asset[]
}
proposals?: Proposal[]
members?: number
blockchain?: string
}Base Domain
All domain components extend the base domain schema:
interface BaseDomain {
$id: string // Business URI identifier
name: string // Business or brand name
domain: string // Primary web domain
tagline?: string // One-line description
description?: string // Extended description
logo?: string // Logo image URL
favicon?: string // Favicon URL
colors?: {
primary: string
secondary?: string
accent?: string
}
stage?: 'idea' | 'mvp' | 'seed' | 'growth' | 'scale' | 'mature' | 'exit'
founded?: number // Year founded
legalEntity?: 'sole_prop' | 'llc' | 'corp' | 'nonprofit' | 'coop'
location?: string // Primary business location
teamSize?: number
}Common Types
PricingTier
interface PricingTier {
name: string
price: number
frequency: 'one_time' | 'daily' | 'weekly' | 'monthly' | 'quarterly' | 'annual' | 'custom'
features: string[]
highlighted?: boolean
cta?: string
}Feature
interface Feature {
name: string
description: string
icon?: string
available?: boolean
}Service
interface Service {
name: string
description: string
startingPrice?: number
currency?: string
deliverables?: string[]
timeline?: string
}Integration
interface Integration {
name: string
category: string
logo?: string
connected?: boolean
config?: Record<string, unknown>
}Zod Schemas
All domain schemas are available as Zod schemas for runtime validation:
import {
StartupPropsSchema,
AgencyPropsSchema,
MarketplacePropsSchema,
SaaSProductPropsSchema,
PlatformPropsSchema,
// ... etc
} from 'mdxui/zod'
const result = StartupPropsSchema.safeParse(data)
if (!result.success) {
console.error(result.error)
}See Zod Schemas for the complete list.