- Updated package.json to include new dependencies: `@radix-ui/react-dialog` and `cmdk`. - Enhanced global styles in globals.css for improved visual depth in dark mode. - Refactored dashboard page components to improve layout and accessibility, including new icons and responsive design adjustments. - Implemented suspense handling in commands page for better loading states. - Improved sidebar navigation with new icons and mobile responsiveness. - Added FieldAnchor components across various forms for better accessibility and structure. - Enhanced commands manager with search parameter handling for improved user experience. - Updated multiple module forms to include FieldAnchor for consistent layout and accessibility.
348 lines
20 KiB
PHP
348 lines
20 KiB
PHP
<?php
|
||
declare(strict_types=1);
|
||
|
||
return [
|
||
'meta' => [
|
||
'description' => 'Discord bot with moderation, community, and integration modules plus a web dashboard.',
|
||
],
|
||
'nav' => [
|
||
'status' => 'Status',
|
||
'invite' => 'Invite',
|
||
'support' => 'Support',
|
||
'login' => 'Log in',
|
||
'impressum' => 'Legal notice',
|
||
'privacy' => 'Privacy',
|
||
'terms' => 'Terms of service',
|
||
'dashboard' => 'Dashboard',
|
||
],
|
||
'landing' => [
|
||
'headline' => 'Moderation, community, and integrations — in one bot.',
|
||
'subtitle' => 'Discord bot with moderation, community, and integration modules plus a web dashboard.',
|
||
'invite' => 'Invite bot',
|
||
'login' => 'Open dashboard',
|
||
'support' => 'Support server',
|
||
'stats_guilds' => 'Servers',
|
||
'stats_users' => 'Users (approx.)',
|
||
'features_title' => 'Modules',
|
||
'features_subtitle' => 'Features Nexumi provides per server.',
|
||
],
|
||
'module_groups' => [
|
||
'moderation' => [
|
||
'label' => 'Moderation',
|
||
'modules' => [
|
||
['label' => 'Moderation', 'description' => 'Bans, warnings, timeouts, and the case system'],
|
||
['label' => 'Auto-moderation', 'description' => 'Spam, raid, and nuke protection'],
|
||
['label' => 'Logging', 'description' => 'Log channels for server events'],
|
||
],
|
||
],
|
||
'engagement' => [
|
||
'label' => 'Engagement',
|
||
'modules' => [
|
||
['label' => 'Welcome & goodbye', 'description' => 'Join and leave messages, autoroles'],
|
||
['label' => 'Verification', 'description' => 'Button and captcha verification'],
|
||
['label' => 'Leveling & XP', 'description' => 'Text and voice XP, role rewards'],
|
||
['label' => 'Economy', 'description' => 'Currency, shop, and games'],
|
||
['label' => 'Fun & games', 'description' => 'Minigames and media commands'],
|
||
],
|
||
],
|
||
'community' => [
|
||
'label' => 'Community',
|
||
'modules' => [
|
||
['label' => 'Giveaways', 'description' => 'Button-based giveaways'],
|
||
['label' => 'Tickets', 'description' => 'Support ticket panels and transcripts'],
|
||
['label' => 'Self roles', 'description' => 'Reaction, button, and dropdown role panels'],
|
||
['label' => 'Starboard', 'description' => 'Highlight popular messages'],
|
||
['label' => 'Suggestions', 'description' => 'Community suggestions with voting'],
|
||
['label' => 'Birthdays', 'description' => 'Birthday announcements and roles'],
|
||
],
|
||
],
|
||
'utility' => [
|
||
'label' => 'Utility',
|
||
'modules' => [
|
||
['label' => 'Tags', 'description' => 'Custom commands and auto-responders'],
|
||
['label' => 'Temp voice', 'description' => 'Join-to-create voice channels'],
|
||
],
|
||
],
|
||
'integrations' => [
|
||
'label' => 'Integrations',
|
||
'modules' => [
|
||
['label' => 'Server statistics', 'description' => 'Automatic stats channels and invites'],
|
||
['label' => 'Social feeds', 'description' => 'Twitch, YouTube, RSS, and Reddit notifications'],
|
||
['label' => 'Scheduler', 'description' => 'Scheduled and recurring announcements'],
|
||
['label' => 'Backups', 'description' => 'Server backup and restore'],
|
||
],
|
||
],
|
||
],
|
||
'legal' => [
|
||
'nav_title' => 'Legal',
|
||
'updated' => 'Last updated: July 2026',
|
||
'impressum' => [
|
||
'title' => 'Legal notice (Impressum)',
|
||
'sections' => [
|
||
[
|
||
'heading' => 'Information pursuant to Section 5 DDG (Germany)',
|
||
'paragraphs' => [
|
||
'Service provider and operator of Nexumi (website, Discord bot, and dashboard):',
|
||
],
|
||
'lines' => [
|
||
'HexaHost',
|
||
'Proprietor: Samuel Müller',
|
||
'Richard-Miller-Straße 1',
|
||
'94051 Hauzenberg',
|
||
'Germany',
|
||
],
|
||
],
|
||
[
|
||
'heading' => 'Contact',
|
||
'lines' => [
|
||
'Phone: +49 15566 175855',
|
||
'Email: info@hexahost.de',
|
||
'Operator website: https://www.hexahost.de',
|
||
],
|
||
],
|
||
[
|
||
'heading' => 'VAT ID',
|
||
'paragraphs' => [
|
||
'VAT identification number pursuant to Section 27a of the German VAT Act: DE458741546',
|
||
],
|
||
],
|
||
[
|
||
'heading' => 'Responsible for content',
|
||
'lines' => [
|
||
'Samuel Müller',
|
||
'Richard-Miller-Straße 1',
|
||
'94051 Hauzenberg',
|
||
'Germany',
|
||
],
|
||
],
|
||
[
|
||
'heading' => 'EU dispute resolution',
|
||
'paragraphs' => [
|
||
'The European Commission provides a platform for online dispute resolution (ODR): https://ec.europa.eu/consumers/odr/',
|
||
'You can find our email address in the legal notice above.',
|
||
],
|
||
],
|
||
[
|
||
'heading' => 'Consumer dispute resolution',
|
||
'paragraphs' => [
|
||
'We are neither willing nor obliged to participate in dispute resolution proceedings before a consumer arbitration board.',
|
||
],
|
||
],
|
||
[
|
||
'heading' => 'Liability for content',
|
||
'paragraphs' => [
|
||
'As a service provider, we are responsible for our own content on these pages in accordance with general laws (Section 7 (1) DDG). Under Sections 8 to 10 DDG, we are not obliged to monitor transmitted or stored third-party information or to investigate circumstances indicating illegal activity.',
|
||
'Obligations to remove or block the use of information under general laws remain unaffected. Liability in this regard is only possible from the time we become aware of a specific infringement. Upon becoming aware of such infringements, we will remove such content without delay.',
|
||
],
|
||
],
|
||
[
|
||
'heading' => 'Liability for links',
|
||
'paragraphs' => [
|
||
'Our offering contains links to external third-party websites (including Discord and other services) over whose content we have no influence. Therefore, we cannot assume any liability for such external content. The respective provider or operator of the linked pages is always responsible for their content.',
|
||
'The linked pages were checked for possible legal violations at the time of linking. Illegal content was not recognizable at that time. Permanent monitoring of linked pages is not reasonable without concrete indications of a violation. Upon becoming aware of legal violations, we will remove such links without delay.',
|
||
],
|
||
],
|
||
[
|
||
'heading' => 'Copyright',
|
||
'paragraphs' => [
|
||
'Content and works created by the site operators on these pages (including Nexumi branding, logo, texts, and software) are subject to German copyright law. Reproduction, editing, distribution, and any kind of exploitation outside the limits of copyright require the written consent of the respective author or creator.',
|
||
'Where content on this site was not created by the operator, third-party copyrights are respected. In particular, third-party content is marked as such. If you nevertheless become aware of a copyright infringement, please notify us. Upon becoming aware of infringements, we will remove such content without delay.',
|
||
],
|
||
],
|
||
],
|
||
],
|
||
'privacy' => [
|
||
'title' => 'Privacy policy',
|
||
'sections' => [
|
||
[
|
||
'heading' => '1. Controller',
|
||
'paragraphs' => [
|
||
'The controller within the meaning of the GDPR for operating Nexumi (website, Discord bot, and web dashboard) is:',
|
||
],
|
||
'lines' => [
|
||
'HexaHost',
|
||
'Proprietor: Samuel Müller',
|
||
'Richard-Miller-Straße 1',
|
||
'94051 Hauzenberg',
|
||
'Germany',
|
||
'Phone: +49 15566 175855',
|
||
'Email: info@hexahost.de',
|
||
],
|
||
],
|
||
[
|
||
'heading' => '2. General information',
|
||
'paragraphs' => [
|
||
'We take the protection of your personal data seriously. We process personal data confidentially and in accordance with statutory data protection rules and this privacy policy.',
|
||
'This policy applies to the public Nexumi website, the Discord bot, and the related web dashboard. For general information about the operator, see also https://www.hexahost.de/datenschutz – the following sections are specifically adapted for Nexumi and Discord.',
|
||
],
|
||
],
|
||
[
|
||
'heading' => '3. Legal bases',
|
||
'paragraphs' => [
|
||
'Personal data is processed in particular on the basis of:',
|
||
],
|
||
'list' => [
|
||
'Art. 6 (1)(a) GDPR – consent (where expressly obtained)',
|
||
'Art. 6 (1)(b) GDPR – performance of a contract or pre-contractual steps (use of bot and dashboard on a Discord server)',
|
||
'Art. 6 (1)(c) GDPR – compliance with a legal obligation',
|
||
'Art. 6 (1)(f) GDPR – legitimate interests in secure, stable operations, abuse prevention, and support',
|
||
],
|
||
],
|
||
[
|
||
'heading' => '4. What data do we process?',
|
||
'paragraphs' => [
|
||
'Depending on the modules used, the following categories of data may be processed in particular:',
|
||
],
|
||
'list' => [
|
||
'Discord user IDs, guild names/IDs, channel and role IDs',
|
||
'Message content or metadata where a module requires it (e.g. moderation, logging, tickets, suggestions)',
|
||
'Moderation cases, warnings, timeouts, bans, and audit entries',
|
||
'Module and server settings configured in the dashboard',
|
||
'Economy/level/statistics data if the respective modules are enabled',
|
||
'Technical logs (timestamps, errors, job status) for operating the infrastructure',
|
||
],
|
||
],
|
||
[
|
||
'heading' => '5. Dashboard login (Discord OAuth2)',
|
||
'paragraphs' => [
|
||
'Login to the web dashboard uses Discord OAuth2. Typically the “identify” and “guilds” scopes are used to determine your Discord identity and your server list and to grant access to authorized servers.',
|
||
'Session data is stored server-side (including in Redis). Session cookies are technically required for authentication.',
|
||
],
|
||
],
|
||
[
|
||
'heading' => '6. Storage and hosting',
|
||
'paragraphs' => [
|
||
'Nexumi application data is stored in a PostgreSQL database operated by us. Cache, sessions, and job queues use Redis. Servers and processing are under the responsibility of HexaHost.',
|
||
'Retention periods may be configurable per module (e.g. log retention). Deletion or anonymization requests can be made via the bot command /gdpr (where available) or by contacting us using the details above.',
|
||
],
|
||
],
|
||
[
|
||
'heading' => '7. Recipients and processors',
|
||
'paragraphs' => [
|
||
'To provide the service, data is transmitted to Discord (Discord Inc. / affiliates) as technically required for bot features and OAuth. Discord’s privacy terms apply in addition.',
|
||
'Optional error monitoring (e.g. Sentry) may process technical error information including limited context.',
|
||
'We do not share data with third parties for advertising purposes.',
|
||
],
|
||
],
|
||
[
|
||
'heading' => '8. Website server log files',
|
||
'paragraphs' => [
|
||
'When you visit the website, server log files may be collected (e.g. IP address, browser, time, requested URL). Processing is based on Art. 6 (1)(f) GDPR to ensure uninterrupted operation and to prevent abuse. Log files are deleted regularly when no longer needed.',
|
||
],
|
||
],
|
||
[
|
||
'heading' => '9. Cookies',
|
||
'paragraphs' => [
|
||
'On the public website we only use necessary cookies or similar technologies where technically required. The dashboard sets session cookies for login. Nexumi does not use analytics or marketing cookies by default.',
|
||
],
|
||
],
|
||
[
|
||
'heading' => '10. Retention',
|
||
'paragraphs' => [
|
||
'Personal data is stored only as long as necessary for the respective purposes or as required by law. After the purpose ceases, data is deleted or anonymized unless legal obligations require otherwise.',
|
||
],
|
||
],
|
||
[
|
||
'heading' => '11. Your rights',
|
||
'paragraphs' => [
|
||
'You have the rights of access, rectification, erasure, restriction of processing, data portability, and objection to processing based on legitimate interests. You may withdraw consent at any time with effect for the future.',
|
||
'To exercise your rights, contact us using the details in the legal notice or – where available – use the bot command /gdpr.',
|
||
],
|
||
],
|
||
[
|
||
'heading' => '12. Right to lodge a complaint',
|
||
'paragraphs' => [
|
||
'You have the right to lodge a complaint with a data protection supervisory authority. For Bavaria this includes the Bavarian Data Protection Authority (BayLDA), Promenade 18, 91522 Ansbach, https://www.lda.bayern.de',
|
||
],
|
||
],
|
||
[
|
||
'heading' => '13. Security',
|
||
'paragraphs' => [
|
||
'We implement technical and organizational measures to protect personal data against loss, manipulation, and unauthorized access. Transmission usually uses TLS/HTTPS and encrypted connections to Discord.',
|
||
],
|
||
],
|
||
[
|
||
'heading' => '14. Updates',
|
||
'paragraphs' => [
|
||
'This privacy policy is current as of July 2026 and may be updated if the service or legal requirements change. The current version is available on this website.',
|
||
],
|
||
],
|
||
],
|
||
],
|
||
'terms' => [
|
||
'title' => 'Terms of service',
|
||
'sections' => [
|
||
[
|
||
'heading' => '1. Scope',
|
||
'paragraphs' => [
|
||
'These terms apply to use of the Nexumi Discord bot, the related web dashboard, and the public website. The provider is HexaHost, proprietor Samuel Müller.',
|
||
'By inviting the bot to a Discord server, using commands, or logging into the dashboard, you accept these terms.',
|
||
],
|
||
],
|
||
[
|
||
'heading' => '2. Service description',
|
||
'paragraphs' => [
|
||
'Nexumi provides moderation, community, utility, and integration features for Discord servers. The feature set may evolve; individual modules may be enabled, disabled, or limited (including premium limits where offered).',
|
||
],
|
||
],
|
||
[
|
||
'heading' => '3. User requirements and obligations',
|
||
'paragraphs' => [
|
||
'You may use Nexumi only if you have the required permissions on the respective Discord server and comply with Discord’s Terms of Service and Community Guidelines.',
|
||
'Server administrators are responsible for ensuring that bot usage and configured modules comply with applicable law and the rights of server members (including transparency toward members).',
|
||
],
|
||
'list' => [
|
||
'No abuse, spam, harassment, or circumvention of security mechanisms',
|
||
'No use to commit or facilitate unlawful acts',
|
||
'No attempts to access, disrupt, or overload systems without authorization',
|
||
],
|
||
],
|
||
[
|
||
'heading' => '4. Availability',
|
||
'paragraphs' => [
|
||
'We aim for continuous operation but do not guarantee absolute availability. Maintenance, Discord outages, or infrastructure issues may temporarily limit use. Planned maintenance will be announced where reasonably possible.',
|
||
],
|
||
],
|
||
[
|
||
'heading' => '5. Suspension and termination',
|
||
'paragraphs' => [
|
||
'If you violate these terms, the law, or Discord rules, we may restrict or block access to the bot or dashboard for users or servers (including blacklisting). You may remove the bot from your server at any time; use for that server then ends.',
|
||
],
|
||
],
|
||
[
|
||
'heading' => '6. Liability',
|
||
'paragraphs' => [
|
||
'We are liable according to statute for injury to life, body, or health and under the German Product Liability Act. For other damages we are liable only for intent and gross negligence and for breach of essential contractual duties (cardinal duties); in cases of slight negligence liability is limited to foreseeable, typical damages.',
|
||
'Users and local server teams remain responsible for content created or stored via Discord. We are not liable for decisions server teams make based on moderation data.',
|
||
],
|
||
],
|
||
[
|
||
'heading' => '7. Copyright and trademarks',
|
||
'paragraphs' => [
|
||
'Nexumi software, design, texts, and marks are protected by copyright and/or trademark law. Use outside the intended use of the service requires our prior consent.',
|
||
],
|
||
],
|
||
[
|
||
'heading' => '8. Changes',
|
||
'paragraphs' => [
|
||
'We may update these terms for legal, technical, or operational reasons. The current version will be published on the website or dashboard. Material changes will be communicated where reasonably possible.',
|
||
],
|
||
],
|
||
[
|
||
'heading' => '9. Governing law',
|
||
'paragraphs' => [
|
||
'German law applies, excluding the UN Convention on Contracts for the International Sale of Goods, unless mandatory consumer protection rules require otherwise.',
|
||
'If any provision is invalid, the remaining provisions remain in effect.',
|
||
],
|
||
],
|
||
[
|
||
'heading' => '10. Contact',
|
||
'paragraphs' => [
|
||
'Questions about these terms should be sent using the contact details in the legal notice.',
|
||
],
|
||
],
|
||
],
|
||
],
|
||
],
|
||
];
|