Skip to main content

Community Features

MOOD MNKY’s community features connect fragrance enthusiasts through Discord, the MNKY VERSE blog, and the store blog. Discord serves as the primary chat and event hub, with a full LABZ dashboard for admins to manage messages, webhooks, members, roles, and moderation.

Overview

Community Touchpoints

TouchpointURLPurpose
Verse Community/verse/communityHub page with Discord join CTA and blog links
DiscordNEXT_PUBLIC_DISCORD_INVITE_URLPrimary community chat and events
MNKY VERSE Bloghttps://mnky-command.moodmnky.com/verse/blogSupabase/Notion-synced stories
Store Blog/blogs/hello-welcome-to-mood-mnkyNative Shopify blog

Discord Integration

User-Facing

  • Verse Community page (app/(storefront)/verse/community/page.tsx): “Join Discord” button when NEXT_PUBLIC_DISCORD_INVITE_URL is set; links to MNKY VERSE Blog and store blog
  • Discord OAuth link (/verse/auth/discord, /verse/auth/discord/link): Link Discord account to MNKY VERSE profile for quests and XP
  • Event ingestion: Discord events (joined, message, reaction, voice minutes, etc.) are sent to the app and processed via Inngest (discord/event.received) for gamification and analytics

Platform Dashboard (LABZ)

Location: Platform → Discord (app/(dashboard)/platform/discord/page.tsx) Full control panel for the MNKY VERSE Discord server:
TabPurpose
MessagesSend messages to channels
ForumsForum channel management
WebhooksCreate and manage webhooks; tokens stored securely
Embed BuilderBuild rich embeds for announcements
MembersView and manage members, assign roles
RolesRole management
ModerationModeration tools
Audit LogsServer audit logs
Requires DISCORD_BOT_TOKEN_MNKY_VERSE and Discord admin access.

API Routes

RoutePurpose
GET /api/discord/guildsList guilds the bot is in
GET /api/discord/channels?guildId=List channels in a guild
GET/POST /api/discord/webhooksList or create webhooks; tokens encrypted in DB
POST /api/discord/webhooks/executeExecute stored webhook
GET /api/discord/membersList members
GET /api/discord/rolesList roles
POST /api/discord/eventsIngest Discord event (internal API key required)

Event Ingestion

POST /api/discord/events accepts:
  • profileId, discordUserId, guildId, channelId (optional)
  • eventType: joined, message, reaction, voice_minutes, attachment_posted, thread_reply
  • eventRef, value
Events are queued to Inngest discord/event.received for async processing (XP, quest progress, etc.).

Environment Variables

VariablePurpose
DISCORD_BOT_TOKEN_MNKY_VERSEBot token for Discord API (server-only)
NEXT_PUBLIC_DISCORD_INVITE_URLPublic invite URL for “Join Discord” button

Content Delivery

  • MNKY VERSE Blog: Supabase verse_blog_posts, synced from Notion; served at /verse/blog
  • Store blog: Native Shopify blog; featured in theme and footer
  • Cross-linking: Homepage and blog templates link “View all in the MNKY VERSE” to the app blog