A live, UI-only website that showcases what the Design can or will look like and what can be done.
This is how the dashboard will look like.
This showcasing site will be used as a resource baseline for any future implementations, add-ons and pages.The plan is to have a sidebar setup with thematic tabs like "Welcoming, Moderation, Tickets" and more the more features get added.
Due to their simplicity the first feature implementation will be configurable Welcome messages, such as Enable/Disable, choose channel and edit message text.
Synchronazation will be done via a database. The dashboard reads and writes configuration changes accordingly for the bot to read and execute.
Welcome message settings
This page is designed as the first real configuration module. It focuses on the minimum fields you need to make the feature useful without recreating the old clutter.
Enable welcome messages
Turns the system on or off for the selected Discord server.
Dashboard structure after Welcome
Once Welcome works end to end, the same pattern would be reused for more modules without changing the overall dashboard design.
Tickets
Builder, support roles, target channel, and message preview.
AutoMod
Simple enabled state first, later extend to thresholds and actions.
Audit log
Toggle plus selected channel, using the same form and save flow.
Implementation map
Use this order to go from static dashboard to a working Welcome configuration without creating a tangled codebase again.
Frontend shell
Deploy this page as your new dashboard base. Keep design and HTML clean before adding backend logic.
Backend auth and guild routing
Add Discord login, guild selection, and a route like /dashboard/server/:guildId only after the shell is stable.
Welcome read route
Create an authenticated API endpoint that returns the guild's current welcome state, channel, and message fields.
Welcome save route
Create a POST route that validates permissions, validates the payload, and updates the database.
Bot consumption
Make sure the bot reads the same stored values and uses them when a new member joins, instead of relying only on slash-command updates.