A furry-friendly Discord bot that brings a little encouragement to your community. Get daily motivational quotes in the channel you choose, request an instant boost, or suggest a quote for the shared library. Optional Premium adds custom scheduling for one server through Discord.
Spread joy, one quote at a time.
- Daily Motivation - Free quotes delivered to a chosen channel at
8:00 AM America/Chicago, plus instant quotes with
/quote. - Premium Scheduling - Optional Discord server subscription for daily, weekly, or monthly frequency with a custom time and timezone.
- Community Suggestions - Quote submissions reviewed by the bot team for a shared library across servers, with review-result notifications.
- Bot Management - Authorized operators manage quotes, activities, and suggestion reviews through slash commands.
- Reliable Delivery - Sharding, scheduled jobs, delivery deduplication, and an HTTP health endpoint support operation of the hosted bot.
- Website and Guides - A static Next.js and Fumadocs site with setup, Premium activation, developer guides, privacy, and terms.
Read the server guide for setup and troubleshooting.
- Invite FluffBoost to your server using this link.
- As a server administrator, use
/setup channelto choose the text channel for daily quotes. The bot needs View Channel, Send Messages, and Embed Links there. - Try
/quotenow and enjoy the default daily 8:00 AM America/Chicago boost.
To upgrade one server, follow the
Premium activation guide:
run /premium, subscribe through Discord desktop or browser, confirm
Premium Active, and set your timing with /setup schedule.
Read the Privacy Policy and Terms of Service.
FluffBoost uses Discord slash commands grouped by role.
| Command | Description |
|---|---|
/about |
Learn about the bot and its creators |
/help |
View available commands |
/invite |
Get the bot invite link |
/quote |
Receive an instant motivational quote |
/suggestion |
Suggest a quote for review |
/premium |
View premium subscription info |
/changelog |
View recent changes |
/suggestion, /premium and /setup work only inside a server.
These manage shared content and are restricted to users in the operator's
ALLOWED_USERS (an empty list disables them). Your own server's
administrator role does not grant access. Discord also shows /admin only
to members with Administrator by default, so an authorized operator needs
Administrator (or a Server Settings > Integrations override) in the server
where they run it.
| Command | Description |
|---|---|
/admin quote create |
Add a new motivational quote |
/admin quote list |
List all quotes |
/admin quote remove |
Remove a quote |
/admin activity create |
Add a bot status activity |
/admin activity list |
List all activities |
/admin activity remove |
Remove an activity |
/admin suggestion approve |
Approve a suggested quote |
/admin suggestion reject |
Reject a suggested quote |
/admin suggestion list |
List suggestions |
/admin suggestion stats |
View suggestion statistics |
Require Administrator in the server.
| Command | Description |
|---|---|
/setup channel |
Set the quote delivery channel |
/setup schedule |
Customize timing and timezone (Premium) |
Owner test commands are available in development and staging, and excluded from production command registration. Keep test entitlements on separate test applications.
| Command | Description |
|---|---|
/owner premium test-create |
Create a test entitlement |
/owner premium test-delete |
Delete a test entitlement |
/owner premium test-list |
List all entitlements (test grants marked) |
| Layer | Technology |
|---|---|
| Runtime | Bun |
| Language | TypeScript 5.x (strict mode) |
| Discord Library | Discord.js v14 |
| Database | PostgreSQL 18 via Drizzle ORM |
| Job Queue | BullMQ with Redis 8 |
| HTTP Server | Express 5 |
| Containerization | Docker (multi-stage, Bun) |
| Monorepo | Bun workspaces + Turborepo |
| Marketing & docs | Next.js 16 + Fumadocs (static, GitHub Pages) |
| Brand animation | Remotion |
| CI/CD | GitHub Actions |
| Deployment | Docker on Dokploy |
- Bun 1.3.14 (the version pinned in
package.json) - PostgreSQL 18 (or use Docker Compose)
- Redis 8 (or use Docker Compose)
- A Discord application with bot token
ffmpegandffprobe, only forbun run brand:verify
Run everything from the repository root. Bun resolves the whole workspace.
-
Clone the repository:
git clone https://github.com/MrDemonWolf/fluffboost.git cd fluffboost -
Install dependencies:
bun install
-
Copy and configure environment variables. Required:
DISCORD_APPLICATION_BOT_TOKEN,OWNER_IDandMAIN_CHANNEL_ID(the template's database and Redis URLs match Compose):cp apps/discord/.env.example apps/discord/.env
-
Start local infrastructure (PostgreSQL 18 + Redis 8 on
127.0.0.1; the bot is not started):docker compose up -d
To run the bot in a container instead, use
docker compose --profile bot up --build. It publishes the health API on127.0.0.1:3000and needs Docker Compose 2.24+ for the optionalenv_file. -
Sync the database schema (use
bun run db:migrateinstead if you will also run the bot container against this database, since its startup migration refuses a schema with no migration history):bun run db:push
-
Load the starter quotes:
bun run db:seed
-
Start the bot in watch mode:
bun run dev:discord
Run these from the repository root; they fan out through Turborepo.
bun run dev:discord- Start the bot with hot reloadbun run dev:docs- Start the marketing/docs sitebun run dev:motion- Preview the Remotion brand compositionsbun run dev- Start all three workspaces at oncebun run build- Build the docs static export (apps/docs/out)bun run brand:render- Render PNG/MP4/GIF brand exportsbun run brand:verify- Verify the committed brand exportsbun run lint/bun run lint:check- ESLint (with / without fixes)bun run format- Format code with Prettierbun run typecheck- TypeScript type checkingbun run test- Bot unit testsbun run test:coverage- Bot unit tests with coverage (what CI runs)bun run test:e2e- Bot (real PostgreSQL) and browser end-to-end suitesbun run db:push- Sync schema to database (dev)bun run db:generate- Generate a Drizzle migrationbun run db:migrate- Run migrations (production)bun run db:studio- Open Drizzle Studio UIbun run db:seed- Load the starter quote library (safe to re-run)bun run db:reconcile --confirm- Bring a Prisma-era or drifted database to the current schema and record the baseline (back up first)
To build the GitHub Pages site with its production prefix, run
NEXT_PUBLIC_BASE_PATH=/fluffboost bun run --filter=@fluffboost/docs build.
The developer guide
covers deployment, configuration, testing, Premium, and contributing. The
Remotion workspace documents the brand animation
sources and exports.
- ESLint (
@eslint/jsrecommended + typescript-eslint rules) - Strict TypeScript (
noUnusedLocals,noUnusedParameters,noImplicitReturns,noUncheckedIndexedAccess) - bun:test + Sinon unit tests, supertest for the health API
- Bot end-to-end tests against real PostgreSQL
- Playwright and axe-core for desktop and mobile-width website flows
- Schema drift, dependency audit, brand export and Docker image checks in GitHub Actions
fluffboost/
├── apps/
│ ├── discord/ # The Discord bot
│ │ ├── src/
│ │ │ ├── api/ # Express health API (/api/health, /live)
│ │ │ ├── commands/ # Slash commands (admin/, owner/, setup/)
│ │ │ ├── database/ # Drizzle client, schema and migrator
│ │ │ ├── events/ # Discord event handlers + command registry
│ │ │ ├── redis/ # Redis/IORedis connections
│ │ │ ├── utils/ # Shared utilities
│ │ │ └── worker/ # BullMQ worker and jobs
│ │ ├── tests/ # Unit tests (mirror src/)
│ │ ├── e2e/ # End-to-end tests against real PostgreSQL
│ │ ├── scripts/ # Maintenance scripts (quote seed)
│ │ ├── drizzle/ # Migration SQL and journal
│ │ ├── Dockerfile # Multi-stage build (turbo prune)
│ │ └── docker-entrypoint.sh
│ ├── docs/ # Marketing site + docs (Next.js + Fumadocs)
│ │ ├── app/ # Landing page + docs routes
│ │ ├── content/ # user/ (Guide) + developer/ docs (MDX)
│ │ └── e2e/ # Browser flows against the static export
│ └── motion/ # Remotion brand animations
├── assets/brand/ # Brand artwork
│ ├── motion-sources/ # Backplates used by apps/motion
│ └── animated/ # Rendered Discord and marketing exports
├── docs/ # Marketing copy and artwork brief
├── docker-compose.yml # Local PostgreSQL + Redis (bot: --profile bot)
├── turbo.json # Turborepo pipeline
└── package.json # Bun workspace root
If you have any questions, suggestions, or feedback:
- Website & docs: mrdemonwolf.github.io/fluffboost
- Developer guide: mrdemonwolf.github.io/fluffboost/developers
- Discord: Join my server
Made with love by MrDemonWolf, Inc.
