From 0840930ba430c0fefba4b5e7d9f2a9b0755879fd Mon Sep 17 00:00:00 2001 From: byteful Date: Thu, 26 Mar 2026 18:37:15 -0400 Subject: [PATCH 01/13] new UI :O --- .env.development | 28 +- .env.production | 22 +- .github/workflows/build.yml | 86 +- .gitignore | 628 +- .npmrc | 2 +- LICENSE | 1322 +- attached_assets/Minecraft.webp | Bin 0 -> 53414 bytes .../Minecraft.webp:Zone.Identifier | Bin 0 -> 25 bytes attached_assets/modl_privacy_policy.md | 512 +- attached_assets/modl_terms_of_service.md | 532 +- client/favicon.svg | 4 +- client/index.html | 88 +- client/public/modl_privacy_policy.md | 176 +- client/public/modl_terms_of_service.md | 236 +- client/site.webmanifest | 40 +- client/src/App.tsx | 76 +- client/src/components/MarkdownPage.tsx | 214 +- client/src/components/home/CTASection.tsx | 49 + client/src/components/home/FAQSection.tsx | 93 +- .../src/components/home/FeaturesSection.tsx | 244 +- client/src/components/home/Footer.tsx | 102 +- client/src/components/home/HeroSection.tsx | 110 +- client/src/components/home/Navbar.tsx | 175 +- client/src/components/home/PricingSection.tsx | 178 +- .../src/components/home/ShowcaseSection.tsx | 69 + .../components/registration/SuccessModal.tsx | 196 +- client/src/components/ui/BrowserMockup.tsx | 100 + client/src/components/ui/ImageLightbox.tsx | 67 + client/src/components/ui/Logo.tsx | 8 +- client/src/components/ui/Turnstile.tsx | 180 +- client/src/hooks/use-mobile.tsx | 38 +- client/src/hooks/use-toast.ts | 382 +- client/src/hooks/useTurnstile.tsx | 470 +- client/src/index.css | 203 +- client/src/lib/animations.ts | 190 +- client/src/lib/queryClient.ts | 194 +- client/src/lib/utils.ts | 12 +- client/src/main.tsx | 22 +- client/src/pages/Home.tsx | 28 +- client/src/pages/PrivacyPolicy.tsx | 20 +- client/src/pages/Registration.tsx | 38 +- client/src/pages/TermsOfService.tsx | 20 +- client/src/pages/not-found.tsx | 34 +- components.json | 38 +- package-lock.json | 15722 ++++++++-------- package.json | 172 +- postcss.config.js | 12 +- tailwind.config.ts | 192 +- tsconfig.json | 46 +- vite.config.ts | 100 +- 50 files changed, 11947 insertions(+), 11523 deletions(-) create mode 100644 attached_assets/Minecraft.webp create mode 100644 attached_assets/Minecraft.webp:Zone.Identifier create mode 100644 client/src/components/home/CTASection.tsx create mode 100644 client/src/components/home/ShowcaseSection.tsx create mode 100644 client/src/components/ui/BrowserMockup.tsx create mode 100644 client/src/components/ui/ImageLightbox.tsx diff --git a/.env.development b/.env.development index 736ae0b..47d484a 100644 --- a/.env.development +++ b/.env.development @@ -1,14 +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 +# 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 index b576511..a68820f 100644 --- a/.env.production +++ b/.env.production @@ -1,11 +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 +# 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/.github/workflows/build.yml b/.github/workflows/build.yml index 9a1341b..9d48483 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,44 +1,44 @@ -name: "Build (Pull Request)" - -on: - pull_request: - types: [opened, synchronize, reopened] - branches: - - main - - dev - workflow_dispatch: - -jobs: - build: - runs-on: ubuntu-latest - - permissions: - contents: read - packages: read - - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: '23' - registry-url: 'https://npm.pkg.github.com' - scope: '@modl-gg' - - - name: Configure npm for GitHub Packages - run: | - rm .npmrc - echo "@modl-gg:registry=https://npm.pkg.github.com" >> .npmrc - echo "//npm.pkg.github.com/:_authToken=${{ secrets.GITHUB_TOKEN }}" >> .npmrc - env: - NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - - name: Install dependencies - run: npm ci - env: - NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - - name: Run build +name: "Build (Pull Request)" + +on: + pull_request: + types: [opened, synchronize, reopened] + branches: + - main + - dev + workflow_dispatch: + +jobs: + build: + runs-on: ubuntu-latest + + permissions: + contents: read + packages: read + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '23' + registry-url: 'https://npm.pkg.github.com' + scope: '@modl-gg' + + - name: Configure npm for GitHub Packages + run: | + rm .npmrc + echo "@modl-gg:registry=https://npm.pkg.github.com" >> .npmrc + echo "//npm.pkg.github.com/:_authToken=${{ secrets.GITHUB_TOKEN }}" >> .npmrc + env: + NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Install dependencies + run: npm ci + env: + NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Run build run: npm run build \ No newline at end of file diff --git a/.gitignore b/.gitignore index 031101b..908df07 100644 --- a/.gitignore +++ b/.gitignore @@ -1,315 +1,315 @@ -# 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 -.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 - +# 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 +.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/.npmrc b/.npmrc index 2810e35..9ffa5e3 100644 --- a/.npmrc +++ b/.npmrc @@ -1,2 +1,2 @@ -@modl-gg:registry=https://npm.pkg.github.com +@modl-gg:registry=https://npm.pkg.github.com //npm.pkg.github.com/:_authToken=${GITHUB_TOKEN} \ No newline at end of file diff --git a/LICENSE b/LICENSE index 0ad25db..ada1a81 100644 --- a/LICENSE +++ b/LICENSE @@ -1,661 +1,661 @@ - GNU AFFERO GENERAL PUBLIC LICENSE - Version 3, 19 November 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU Affero General Public License is a free, copyleft license for -software and other kinds of works, specifically designed to ensure -cooperation with the community in the case of network server software. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -our General Public Licenses are intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - Developers that use our General Public Licenses protect your rights -with two steps: (1) assert copyright on the software, and (2) offer -you this License which gives you legal permission to copy, distribute -and/or modify the software. - - A secondary benefit of defending all users' freedom is that -improvements made in alternate versions of the program, if they -receive widespread use, become available for other developers to -incorporate. Many developers of free software are heartened and -encouraged by the resulting cooperation. However, in the case of -software used on network servers, this result may fail to come about. -The GNU General Public License permits making a modified version and -letting the public access it on a server without ever releasing its -source code to the public. - - The GNU Affero General Public License is designed specifically to -ensure that, in such cases, the modified source code becomes available -to the community. It requires the operator of a network server to -provide the source code of the modified version running there to the -users of that server. Therefore, public use of a modified version, on -a publicly accessible server, gives the public access to the source -code of the modified version. - - An older license, called the Affero General Public License and -published by Affero, was designed to accomplish similar goals. This is -a different license, not a version of the Affero GPL, but Affero has -released a new version of the Affero GPL which permits relicensing under -this license. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU Affero General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Remote Network Interaction; Use with the GNU General Public License. - - Notwithstanding any other provision of this License, if you modify the -Program, your modified version must prominently offer all users -interacting with it remotely through a computer network (if your version -supports such interaction) an opportunity to receive the Corresponding -Source of your version by providing access to the Corresponding Source -from a network server at no charge, through some standard or customary -means of facilitating copying of software. This Corresponding Source -shall include the Corresponding Source for any work covered by version 3 -of the GNU General Public License that is incorporated pursuant to the -following paragraph. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the work with which it is combined will remain governed by version -3 of the GNU General Public License. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU Affero General Public License from time to time. Such new versions -will be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU Affero General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU Affero General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU Affero General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as published - by the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Affero General Public License for more details. - - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If your software can interact with users remotely through a computer -network, you should also make sure that it provides a way for users to -get its source. For example, if your program is a web application, its -interface could display a "Source" link that leads users to an archive -of the code. There are many ways you could offer source, and different -solutions will be better for different programs; see section 13 for the -specific requirements. - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU AGPL, see -. + GNU AFFERO GENERAL PUBLIC LICENSE + Version 3, 19 November 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU Affero General Public License is a free, copyleft license for +software and other kinds of works, specifically designed to ensure +cooperation with the community in the case of network server software. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +our General Public Licenses are intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + Developers that use our General Public Licenses protect your rights +with two steps: (1) assert copyright on the software, and (2) offer +you this License which gives you legal permission to copy, distribute +and/or modify the software. + + A secondary benefit of defending all users' freedom is that +improvements made in alternate versions of the program, if they +receive widespread use, become available for other developers to +incorporate. Many developers of free software are heartened and +encouraged by the resulting cooperation. However, in the case of +software used on network servers, this result may fail to come about. +The GNU General Public License permits making a modified version and +letting the public access it on a server without ever releasing its +source code to the public. + + The GNU Affero General Public License is designed specifically to +ensure that, in such cases, the modified source code becomes available +to the community. It requires the operator of a network server to +provide the source code of the modified version running there to the +users of that server. Therefore, public use of a modified version, on +a publicly accessible server, gives the public access to the source +code of the modified version. + + An older license, called the Affero General Public License and +published by Affero, was designed to accomplish similar goals. This is +a different license, not a version of the Affero GPL, but Affero has +released a new version of the Affero GPL which permits relicensing under +this license. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU Affero General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Remote Network Interaction; Use with the GNU General Public License. + + Notwithstanding any other provision of this License, if you modify the +Program, your modified version must prominently offer all users +interacting with it remotely through a computer network (if your version +supports such interaction) an opportunity to receive the Corresponding +Source of your version by providing access to the Corresponding Source +from a network server at no charge, through some standard or customary +means of facilitating copying of software. This Corresponding Source +shall include the Corresponding Source for any work covered by version 3 +of the GNU General Public License that is incorporated pursuant to the +following paragraph. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the work with which it is combined will remain governed by version +3 of the GNU General Public License. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU Affero General Public License from time to time. Such new versions +will be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU Affero General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU Affero General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU Affero General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published + by the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If your software can interact with users remotely through a computer +network, you should also make sure that it provides a way for users to +get its source. For example, if your program is a web application, its +interface could display a "Source" link that leads users to an archive +of the code. There are many ways you could offer source, and different +solutions will be better for different programs; see section 13 for the +specific requirements. + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU AGPL, see +. diff --git a/attached_assets/Minecraft.webp b/attached_assets/Minecraft.webp new file mode 100644 index 0000000000000000000000000000000000000000..bd3af427e6d2350db6c2f7734ee65e8a2ecf3de6 GIT binary patch literal 53414 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 z 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%0AIi} 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 literal 0 HcmV?d00001 diff --git a/attached_assets/Minecraft.webp:Zone.Identifier b/attached_assets/Minecraft.webp:Zone.Identifier new file mode 100644 index 0000000000000000000000000000000000000000..d6c1ec682968c796b9f5e9e080cc6f674b57c766 GIT binary patch literal 25 dcma!!%Fjy;DN4*MPD?F{<>dl#JyUFr831@K2x \ No newline at end of file diff --git a/client/index.html b/client/index.html index 7718204..199ded7 100644 --- a/client/index.html +++ b/client/index.html @@ -1,45 +1,45 @@ - - - - - - - modl - Game Moderation & Player Support Suite - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - + + + + + + + modl - Game Moderation & Player Support Suite + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + \ No newline at end of file diff --git a/client/public/modl_privacy_policy.md b/client/public/modl_privacy_policy.md index 74ed41c..6e47e2a 100644 --- a/client/public/modl_privacy_policy.md +++ b/client/public/modl_privacy_policy.md @@ -1,88 +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 +# 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 index 09f55fb..f69fb8b 100644 --- a/client/public/modl_terms_of_service.md +++ b/client/public/modl_terms_of_service.md @@ -1,118 +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 +# 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/site.webmanifest b/client/site.webmanifest index 872ab89..a3b4c1f 100644 --- a/client/site.webmanifest +++ b/client/site.webmanifest @@ -1,21 +1,21 @@ -{ - "name": "modl.gg", - "short_name": "modl.gg", - "icons": [ - { - "src": "/web-app-manifest-192x192.png", - "sizes": "192x192", - "type": "image/png", - "purpose": "maskable" - }, - { - "src": "/web-app-manifest-512x512.png", - "sizes": "512x512", - "type": "image/png", - "purpose": "maskable" - } - ], - "theme_color": "#252525", - "background_color": "#252525", - "display": "standalone" +{ + "name": "modl.gg", + "short_name": "modl.gg", + "icons": [ + { + "src": "/web-app-manifest-192x192.png", + "sizes": "192x192", + "type": "image/png", + "purpose": "maskable" + }, + { + "src": "/web-app-manifest-512x512.png", + "sizes": "512x512", + "type": "image/png", + "purpose": "maskable" + } + ], + "theme_color": "#252525", + "background_color": "#252525", + "display": "standalone" } \ No newline at end of file diff --git a/client/src/App.tsx b/client/src/App.tsx index 02c7372..72fa044 100644 --- a/client/src/App.tsx +++ b/client/src/App.tsx @@ -1,38 +1,38 @@ -import { Switch, Route } from "wouter"; -import { queryClient } from "./lib/queryClient"; -import { QueryClientProvider } from "@tanstack/react-query"; -import { Toaster } from "@modl-gg/shared-web/components/ui/toaster"; -import { TooltipProvider } from "@modl-gg/shared-web/components/ui/tooltip"; -import NotFound from "@/pages/not-found"; -import Home from "@/pages/Home"; -import Registration from "@/pages/Registration"; -import TermsOfService from "@/pages/TermsOfService"; -import PrivacyPolicy from "@/pages/PrivacyPolicy"; -import { ThemeProvider } from "next-themes"; - -function Router() { - return ( - - - - - - - - ); -} - -function App() { - return ( - - - - - - - - - ); -} - -export default App; +import { Switch, Route } from "wouter"; +import { queryClient } from "./lib/queryClient"; +import { QueryClientProvider } from "@tanstack/react-query"; +import { Toaster } from "@modl-gg/shared-web/components/ui/toaster"; +import { TooltipProvider } from "@modl-gg/shared-web/components/ui/tooltip"; +import NotFound from "@/pages/not-found"; +import Home from "@/pages/Home"; +import Registration from "@/pages/Registration"; +import TermsOfService from "@/pages/TermsOfService"; +import PrivacyPolicy from "@/pages/PrivacyPolicy"; +import { ThemeProvider } from "next-themes"; + +function Router() { + return ( + + + + + + + + ); +} + +function App() { + return ( + + + + + + + + + ); +} + +export default App; diff --git a/client/src/components/MarkdownPage.tsx b/client/src/components/MarkdownPage.tsx index 5b71c85..8d1298a 100644 --- a/client/src/components/MarkdownPage.tsx +++ b/client/src/components/MarkdownPage.tsx @@ -1,107 +1,107 @@ -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 { - filePath: string; - title: string; -} - -export default function MarkdownPage({ filePath, title }: MarkdownPageProps) { - const [, navigate] = useLocation(); - const [content, setContent] = useState(""); - const [loading, setLoading] = useState(true); - const [error, setError] = useState(""); - - useEffect(() => { - window.scrollTo(0, 0); - - const fetchMarkdown = async () => { - try { - const response = await fetch(filePath); - if (!response.ok) { - throw new Error(`Failed to fetch ${title}`); - } - const text = await response.text(); - setContent(text); - } catch (err) { - setError(err instanceof Error ? err.message : "Failed to load content"); - } finally { - setLoading(false); - } - }; - - fetchMarkdown(); - }, [filePath, title]); - - if (loading) { - return ( -
- navigate("/")} /> -
-
-
-

