File size: 1,602 Bytes
73e2d15 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | """Per-Space configuration for the Loreify D&D tools portfolio."""
from dataclasses import dataclass, field
COLLECTION_TITLE = "Free D&D Tools, Generators, Trackers, and Calculators"
# Filled in by deploy.py after the Collection is created; the footer link
# falls back to the owner's Spaces listing until then.
COLLECTION_URL = "https://huggingface.co/collections/Jordancole21/free-d-and-d-tools-generators-trackers-and-calculators-6a5fd7e9bbbcea33a3ab7ed2"
OWNER = "Jordancole21"
LOREIFY_TRIAL_URL = "https://loreify.ai/start-trial"
@dataclass(frozen=True)
class RelatedSpace:
title: str
url: str
description: str
@dataclass(frozen=True)
class CTA:
copy: str
button: str
utm_content: str # hero | post_tool | mid_page | footer (or page-specific)
@dataclass(frozen=True)
class SpaceConfig:
slug: str # Space repo name, e.g. "dnd-monster-builder"
utm_campaign: str # e.g. "dnd_monster_builder"
title: str # Space metadata title
emoji: str
short_description: str # <= ~60 chars
h1: str # exact-intent H1, one per page
tagline: str # one-sentence outcome promise
primary_keyword: str
secondary_keywords: tuple = ()
hero_cta: CTA = None
post_tool_cta: CTA = None
mid_page_cta: CTA = None # optional third placement
footer_cta: CTA = None
related: tuple = () # tuple[RelatedSpace]
@property
def space_url(self) -> str:
return f"https://huggingface.co/spaces/{OWNER}/{self.slug}"
|