Meww.me Documentation
Meww.me is a production-grade Discord music bot built with TypeScript, Discord.js v14, and Lavalink v4. It ships with a full web dashboard, a REST API, real-time WebSocket synchronization, a tiered premium system, and over 80 slash commands across six categories.
This documentation covers the complete system: backend architecture, frontend dashboard, API surface, configuration, deployment, and operational guidance.
Technology Stack
| Layer | Technology |
|---|---|
| Runtime | Node.js 18+ (LTS recommended) |
| Language | TypeScript 5.x |
| Discord Library | discord.js v14 |
| Audio Engine | Lavalink v4 via Mewslink (custom client) |
| REST API | Fastify (port 2555) |
| Webhook Server | Express (port 2444) |
| Realtime | Socket.IO (attached to Fastify) |
| Frontend | React 18 + Vite + TailwindCSS + Radix UI |
| Database | mewwme.quick.db (JSON, MongoDB, MySQL, PostgreSQL) |
| Logging | Winston with daily file rotation |
| Process Manager | PM2 / Docker / Pterodactyl |
Supported Databases
| Driver | Library | Config Key |
|---|---|---|
| JSON | mewwme.quick.db/JSONDriver | json |
| MongoDB | mewwme.quick.db/MongoDriver + mongoose | mongodb |
| MySQL | mewwme.quick.db/MySQLDriver + mysql2 | mysql |
| PostgreSQL | mewwme.quick.db/PostgresDriver + pg | postgres |
The driver is selected in config.yml under features.DATABASE.driver. If an invalid value is provided, the bot falls back to JSON.
How the System Connects
┌──────────────┐
│ config.yml │
└──────┬───────┘
│
┌──────▼───────┐
│ index.ts │ Entry point
└──────┬───────┘
│
┌──────▼───────┐
│ manager.ts │ Extends discord.js Client
└──────┬───────┘
│
┌─────────────────┼─────────────────┐
│ │ │
┌──────▼──────┐ ┌──────▼──────┐ ┌──────▼──────┐
│ handlers/ │ │ database/ │ │ web/ │
│ loadCommand │ │ driver/ │ │ RestAPI.ts │
│ loadEvents │ │ schema/ │ │ WebServer │
│ loadPlayer │ │ setup/ │ │ Dashboard │
└──────┬──────┘ └──────┬──────┘ └──────┬──────┘
│ │ │
┌──────▼──────┐ ┌──────▼──────┐ ┌──────▼──────┐
│ commands/ │ │ MongoDB │ │ frontend/ │
│ events/ │ │ MySQL │ │ (React) │
│ buttons/ │ │ PostgreSQL │ │ Socket.IO │
│ mewslink/ │ │ JSON │ └─────────────┘
└─────────────┘ └─────────────┘index.tsreadsconfig.ymlviaConfigDataServiceand creates aManagerinstance.Manager(extendsClient) initializes the Mewslink audio engine, collections, and callsstart().start()boots: handlers, database, REST API, WebServer, notification services, and premium services.DatabaseServiceselects the configured driver, connects, and registers all database tables.RestAPI(Fastify) serves/v1/*internal API and/api/*dashboard proxy. TheDashboardPluginhandles OAuth2, sessions, CORS, and Socket.IO.WebServer(Express) handles external webhooks from Top.gg, Ko-fi, and Last.fm.frontend/is a standalone React + Vite application that communicates with the Fastify REST API.
Documentation Structure
| Section | What You Will Find |
|---|---|
| Features | Complete feature list with technical details |
| Getting Started | Installation, first run, and first song |
| Project Structure | Backend and frontend folder maps |
| Backend Overview | Manager class, services, handlers, Mewslink |
| Frontend Overview | React app, routing, hooks, Socket.IO |
| Bot Commands | All slash commands organized by category |
| REST API | Internal and dashboard API endpoints |
| Realtime Layer | WebSocket and Socket.IO event system |
| Configuration | Full config.yml reference |
| Premium System | Patreon, Ko-fi, codes, premium role |
| Integrations | Spotify, Last.fm, Top Chart API setup |
| Reverse Proxy & DNS | Nginx, SSL, and domain configuration |
| Deployment Guide | Dev, production, Docker, PM2, sharding |
| Pterodactyl Guide | Panel eggs and startup configuration |
| Troubleshooting | Common errors and fixes |
| File Reference | Purpose of each major file |
| Notes | Security, environment variables, operational tips |
Support & Bug Reports
Found a bug, have a question, or need help with setup? You can reach out through the official Discord server:
- DM a staff member on the Support Server (opens in a new tab)
- Open a ticket in the support channel for tracked assistance
For feature requests or code-level issues, please DM a staff member or open a ticket on the Discord server.
If you enjoy the project and want to help with hosting and maintenance costs, you can donate at tako.id/eleremen (opens in a new tab).