Loading {title}...

-
-
-
- ); - } - - if (error) { - return ( -
- navigate("/")} /> -
-
-

Error: {error}

- -
-
-
- ); - } - - return ( -
- -
-
-

{children}

, - h2: ({ children }) =>

{children}

, - h3: ({ children }) =>

{children}

, - h4: ({ children }) =>

{children}

, - p: ({ children }) =>

{children}

, - ul: ({ children }) =>
    {children}
, - ol: ({ children }) =>
    {children}
, - li: ({ children }) =>
  • {children}
  • , - strong: ({ children }) => {children}, - em: ({ children }) => {children}, - code: ({ children }) => {children}, - blockquote: ({ children }) => ( -
    - {children} -
    - ), - }} - > - {content} -
    -
    -
    -
    - ); -} +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 { + filePath: string; + title: string; +} + +export default function MarkdownPage({ filePath, title }: MarkdownPageProps) { + const [, navigate] = useLocation(); + const [content, setContent] = useState(""); + const [loading, setLoading] = useState(true); + const [error, setError] = useState(""); + + useEffect(() => { + window.scrollTo(0, 0); + + const fetchMarkdown = async () => { + try { + const response = await fetch(filePath); + if (!response.ok) { + throw new Error(`Failed to fetch ${title}`); + } + const text = await response.text(); + setContent(text); + } catch (err) { + setError(err instanceof Error ? err.message : "Failed to load content"); + } finally { + setLoading(false); + } + }; + + fetchMarkdown(); + }, [filePath, title]); + + if (loading) { + return ( +
    + navigate("/")} /> +
    +
    +
    +

    Loading {title}...

    +
    +
    +
    + ); + } + + if (error) { + return ( +
    + navigate("/")} /> +
    +
    +

    Error: {error}

    + +
    +
    +
    + ); + } + + return ( +
    + +
    +
    +

    {children}

    , + h2: ({ children }) =>

    {children}

    , + h3: ({ children }) =>

    {children}

    , + h4: ({ children }) =>

    {children}

    , + p: ({ children }) =>

    {children}

    , + ul: ({ children }) =>
      {children}
    , + ol: ({ children }) =>
      {children}
    , + li: ({ children }) =>
  • {children}
  • , + strong: ({ children }) => {children}, + em: ({ children }) => {children}, + code: ({ children }) => {children}, + blockquote: ({ children }) => ( +
    + {children} +
    + ), + }} + > + {content} +
    +
    +
    +
    + ); +} diff --git a/client/src/components/home/CTASection.tsx b/client/src/components/home/CTASection.tsx new file mode 100644 index 0000000..361c8fd --- /dev/null +++ b/client/src/components/home/CTASection.tsx @@ -0,0 +1,49 @@ +import { useLocation } from "wouter"; +import { motion } from "framer-motion"; +import { ArrowRight } from "lucide-react"; + +export default function CTASection() { + const [, navigate] = useLocation(); + + return ( +
    + {/* Background glow */} +
    +
    +
    + +
    + +

    + Ready to Transform Your Moderation? +

    +

    + Join the servers already using modl.gg to streamline their moderation and support workflows. Free forever. +

    +
    + + + Read the Docs + +
    +
    +
    +
    + ); +} diff --git a/client/src/components/home/FAQSection.tsx b/client/src/components/home/FAQSection.tsx index d04dc2a..7eec38b 100644 --- a/client/src/components/home/FAQSection.tsx +++ b/client/src/components/home/FAQSection.tsx @@ -37,59 +37,64 @@ const FAQData = [ } ]; +const leftColumn = FAQData.slice(0, 4); +const rightColumn = FAQData.slice(4); + +function FAQColumn({ items, offset }: { items: typeof FAQData; offset: number }) { + return ( + + {items.map((faq, index) => ( + + +
    + + {faq.question} + + +

    {faq.answer}

    +
    +
    +
    +
    + ))} +
    + ); +} + export default function FAQSection() { return ( -
    -
    +
    +
    -

    Frequently Asked Questions

    +

    + Frequently Asked Questions +

    - - - {FAQData.map((faq, index) => ( - - -
    - - {faq.question} - - -

    - {faq.answer} -

    -
    -
    -
    -
    - ))} -
    -
    +
    + + +
    -

    +

    Still have questions?{" "} { - switch (iconName) { - case "shield-check": - return ( - - - - ); - case "link": - return ( - - - - ); - case "headphones": - return ( - - - - ); - case "bot": - return ( - - - - ); - case "globe": - return ( - - - - ); - case "layout-dashboard": - return ( - - - - ); - default: - return null; - } +const cardReveal = { + hidden: { opacity: 0, scale: 0.92, rotateX: 4 }, + visible: (i: number) => ({ + opacity: 1, + scale: 1, + rotateX: 0, + transition: { duration: 0.6, delay: i * 0.07, ease: [0.22, 1, 0.36, 1] }, + }), }; export default function FeaturesSection() { const [expandedFeature, setExpandedFeature] = useState(null); const toggleFeature = (index: number) => { - if (expandedFeature === index) { - setExpandedFeature(null); - } else { - setExpandedFeature(index); - } + setExpandedFeature(expandedFeature === index ? null : index); }; return ( -

    +
    + {/* Header with clip-path reveal */} -

    Powerful Moderation Tools

    -

    +

    + Powerful Moderation Tools +

    +

    Everything you need to keep your Minecraft community safe, engaged, and supported

    -
    - {features.map((feature, index) => ( - -
    -
    - - {getIcon(feature.icon)} - + {/* Bento grid */} +
    + {features.map((feature, index) => { + const Icon = feature.icon; + const isExpanded = expandedFeature === index; + return ( + +
    +
    + +
    +
    - -
    -

    {feature.title}

    -

    {feature.description}

    +

    {feature.title}

    +

    {feature.description}

    - - {expandedFeature === index && ( - -
    -

    - {feature.expandedContent} -

    -
    -
    - )} -
    - - ))} + + {isExpanded && ( + +
    +

    + {feature.expandedContent} +

    +
    +
    + )} +
    + + ); + })}
    + {/* Integration card */} -
    -

    Easy Integration with Your Server

    -
    +
    +

    Easy Integration with Your Server

    +
    {[ - { text: "Drag & drop plugin for any platform", delay: 0.1 }, - { text: "Import from LiteBans and other plugins*", delay: 0.2 }, - { text: "Fully configurable messages and settings", delay: 0.3 }, - { text: "Low latency web-to-game sync", delay: 0.4 } - ].map((item, index) => ( + "Drag & drop plugin for any platform", + "Import from LiteBans and other plugins*", + "Fully configurable messages and settings", + "Low latency web-to-game sync" + ].map((text, i) => ( - - {item.text} + + {text} ))}
    -

    * Importing from other moderation plugins is available upon request

    +

    * Importing from other moderation plugins is available upon request

    diff --git a/client/src/components/home/Footer.tsx b/client/src/components/home/Footer.tsx index c8129a4..a26ef2e 100644 --- a/client/src/components/home/Footer.tsx +++ b/client/src/components/home/Footer.tsx @@ -4,95 +4,45 @@ import Logo from "../ui/Logo"; export default function Footer() { const scrollToSection = (id: string) => { - const element = document.getElementById(id); - if (element) { - element.scrollIntoView({ behavior: "smooth" }); - } + document.getElementById(id)?.scrollIntoView({ behavior: "smooth" }); }; return ( -