From 7be99d37d0eddf49689d3017cfb5a813b084d384 Mon Sep 17 00:00:00 2001 From: Jeff Emmett Date: Wed, 18 Feb 2026 12:20:19 -0700 Subject: [PATCH] feat: add multi-tenant spaces with Fungi Flows storefront Add subdomain-based spaces system for branded storefronts. Each space has its own theme, product catalog, and isolated cart via scoped localStorage keys. - Backend: SpaceService loads YAML configs, new /api/spaces endpoints, design filtering by space, CORS regex for *.rswag.online - Frontend: Next.js middleware detects subdomain and sets space_id cookie, dynamic CSS variable injection for theming, space-aware API calls - Spaces: _default (rSwag hub, cyan/orange) and fungiflows (gold/green/purple) - Docker: Traefik wildcard HostRegexp for subdomain routing - Designs: Placeholder Fungi Flows sticker and logo tee Co-Authored-By: Claude Opus 4.6 --- CLAUDE.md | 32 +++++- backend/app/api/designs.py | 3 +- backend/app/api/products.py | 2 + backend/app/api/spaces.py | 23 ++++ backend/app/config.py | 5 + backend/app/main.py | 6 +- backend/app/schemas/design.py | 1 + backend/app/services/design_service.py | 9 +- backend/app/services/space_service.py | 104 ++++++++++++++++++ .../shirts/fungi-logo-tee/fungi-logo-tee.png | Bin 0 -> 130795 bytes designs/shirts/fungi-logo-tee/metadata.yaml | 26 +++++ designs/stickers/fungi-spore/fungi-spore.png | Bin 0 -> 20975 bytes designs/stickers/fungi-spore/metadata.yaml | 26 +++++ docker-compose.dev.yml | 1 + docker-compose.prod.yml | 2 + docker-compose.yml | 6 +- frontend/app/cart/page.tsx | 6 +- frontend/app/design/page.tsx | 38 ++++--- frontend/app/layout.tsx | 62 +++++++++-- frontend/app/page.tsx | 45 ++++++-- frontend/app/products/[slug]/page.tsx | 5 +- frontend/app/products/page.tsx | 21 ++-- frontend/lib/spaces.ts | 80 ++++++++++++++ frontend/middleware.ts | 37 +++++++ spaces/_default/space.yaml | 36 ++++++ spaces/fungiflows/space.yaml | 36 ++++++ 26 files changed, 555 insertions(+), 57 deletions(-) create mode 100644 backend/app/api/spaces.py create mode 100644 backend/app/services/space_service.py create mode 100644 designs/shirts/fungi-logo-tee/fungi-logo-tee.png create mode 100644 designs/shirts/fungi-logo-tee/metadata.yaml create mode 100644 designs/stickers/fungi-spore/fungi-spore.png create mode 100644 designs/stickers/fungi-spore/metadata.yaml create mode 100644 frontend/lib/spaces.ts create mode 100644 frontend/middleware.ts create mode 100644 spaces/_default/space.yaml create mode 100644 spaces/fungiflows/space.yaml diff --git a/CLAUDE.md b/CLAUDE.md index 23f4c34..80ba8b6 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -21,25 +21,42 @@ E-commerce platform for rSpace ecosystem merchandise (stickers, shirts, prints) | `backend/app/api/` | FastAPI route handlers | | `backend/app/models/` | SQLAlchemy ORM models | | `backend/app/schemas/` | Pydantic request/response schemas | -| `backend/app/services/` | Business logic (stripe, pod, orders) | +| `backend/app/services/` | Business logic (stripe, pod, orders, spaces) | | `backend/app/pod/` | POD provider clients | | `frontend/app/` | Next.js App Router pages | | `frontend/components/` | React components | +| `frontend/lib/` | Utilities (spaces, cn) | | `designs/` | Design assets (stickers, shirts, misc) | +| `spaces/` | Space configs (multi-tenant branding/theming) | + +## Spaces (Multi-Tenant) + +rSwag supports subdomain-based spaces. Each space has its own branding, theme, and product catalog. + +- **Config**: `spaces/{space_id}/space.yaml` defines name, theme colors, design filter, tips +- **Subdomain routing**: `{space}.rswag.online` detected by Next.js middleware, sets `space_id` cookie +- **API filtering**: `GET /api/products?space=fungiflows` returns only that space's designs +- **Theme injection**: CSS variables overridden at runtime from space config +- **Cart isolation**: localStorage keys scoped by space (`cart_id_fungiflows`) +- **Current spaces**: `_default` (rSwag hub), `fungiflows` (Fungi Flows merch) ## Design Source Designs are stored in-repo at `./designs/` and mounted into the backend container. -Each design has a `metadata.yaml` with name, description, products, variants, and pricing. +Each design has a `metadata.yaml` with name, description, products, variants, pricing, and `space` field. ## API Endpoints +### Spaces +- `GET /api/spaces` - List all spaces +- `GET /api/spaces/{id}` - Get space config (branding, theme, tips) + ### Public -- `GET /api/designs` - List active designs +- `GET /api/designs` - List active designs (optional: `?space=X`) - `GET /api/designs/{slug}` - Get design details - `GET /api/designs/{slug}/image` - Serve design image -- `GET /api/products` - List products with variants +- `GET /api/products` - List products with variants (optional: `?space=X`) - `POST /api/cart` - Create cart - `GET/POST/DELETE /api/cart/{id}/items` - Cart operations - `POST /api/checkout/session` - Create Stripe checkout @@ -62,7 +79,14 @@ Push to Gitea triggers webhook auto-deploy on Netcup at `/opt/apps/rswag/`. ## Branding +Default (rSwag): - **Primary color**: Cyan (HSL 195 80% 45%) - **Secondary color**: Orange (HSL 45 80% 55%) - **Font**: Geist Sans + Geist Mono - **Theme**: rSpace spatial web aesthetic + +Fungi Flows space (`fungiflows.rswag.online`): +- **Primary**: Gold (#ffd700) +- **Secondary**: Bioluminescent green (#39ff14) +- **Background**: Deep purple (#08070d) +- **Theme**: Psychedelic mushroom hip-hop aesthetic diff --git a/backend/app/api/designs.py b/backend/app/api/designs.py index 8a20cf6..49e77ee 100644 --- a/backend/app/api/designs.py +++ b/backend/app/api/designs.py @@ -16,9 +16,10 @@ design_service = DesignService() async def list_designs( status: str = "active", category: str | None = None, + space: str | None = None, ): """List all designs.""" - designs = await design_service.list_designs(status=status, category=category) + designs = await design_service.list_designs(status=status, category=category, space=space) return designs diff --git a/backend/app/api/products.py b/backend/app/api/products.py index b8795a8..b29eb36 100644 --- a/backend/app/api/products.py +++ b/backend/app/api/products.py @@ -13,11 +13,13 @@ design_service = DesignService() async def list_products( category: str | None = None, product_type: str | None = None, + space: str | None = None, ): """List all products (designs with variants flattened for storefront).""" products = await design_service.list_products( category=category, product_type=product_type, + space=space, ) return products diff --git a/backend/app/api/spaces.py b/backend/app/api/spaces.py new file mode 100644 index 0000000..382fa03 --- /dev/null +++ b/backend/app/api/spaces.py @@ -0,0 +1,23 @@ +"""Spaces API endpoints.""" + +from fastapi import APIRouter, HTTPException + +from app.services.space_service import SpaceService, Space + +router = APIRouter() +space_service = SpaceService() + + +@router.get("", response_model=list[Space]) +async def list_spaces(): + """List all available spaces.""" + return space_service.list_spaces() + + +@router.get("/{space_id}", response_model=Space) +async def get_space(space_id: str): + """Get a specific space by ID.""" + space = space_service.get_space(space_id) + if not space: + raise HTTPException(status_code=404, detail="Space not found") + return space diff --git a/backend/app/config.py b/backend/app/config.py index 70e7ea5..efabcc9 100644 --- a/backend/app/config.py +++ b/backend/app/config.py @@ -42,6 +42,7 @@ class Settings(BaseSettings): # Paths designs_path: str = "/app/designs" config_path: str = "/app/config" + spaces_path: str = "/app/spaces" # App app_name: str = "rSwag" @@ -55,6 +56,10 @@ class Settings(BaseSettings): def config_dir(self) -> Path: return Path(self.config_path) + @property + def spaces_dir(self) -> Path: + return Path(self.spaces_path) + @property def cors_origins_list(self) -> list[str]: return [origin.strip() for origin in self.cors_origins.split(",")] diff --git a/backend/app/main.py b/backend/app/main.py index 87219ed..79b2e02 100644 --- a/backend/app/main.py +++ b/backend/app/main.py @@ -6,7 +6,7 @@ from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from app.config import get_settings -from app.api import designs, products, cart, checkout, orders, webhooks, health, design_generator +from app.api import designs, products, cart, checkout, orders, webhooks, health, design_generator, spaces from app.api.admin import router as admin_router settings = get_settings() @@ -31,10 +31,11 @@ app = FastAPI( lifespan=lifespan, ) -# CORS middleware +# CORS middleware - allow all rswag.online subdomains + configured origins app.add_middleware( CORSMiddleware, allow_origins=settings.cors_origins_list, + allow_origin_regex=r"https?://([\w-]+\.)?rswag\.online", allow_credentials=True, allow_methods=["*"], allow_headers=["*"], @@ -49,6 +50,7 @@ app.include_router(checkout.router, prefix="/api/checkout", tags=["checkout"]) app.include_router(orders.router, prefix="/api/orders", tags=["orders"]) app.include_router(webhooks.router, prefix="/api/webhooks", tags=["webhooks"]) app.include_router(design_generator.router, prefix="/api/design", tags=["design-generator"]) +app.include_router(spaces.router, prefix="/api/spaces", tags=["spaces"]) app.include_router(admin_router, prefix="/api/admin", tags=["admin"]) diff --git a/backend/app/schemas/design.py b/backend/app/schemas/design.py index 3dda835..caf129f 100644 --- a/backend/app/schemas/design.py +++ b/backend/app/schemas/design.py @@ -35,6 +35,7 @@ class Design(BaseModel): created: str = "" source: DesignSource products: list[DesignProduct] = [] + space: str = "default" status: str = "draft" image_url: str = "" diff --git a/backend/app/services/design_service.py b/backend/app/services/design_service.py index 26c9088..65e16cc 100644 --- a/backend/app/services/design_service.py +++ b/backend/app/services/design_service.py @@ -30,6 +30,7 @@ class DesignService: self, status: str = "active", category: str | None = None, + space: str | None = None, ) -> list[Design]: """List all designs from the designs directory.""" designs = [] @@ -51,6 +52,10 @@ class DesignService: design = await self._load_design(design_dir, category_dir.name) if design and design.status == status: + # Filter by space if specified + if space and space != "all": + if design.space != space and design.space != "all": + continue designs.append(design) return designs @@ -156,6 +161,7 @@ class DesignService: created=str(metadata.get("created", "")), source=source, products=products, + space=metadata.get("space", "default"), status=metadata.get("status", "draft"), image_url=f"/api/designs/{slug}/image", ) @@ -164,9 +170,10 @@ class DesignService: self, category: str | None = None, product_type: str | None = None, + space: str | None = None, ) -> list[Product]: """List all products (designs formatted for storefront).""" - designs = await self.list_designs(status="active", category=category) + designs = await self.list_designs(status="active", category=category, space=space) products = [] for design in designs: diff --git a/backend/app/services/space_service.py b/backend/app/services/space_service.py new file mode 100644 index 0000000..14acbaa --- /dev/null +++ b/backend/app/services/space_service.py @@ -0,0 +1,104 @@ +"""Space (tenant) service for multi-subdomain support.""" + +from pathlib import Path + +import yaml +from pydantic import BaseModel + +from app.config import get_settings + +settings = get_settings() + + +class SpaceTheme(BaseModel): + """Theme configuration for a space.""" + + primary: str = "195 80% 45%" + primary_foreground: str = "0 0% 100%" + secondary: str = "45 80% 55%" + secondary_foreground: str = "222.2 47.4% 11.2%" + background: str = "0 0% 100%" + foreground: str = "222.2 84% 4.9%" + card: str = "0 0% 100%" + card_foreground: str = "222.2 84% 4.9%" + popover: str = "0 0% 100%" + popover_foreground: str = "222.2 84% 4.9%" + muted: str = "210 40% 96.1%" + muted_foreground: str = "215.4 16.3% 46.9%" + accent: str = "210 40% 96.1%" + accent_foreground: str = "222.2 47.4% 11.2%" + destructive: str = "0 84.2% 60.2%" + destructive_foreground: str = "210 40% 98%" + border: str = "214.3 31.8% 91.4%" + input: str = "214.3 31.8% 91.4%" + ring: str = "195 80% 45%" + + +class Space(BaseModel): + """Space configuration.""" + + id: str + name: str + tagline: str = "" + description: str = "" + domain: str = "" + footer_text: str = "" + theme: SpaceTheme = SpaceTheme() + design_filter: str = "all" + logo_url: str | None = None + design_tips: list[str] = [] + + +class SpaceService: + """Service for loading and resolving spaces.""" + + def __init__(self): + self.spaces_path = Path(settings.spaces_path) + self._cache: dict[str, Space] = {} + self._loaded = False + + def _ensure_loaded(self): + if self._loaded: + return + self._load_all() + self._loaded = True + + def _load_all(self): + if not self.spaces_path.exists(): + return + for space_dir in self.spaces_path.iterdir(): + if not space_dir.is_dir(): + continue + config_path = space_dir / "space.yaml" + if not config_path.exists(): + continue + try: + with open(config_path) as f: + data = yaml.safe_load(f) + space = Space(**data) + self._cache[space.id] = space + except Exception: + continue + + def get_space(self, space_id: str) -> Space | None: + """Get a space by its ID.""" + self._ensure_loaded() + return self._cache.get(space_id) + + def get_default(self) -> Space: + """Get the default space.""" + self._ensure_loaded() + return self._cache.get( + "default", + Space(id="default", name="rSwag", domain="rswag.online"), + ) + + def list_spaces(self) -> list[Space]: + """List all spaces.""" + self._ensure_loaded() + return list(self._cache.values()) + + def clear_cache(self): + """Clear the cache to force reload.""" + self._cache.clear() + self._loaded = False diff --git a/designs/shirts/fungi-logo-tee/fungi-logo-tee.png b/designs/shirts/fungi-logo-tee/fungi-logo-tee.png new file mode 100644 index 0000000000000000000000000000000000000000..1d917d2cd34321d77b751f5f33db34c41c04633f GIT binary patch literal 130795 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

