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}"