diff --git a/.env.development b/.env.development new file mode 100644 index 0000000..736ae0b --- /dev/null +++ b/.env.development @@ -0,0 +1,14 @@ +# Development environment configuration +# This file is used when running: npm run dev + +# API URL - empty to use vite proxy to localhost:8080 +VITE_API_BASE_URL= + +# App domain for local testing +APP_DOMAIN=localhost + +# Turnstile test keys (Cloudflare provides test keys for development) +VITE_TURNSTILE_SITE_KEY=1x00000000000000000000AA + +# Docs URL +VITE_DOCS_URL=https://docs.modl.top diff --git a/.env.production b/.env.production new file mode 100644 index 0000000..b576511 --- /dev/null +++ b/.env.production @@ -0,0 +1,11 @@ +# Production environment configuration +# This file is used when running: npm run build + +# API URL - points to production API +VITE_API_BASE_URL=https://api.modl.gg + +# App domain +APP_DOMAIN=modl.gg + +# Docs URL +VITE_DOCS_URL=https://docs.modl.gg diff --git a/.gitignore b/.gitignore index cb40789..031101b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,315 @@ -node_modules -dist +# Created by https://www.toptal.com/developers/gitignore/api/node,windows,macos,visualstudiocode,intellij+all +# Edit at https://www.toptal.com/developers/gitignore?templates=node,windows,macos,visualstudiocode,intellij+all + +### Intellij+all ### +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +# User-specific stuff +.idea/**/workspace.xml +.idea/**/tasks.xml +.idea/**/usage.statistics.xml +.idea/**/dictionaries +.idea/**/shelf + +# AWS User-specific +.idea/**/aws.xml + +# Generated files +.idea/**/contentModel.xml + +# Sensitive or high-churn files +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml +.idea/**/dbnavigator.xml + +# Gradle +.idea/**/gradle.xml +.idea/**/libraries + +# Gradle and Maven with auto-import +# When using Gradle or Maven with auto-import, you should exclude module files, +# since they will be recreated, and may cause churn. Uncomment if using +# auto-import. +# .idea/artifacts +# .idea/compiler.xml +# .idea/jarRepositories.xml +# .idea/modules.xml +# .idea/*.iml +# .idea/modules +# *.iml +# *.ipr + +# CMake +cmake-build-*/ + +# Mongo Explorer plugin +.idea/**/mongoSettings.xml + +# File-based project format +*.iws + +# IntelliJ +out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Cursive Clojure plugin +.idea/replstate.xml + +# SonarLint plugin +.idea/sonarlint/ + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties + +# Editor-based Rest Client +.idea/httpRequests + +# Android studio 3.1+ serialized cache file +.idea/caches/build_file_checksums.ser + +### Intellij+all Patch ### +# Ignore everything but code style settings and run configurations +# that are supposed to be shared within teams. + +.idea/* + +!.idea/codeStyles +!.idea/runConfigurations + +### macOS ### +# General .DS_Store -server/public -vite.config.ts.* -*.tar.gz -.env \ No newline at end of file +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + + +# Thumbnails +._* +**/.* +.* +!.gitignore +!.git/ +!.github/ + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +### macOS Patch ### +# iCloud generated files +*.icloud + +### Node ### +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* +.pnpm-debug.log* + +# Diagnostic reports (https://nodejs.org/api/report.html) +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage +*.lcov + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# Snowpack dependency directory (https://snowpack.dev/) +web_modules/ + +# TypeScript cache +*.tsbuildinfo + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional stylelint cache +.stylelintcache + +# Microbundle cache +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variable files +.env +.env.development.local +.env.test.local +.env.production.local +.env.local + +# parcel-bundler cache (https://parceljs.org/) +.cache +.parcel-cache + +# Next.js build output +.next +out + +# Nuxt.js build / generate output +.nuxt +dist + +# Gatsby files +.cache/ +# Comment in the public line in if your project uses Gatsby and not Next.js +# https://nextjs.org/blog/next-9-1#public-directory-support +# public + +# vuepress build output +.vuepress/dist + +# vuepress v2.x temp and cache directory +.temp + +# Docusaurus cache and generated files +.docusaurus + +# Serverless directories +.serverless/ + +# FuseBox cache +.fusebox/ + +# DynamoDB Local files +.dynamodb/ + +# TernJS port file +.tern-port + +# Stores VSCode versions used for testing VSCode extensions +.vscode-test + +# yarn v2 +.yarn/cache +.yarn/unplugged +.yarn/build-state.yml +.yarn/install-state.gz +.pnp.* + +### Node Patch ### +# Serverless Webpack directories +.webpack/ + +# Optional stylelint cache + +# SvelteKit build / generate output +.svelte-kit + +### VisualStudioCode ### +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +!.vscode/*.code-snippets + +# Local History for Visual Studio Code +.history/ + +# Built Visual Studio Code Extensions +*.vsix + +### VisualStudioCode Patch ### +# Ignore all local history of files +.history +.ionide + +### Windows ### +# Windows thumbnail cache files +Thumbs.db +Thumbs.db:encryptable +ehthumbs.db +ehthumbs_vista.db + +# Dump file +*.stackdump + +# Folder config file +[Dd]esktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msix +*.msm +*.msp + +# Windows shortcuts +*.lnk + +# End of https://www.toptal.com/developers/gitignore/api/node,windows,macos,visualstudiocode,intellij+all \ No newline at end of file diff --git a/client/public/modl_privacy_policy.md b/client/public/modl_privacy_policy.md new file mode 100644 index 0000000..74ed41c --- /dev/null +++ b/client/public/modl_privacy_policy.md @@ -0,0 +1,88 @@ +# Privacy Policy + +**Last Updated: January 2025** + +## 1. Introduction + +Welcome to modl.gg ("we," "our," or "us"). We are committed to protecting your privacy and ensuring you have a positive experience on our platform. This Privacy Policy explains how we collect, use, disclose, and safeguard your information when you use our moderation and support platform. + +## 2. Information We Collect + +### 2.1 Information You Provide + +- **Account Information**: When you register, we collect your email address and server information. +- **Server Data**: Information about your Minecraft server including server name, domain, and configuration. +- **Staff Information**: Data about staff members you add to your server panel. +- **Support Content**: Tickets, appeals, and other support-related content you create. + +### 2.2 Automatically Collected Information + +- **Usage Data**: Information about how you interact with our platform. +- **Log Data**: Server logs, IP addresses, browser type, and access times. +- **Device Information**: Information about the device you use to access our services. + +### 2.3 Player Data + +- **Minecraft UUIDs**: Player identifiers from your Minecraft server. +- **Moderation Records**: Punishment history, appeals, and related data. +- **Chat Logs**: If AI moderation is enabled, relevant chat content for analysis. + +## 3. How We Use Your Information + +We use the information we collect to: + +- Provide and maintain our moderation and support services +- Process and respond to support tickets and appeals +- Improve our platform and develop new features +- Communicate with you about updates and changes +- Ensure the security and integrity of our platform +- Comply with legal obligations + +## 4. Data Sharing and Disclosure + +We do not sell your personal information. We may share data with: + +- **Service Providers**: Third parties that help us operate our platform +- **Legal Requirements**: When required by law or to protect our rights +- **Business Transfers**: In connection with a merger, acquisition, or sale + +## 5. Data Security + +We implement appropriate technical and organizational measures to protect your data, including: + +- Encryption in transit and at rest +- Regular security assessments +- Access controls and authentication +- Secure data storage practices + +## 6. Data Retention + +We retain your data for as long as your account is active or as needed to provide services. You may request deletion of your data at any time. + +## 7. Your Rights + +You have the right to: + +- Access your personal data +- Correct inaccurate data +- Delete your data +- Export your data +- Withdraw consent + +## 8. Third-Party Services + +Our platform may integrate with third-party services. Please review their privacy policies as we are not responsible for their practices. + +## 9. Children's Privacy + +Our platform is not intended for users under 13 years of age. We do not knowingly collect data from children. + +## 10. Changes to This Policy + +We may update this Privacy Policy periodically. We will notify you of significant changes via email or through our platform. + +## 11. Contact Us + +If you have questions about this Privacy Policy, please contact us at: + +**Email**: support@modl.gg diff --git a/client/public/modl_terms_of_service.md b/client/public/modl_terms_of_service.md new file mode 100644 index 0000000..09f55fb --- /dev/null +++ b/client/public/modl_terms_of_service.md @@ -0,0 +1,118 @@ +# Terms of Service + +**Last Updated: January 2025** + +## 1. Agreement to Terms + +By accessing or using modl.gg ("Service"), you agree to be bound by these Terms of Service ("Terms"). If you do not agree to these Terms, please do not use the Service. + +## 2. Description of Service + +modl.gg provides a moderation and support platform for Minecraft server communities, including: + +- Player moderation tools and punishment management +- Support ticket and appeals systems +- Staff management and permissions +- Analytics and reporting +- AI-powered moderation assistance (Premium) + +## 3. Account Registration + +### 3.1 Eligibility + +You must be at least 13 years old to use our Service. By registering, you represent that you meet this requirement. + +### 3.2 Account Security + +You are responsible for maintaining the security of your account credentials. You must notify us immediately of any unauthorized access. + +### 3.3 Accurate Information + +You agree to provide accurate, current, and complete information during registration and to update such information as necessary. + +## 4. Acceptable Use + +You agree NOT to: + +- Use the Service for any illegal purpose +- Abuse, harass, or discriminate against users +- Attempt to gain unauthorized access to our systems +- Interfere with or disrupt the Service +- Upload malicious code or content +- Violate the rights of others +- Resell or redistribute the Service without permission + +## 5. Server Owner Responsibilities + +As a server owner using our Service, you are responsible for: + +- Compliance with Minecraft's EULA and terms +- Your staff's actions within the platform +- Data you collect and store about your players +- Ensuring your moderation practices are fair and lawful + +## 6. Subscription and Payments + +### 6.1 Free Plan + +The Free Plan includes limited features and is subject to usage limits as described on our pricing page. + +### 6.2 Premium Plan + +Premium subscriptions are billed monthly. You may cancel at any time, with access continuing until the end of the billing period. + +### 6.3 Refunds + +We offer refunds within 14 days of initial purchase if you are not satisfied with the Service. + +## 7. Intellectual Property + +### 7.1 Our Property + +The Service, including its design, features, and content, is owned by modl.gg and protected by intellectual property laws. + +### 7.2 Your Content + +You retain ownership of content you upload. By using the Service, you grant us a license to use, store, and process your content as necessary to provide the Service. + +## 8. Privacy + +Your use of the Service is also governed by our Privacy Policy, which is incorporated into these Terms. + +## 9. Disclaimer of Warranties + +THE SERVICE IS PROVIDED "AS IS" WITHOUT WARRANTIES OF ANY KIND. WE DO NOT GUARANTEE UNINTERRUPTED OR ERROR-FREE SERVICE. + +## 10. Limitation of Liability + +TO THE MAXIMUM EXTENT PERMITTED BY LAW, MODL.GG SHALL NOT BE LIABLE FOR ANY INDIRECT, INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES. + +## 11. Indemnification + +You agree to indemnify and hold harmless modl.gg from any claims arising from your use of the Service or violation of these Terms. + +## 12. Termination + +We may suspend or terminate your access to the Service at any time for violation of these Terms or for any other reason at our discretion. + +## 13. Changes to Terms + +We may modify these Terms at any time. Continued use of the Service after changes constitutes acceptance of the modified Terms. + +## 14. Governing Law + +These Terms are governed by the laws of the jurisdiction in which modl.gg operates, without regard to conflict of law principles. + +## 15. Dispute Resolution + +Any disputes shall be resolved through binding arbitration, except where prohibited by law. + +## 16. Severability + +If any provision of these Terms is found unenforceable, the remaining provisions shall continue in effect. + +## 17. Contact + +For questions about these Terms, please contact us at: + +**Email**: support@modl.gg diff --git a/client/src/components/MarkdownPage.tsx b/client/src/components/MarkdownPage.tsx index a3816f5..5b71c85 100644 --- a/client/src/components/MarkdownPage.tsx +++ b/client/src/components/MarkdownPage.tsx @@ -2,6 +2,7 @@ import { useEffect, useState } from "react"; import { useLocation } from "wouter"; import ReactMarkdown from "react-markdown"; import { Button } from "@modl-gg/shared-web/components/ui/button"; +import Logo from "./ui/Logo"; import { ArrowLeft } from "lucide-react"; interface MarkdownPageProps { @@ -16,9 +17,8 @@ export default function MarkdownPage({ filePath, title }: MarkdownPageProps) { const [error, setError] = useState(""); useEffect(() => { - // Scroll to top on mount window.scrollTo(0, 0); - + const fetchMarkdown = async () => { try { const response = await fetch(filePath); @@ -37,29 +37,11 @@ export default function MarkdownPage({ filePath, title }: MarkdownPageProps) { fetchMarkdown(); }, [filePath, title]); - const backToHome = () => { - navigate("/"); - }; - if (loading) { return (
- - -
+ navigate("/")} /> +

Loading {title}...

@@ -72,25 +54,11 @@ export default function MarkdownPage({ filePath, title }: MarkdownPageProps) { if (error) { return (
- - -
+ navigate("/")} /> +

Error: {error}

- +
@@ -99,22 +67,16 @@ export default function MarkdownPage({ filePath, title }: MarkdownPageProps) { return (
-