@;nFCw=YS`GZJ;5I)t?N7Vhz`T^< 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 literal 0 HcmV?d00001 diff --git a/designs/shirts/fungi-logo-tee/metadata.yaml b/designs/shirts/fungi-logo-tee/metadata.yaml new file mode 100644 index 0000000..47278c1 --- /dev/null +++ b/designs/shirts/fungi-logo-tee/metadata.yaml @@ -0,0 +1,26 @@ +name: "Fungi Flows Logo Tee" +slug: fungi-logo-tee +description: "The original Fungi Flows logo on a premium tee. Gold and bioluminescent green on deep purple — rep the mycelium movement." +tags: [fungiflows, mushroom, logo, hip-hop, pittsburgh, tee] +space: fungiflows +category: shirts +created: "2026-02-18" +author: fungi-flows + +source: + file: fungi-logo-tee.png + format: png + dimensions: + width: 3600 + height: 4800 + dpi: 300 + color_profile: sRGB + +products: + - type: shirt + provider: printful + sku: "71" + variants: [S, M, L, XL, 2XL] + retail_price: 29.99 + +status: active diff --git a/designs/stickers/fungi-spore/fungi-spore.png b/designs/stickers/fungi-spore/fungi-spore.png new file mode 100644 index 0000000000000000000000000000000000000000..cff14af734f94dad140a52070872cb4c2d6828c5 GIT binary patch literal 20975 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 literal 0 HcmV?d00001 diff --git a/designs/stickers/fungi-spore/metadata.yaml b/designs/stickers/fungi-spore/metadata.yaml new file mode 100644 index 0000000..31ec0b1 --- /dev/null +++ b/designs/stickers/fungi-spore/metadata.yaml @@ -0,0 +1,26 @@ +name: "Spore Print Sticker" +slug: fungi-spore +description: "Bioluminescent mushroom spore print design. Neon green on deep purple — the signature Fungi Flows aesthetic." +tags: [fungiflows, mushroom, spore, psychedelic, sticker] +space: fungiflows +category: stickers +created: "2026-02-18" +author: fungi-flows + +source: + file: fungi-spore.png + format: png + dimensions: + width: 1200 + height: 1200 + dpi: 300 + color_profile: sRGB + +products: + - type: sticker + provider: prodigi + sku: GLOBAL-STI-KIS-4X4 + variants: [matte, gloss] + retail_price: 4.99 + +status: active diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index 6fda3dd..1c53a5e 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -16,6 +16,7 @@ services: # Mount designs from in-repo designs dir - ./designs:/app/designs:ro - ./config:/app/config:ro + - ./spaces:/app/spaces:ro environment: - DEBUG=true - POD_SANDBOX_MODE=true diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index f98a267..afbff7a 100644 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -3,9 +3,11 @@ services: volumes: - /opt/apps/rswag/designs:/app/designs - /opt/apps/rswag/config:/app/config:ro + - /opt/apps/rswag/spaces:/app/spaces:ro environment: - DESIGNS_PATH=/app/designs - CONFIG_PATH=/app/config + - SPACES_PATH=/app/spaces frontend: build: diff --git a/docker-compose.yml b/docker-compose.yml index 7cf3ba7..05d135e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -47,10 +47,12 @@ services: - CORS_ORIGINS=${CORS_ORIGINS:-http://localhost:3000} - DESIGNS_PATH=/app/designs - CONFIG_PATH=/app/config + - SPACES_PATH=/app/spaces - GEMINI_API_KEY=${GEMINI_API_KEY} volumes: - ./designs:/app/designs - ./config:/app/config:ro + - ./spaces:/app/spaces:ro depends_on: db: condition: service_healthy @@ -59,7 +61,7 @@ services: - traefik-public labels: - "traefik.enable=true" - - "traefik.http.routers.rswag-api.rule=Host(`rswag.online`) && PathPrefix(`/api`)" + - "traefik.http.routers.rswag-api.rule=(Host(`rswag.online`) || HostRegexp(`{subdomain:[a-z0-9-]+}.rswag.online`)) && PathPrefix(`/api`)" - "traefik.http.routers.rswag-api.entrypoints=web" - "traefik.http.services.rswag-api.loadbalancer.server.port=8000" - "traefik.docker.network=traefik-public" @@ -83,7 +85,7 @@ services: - traefik-public labels: - "traefik.enable=true" - - "traefik.http.routers.rswag-web.rule=Host(`rswag.online`)" + - "traefik.http.routers.rswag-web.rule=Host(`rswag.online`) || HostRegexp(`{subdomain:[a-z0-9-]+}.rswag.online`)" - "traefik.http.routers.rswag-web.entrypoints=web" - "traefik.http.services.rswag-web.loadbalancer.server.port=3000" - "traefik.docker.network=traefik-public" diff --git a/frontend/app/cart/page.tsx b/frontend/app/cart/page.tsx index b751a69..7e92cd6 100644 --- a/frontend/app/cart/page.tsx +++ b/frontend/app/cart/page.tsx @@ -2,6 +2,7 @@ import { useState, useEffect } from "react"; import Link from "next/link"; +import { getSpaceIdFromCookie, getCartKey } from "@/lib/spaces"; const API_URL = process.env.NEXT_PUBLIC_API_URL || "http://localhost:8000/api"; @@ -30,7 +31,8 @@ export default function CartPage() { const [updating, setUpdating] = useState(null); const fetchCart = async () => { - const cartId = localStorage.getItem("cart_id"); + const cartKey = getCartKey(getSpaceIdFromCookie()); + const cartId = localStorage.getItem(cartKey); if (cartId) { try { const res = await fetch(`${API_URL}/cart/${cartId}`); @@ -39,7 +41,7 @@ export default function CartPage() { setCart(data); } else { // Cart expired or deleted - localStorage.removeItem("cart_id"); + localStorage.removeItem(cartKey); setCart(null); } } catch { diff --git a/frontend/app/design/page.tsx b/frontend/app/design/page.tsx index fac8a06..ab1cf67 100644 --- a/frontend/app/design/page.tsx +++ b/frontend/app/design/page.tsx @@ -1,7 +1,9 @@ "use client"; -import { useState } from "react"; +import { useState, useEffect } from "react"; import Link from "next/link"; +import { getSpaceIdFromCookie } from "@/lib/spaces"; +import type { SpaceConfig } from "@/lib/spaces"; const API_URL = process.env.NEXT_PUBLIC_API_URL || "http://localhost:8000/api"; @@ -20,6 +22,15 @@ export default function DesignPage() { const [error, setError] = useState(null); const [generatedDesign, setGeneratedDesign] = useState(null); const [isActivating, setIsActivating] = useState(false); + const [spaceConfig, setSpaceConfig] = useState(null); + + useEffect(() => { + const spaceId = getSpaceIdFromCookie(); + fetch(`${API_URL}/spaces/${spaceId}`) + .then((res) => (res.ok ? res.json() : null)) + .then(setSpaceConfig) + .catch(() => {}); + }, []); const handleGenerate = async (e: React.FormEvent) => { e.preventDefault(); @@ -38,6 +49,7 @@ export default function DesignPage() { concept, tags: tags.split(",").map((t) => t.trim()).filter(Boolean), product_type: "sticker", + space: getSpaceIdFromCookie(), }), }); @@ -112,7 +124,7 @@ export default function DesignPage() {

