ghostguild-org/CLAUDE.md
Jennie Robinson Faber a62e167876 Migrate design system from ethereal/cool to warm/craft/guild theme
Replace ghost/whisper/sparkle color palettes with guild/candlelight/parchment/ember/earth tokens.
Switch typography from NB Television Pro to Quietism serif. Update all 25 Vue components,
layouts, and pages to new design system. Add circle color tokens, typography scale, prose-guild
class, and warm texture effects. Clean up stale documentation files.
2026-02-24 20:01:11 +00:00

4.6 KiB

CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

Project Overview

Ghost Guild is a membership community platform for game developers exploring cooperative business models. Built with Nuxt 4, Vue 3, MongoDB, and Nuxt UI 4.

Commands

npm run dev        # Start dev server at http://localhost:3000
npm run build      # Production build
npm run preview    # Preview production build

No test framework is currently configured.

Architecture

Stack

  • Framework: Nuxt 4 (Vue 3 + Nitro server)
  • UI: Nuxt UI 4 (@nuxt/ui@^4) with Tailwind CSS
  • Database: MongoDB via Mongoose
  • Auth: JWT magic link (email-only, no passwords)
  • Payments: Helcim (recurring subscriptions + ticket sales)
  • Email: Resend
  • Slack: @slack/web-api for member invitations and notifications
  • Images: Cloudinary
  • Analytics: Plausible (ghostguild.org)

Key Directories

  • app/composables/ — State management via useState() (no Pinia/Vuex). Key composables: useAuth, useHelcim, useMemberPayment, useMemberStatus
  • app/config/ — Circle definitions (circles.js) and contribution tiers (contributions.js) used across frontend and forms
  • app/middleware/ — Route guards: auth.js (member pages), admin.js (admin pages), coming-soon.global.js (launch gate)
  • app/layouts/default, admin, landing, coming-soon
  • server/api/ — Nitro API routes organized by feature: auth/, events/, members/, helcim/, series/, updates/, admin/, slack/
  • server/models/ — Mongoose schemas: Member, Event, Series, Update
  • server/utils/ — Service integrations: mongoose.js, helcim.js, resend.js, slack.ts, tickets.js

Domain Model

Three membership circles: Community, Founder, Practitioner — each with different access and context. Five contribution tiers: $0, $5, $15, $30, $50/month via Helcim subscriptions.

Member statuses: pending_payment, active, suspended, cancelled.

Events support ticketing with circle-specific pricing overrides and can be grouped into Series with bundled passes.

Design System

  • Colors: guild-* (warm neutral), candlelight-* (amber/gold accent), parchment-* (cream surfaces), ember-* (rust accent), earth-* (brown/ochre) — defined in app/assets/css/main.css
  • Circle tokens: --color-circle-community, --color-circle-founder, --color-circle-practitioner with -light, -dark, -bg variants
  • Typography: Inter (body), Quietism (display/headers, self-hosted from public/fonts/), Ubuntu Mono (code)
  • Theme: primary: amber, neutral: stone — configured in app/app.config.ts
  • Effects: .candlelight-glow, .warm-text, .ink-grain, .paper-texture, .woodcut-border, .guild-stamp, .halftone-texture, .dithered-bg, .dithered-warm
  • Content: .prose-guild class for wiki/long-form content with warm palette and Quietism headings

Environment

Copy .env.example to .env. Required: MONGODB_URI, JWT_SECRET, RESEND_API_KEY, HELCIM_API_TOKEN, SLACK_BOT_TOKEN. Public vars are prefixed NUXT_PUBLIC_. The NUXT_PUBLIC_COMING_SOON flag gates access behind a launch page.

Conventions

  • All frontend code is plain JavaScript (not TypeScript), using Vue 3 Composition API
  • Server utilities auto-imported by Nitro — no explicit imports needed in API routes
  • Use USwitch (not UToggle) — this is the correct Nuxt UI 3+ component name
  • No fallback/placeholder data — always use real data
  • Follow Nuxt 4 file-based routing conventions for route naming
  • Always check Nuxt UI 3 latest documentation on the web when implementing UI components

Product Spec

The sections below describe planned and in-progress features for reference.

Member Features

  • Profiles with privacy controls (public/members-only/private per field)
  • Member updates/mini blog with rich text and images
  • Peer support system with Cal.com integration for 1:1 scheduling

Events System

  • RSVP with capacity limits and waitlist management
  • Calendar export (.ics), ticketing, series passes
  • Member-proposed events with interest threshold

Resources (Planned)

  • Learning paths by circle, templates and tools, case studies
  • Tag by circle relevance, download tracking, version control

Implementation Priority

Must have: Payment processing, Slack automation, member dashboard, resource library, event listing/RSVP Nice to have: Member profiles, peer matching, Cal.com, member updates Post-launch: Etherpad integration, member-proposed events, advanced search, analytics dashboard