Design Swag

- Create custom rSpace merchandise using AI. Describe your vision and + Create custom {spaceConfig?.name || "rSpace"} merchandise using AI. Describe your vision and we'll generate a unique design.

@@ -311,21 +323,13 @@ export default function DesignPage() {

Design Tips

    -
  • - • Be specific about text you want included - the AI will try to - render it in the design -
  • -
  • - • Mention colors, mood, and style preferences in your concept -
  • -
  • - • rSpace themes work great: spatial webs, interconnected nodes, - commons, collaboration, community tools -
  • -
  • - • Generated designs start as drafts - preview before adding to the - store -
  • + {(spaceConfig?.design_tips || [ + "Be specific about text you want included", + "Mention colors, mood, and style preferences", + "Generated designs start as drafts — preview before adding to the store", + ]).map((tip, i) => ( +
  • • {tip}
  • + ))}
diff --git a/frontend/app/layout.tsx b/frontend/app/layout.tsx index b13cf54..2000083 100644 --- a/frontend/app/layout.tsx +++ b/frontend/app/layout.tsx @@ -1,25 +1,69 @@ import type { Metadata } from "next"; -import { GeistSans, GeistMono } from "geist/font"; +import { GeistSans } from "geist/font"; +import { cookies } from "next/headers"; import "./globals.css"; +import type { SpaceConfig } from "@/lib/spaces"; +import { themeToCSS } from "@/lib/spaces"; -export const metadata: Metadata = { - title: "rSwag — Merch for the rSpace Ecosystem", - description: "Design and order custom merchandise for rSpace communities. Stickers, shirts, and more.", -}; +const API_URL = process.env.NEXT_PUBLIC_API_URL || "http://localhost:8000/api"; -export default function RootLayout({ +async function getSpaceConfig(spaceId: string): Promise { + try { + const res = await fetch(`${API_URL}/spaces/${spaceId}`, { + next: { revalidate: 300 }, + }); + if (res.ok) return res.json(); + } catch {} + return null; +} + +export async function generateMetadata(): Promise { + const cookieStore = await cookies(); + const spaceId = cookieStore.get("space_id")?.value || "default"; + const space = await getSpaceConfig(spaceId); + + const name = space?.name || "rSwag"; + const tagline = space?.tagline || "Merch for the rSpace Ecosystem"; + return { + title: `${name} — ${tagline}`, + description: space?.description || "Design and order custom merchandise.", + }; +} + +export default async function RootLayout({ children, }: { children: React.ReactNode; }) { + const cookieStore = await cookies(); + const spaceId = cookieStore.get("space_id")?.value || "default"; + const space = await getSpaceConfig(spaceId); + + const name = space?.name || "rSwag"; + const footerText = space?.footer_text || "rSpace. Infrastructure for the commons."; + const logoUrl = space?.logo_url; + const themeCSS = space?.theme ? themeToCSS(space.theme) : ""; + return ( + + {themeCSS && ( +