generated from nhcarrigan/template
Compare commits
46 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| f58a9d62c5 | |||
| 73beb11b3b | |||
| 0daef2fdc6 | |||
| 1ad784344c | |||
| cee172a5d6 | |||
| 2d3d684894 | |||
| 4298548347 | |||
| b754503317 | |||
| fd3197c3bf | |||
| 4a5a15d2da | |||
| 2f2ee1c09d | |||
| dafa7ded0e | |||
| b9e8777c6f | |||
| 2957a572f5 | |||
| 65d9405fa9 | |||
| ca6340b25f | |||
| 7962bbb710 | |||
| 08b7611299 | |||
| cff2380338 | |||
| 592a4eb681 | |||
| f43cb18b6c | |||
| c335637450 | |||
| 7ae52ae521 | |||
| d3560a3066 | |||
| f7efaef26e | |||
| f408ce1c06 | |||
| dc0711aad8 | |||
| 31d7273061 | |||
| c461453342 | |||
| 49dd426ed9 | |||
| b179cc469b | |||
| 7252be5d02 | |||
| 9583ac3076 | |||
| 64c4bd4b9a | |||
| f74b4cf43a | |||
| 90de31a17d | |||
| ea060a775c | |||
| 1022316d35 | |||
| db7a34e975 | |||
| bd47ff2bb3 | |||
| 0ec64ba2b0 | |||
| a7daa5093f | |||
| 6a95effaaf | |||
| 26136259d3 | |||
| dd5fa6f7a2 | |||
| 38149e092e |
+92
-2
@@ -31,10 +31,100 @@
|
||||
"Syft",
|
||||
"Ghostty",
|
||||
"Amberol",
|
||||
"Musicolet"
|
||||
"Musicolet",
|
||||
"wifi",
|
||||
"neopronouns",
|
||||
"linters",
|
||||
"misgendered"
|
||||
],
|
||||
"words": [
|
||||
"Abalise",
|
||||
"Aeris",
|
||||
"Alouette",
|
||||
"Amari",
|
||||
"Amirei",
|
||||
"atproto",
|
||||
"Aurelia",
|
||||
"Aureline",
|
||||
"bannable",
|
||||
"Becca",
|
||||
"Beccalia",
|
||||
"Caelia",
|
||||
"Calenelle",
|
||||
"Callista",
|
||||
"CCPA",
|
||||
"Celestine",
|
||||
"Čeština",
|
||||
"CFAA",
|
||||
"Chibika",
|
||||
"CPACC",
|
||||
"Dansk",
|
||||
"Eirene",
|
||||
"Elaria",
|
||||
"Elowyn",
|
||||
"Elunara",
|
||||
"equivalencies",
|
||||
"escalatory",
|
||||
"excludable",
|
||||
"faer",
|
||||
"faers",
|
||||
"Fediverse",
|
||||
"polycule"
|
||||
"Français",
|
||||
"Gitea",
|
||||
"Hikari",
|
||||
"incentivising",
|
||||
"Isolda",
|
||||
"Italiano",
|
||||
"ITAR",
|
||||
"Iuvo",
|
||||
"Jessara",
|
||||
"KADOKAWA",
|
||||
"LGBTQ",
|
||||
"Lietuvių",
|
||||
"Liora",
|
||||
"Lyria",
|
||||
"Maribelle",
|
||||
"Meliora",
|
||||
"Meridia",
|
||||
"minimis",
|
||||
"Mommy",
|
||||
"NAMI",
|
||||
"Nederlands",
|
||||
"Nymira",
|
||||
"OFAC",
|
||||
"Oriana",
|
||||
"Pavelle",
|
||||
"PIPEDA",
|
||||
"Polski",
|
||||
"polycule",
|
||||
"Recusal",
|
||||
"recuse",
|
||||
"Reddiquette",
|
||||
"Română",
|
||||
"Rosalia",
|
||||
"Sakura",
|
||||
"Serenya",
|
||||
"Sorielle",
|
||||
"Suomi",
|
||||
"Svenska",
|
||||
"Taryne",
|
||||
"Tessara",
|
||||
"Thalassa",
|
||||
"Thessalia",
|
||||
"Türkçe",
|
||||
"Umbrelle",
|
||||
"Veluna",
|
||||
"Verena",
|
||||
"Vitalia",
|
||||
"Vivienne",
|
||||
"vtubing",
|
||||
"WCAG",
|
||||
"Zephra",
|
||||
"zirs",
|
||||
"Ελληνικά",
|
||||
"Български",
|
||||
"Русский",
|
||||
"Українська",
|
||||
"हिन्दी"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
name: Code Analysis
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
|
||||
jobs:
|
||||
sonar:
|
||||
name: SonarQube
|
||||
|
||||
steps:
|
||||
- name: Checkout Source Files
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: SonarCube Scan
|
||||
uses: SonarSource/sonarqube-scan-action@v4
|
||||
timeout-minutes: 10
|
||||
env:
|
||||
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
|
||||
SONAR_HOST_URL: "https://quality.nhcarrigan.com"
|
||||
with:
|
||||
args: >
|
||||
-Dsonar.sources=.
|
||||
-Dsonar.projectKey=docs
|
||||
|
||||
- name: SonarQube Quality Gate check
|
||||
uses: sonarsource/sonarqube-quality-gate-action@v1
|
||||
with:
|
||||
pollingTimeoutSec: 600
|
||||
env:
|
||||
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
|
||||
SONAR_HOST_URL: "https://quality.nhcarrigan.com"
|
||||
+94
-57
@@ -1,68 +1,105 @@
|
||||
import { defineConfig } from 'astro/config';
|
||||
import { defineConfig } from "astro/config";
|
||||
import starlight from "@astrojs/starlight";
|
||||
import { ExpressiveCodeTheme } from "@astrojs/starlight/expressive-code";
|
||||
import themeJson from "./src/styles/theme.json";
|
||||
import darkThemeJson from "./src/styles/theme-dark.json";
|
||||
import mermaid from "astro-mermaid";
|
||||
|
||||
import { navigation } from "./src/components/navigation.ts";
|
||||
|
||||
const sakuraDreams = ExpressiveCodeTheme.fromJSONString(
|
||||
JSON.stringify(themeJson)
|
||||
);
|
||||
const sakuraDreamsDark = ExpressiveCodeTheme.fromJSONString(
|
||||
JSON.stringify(darkThemeJson)
|
||||
);
|
||||
|
||||
export default defineConfig({
|
||||
site: "https://docs.nhcarrigan.com",
|
||||
integrations: [starlight({
|
||||
components: {
|
||||
Footer: "./src/components/Footer.astro",
|
||||
ThemeSelect: "./src/components/ThemeSelect.astro",
|
||||
ThemeProvider: "./src/components/ThemeProvider.astro",
|
||||
},
|
||||
title: "NHCarrigan Docs",
|
||||
sidebar: navigation,
|
||||
tableOfContents: { minHeadingLevel: 2, maxHeadingLevel: 4},
|
||||
description: "This site contains all of the documentation related to NHCarrigan, its Policies, and its Projects.",
|
||||
editLink: {
|
||||
baseUrl: "https://git.nhcarrigan.com/nhcarrigan/docs/_edit/main/",
|
||||
label: "Edit this page on Naomi's Self-hosted Git instance"
|
||||
},
|
||||
lastUpdated: true,
|
||||
social: {
|
||||
github: "https://git.nhcarrigan.com",
|
||||
discourse: "https://forum.nhcarrigan.com",
|
||||
mastodon: "https://fedi.nhcarrigan.com/@naomi",
|
||||
matrix: "https://matrix.nhcarrigan.com",
|
||||
rss: "https://irc.nhcarrigan.com",
|
||||
email: "mailto:contact@nhcarrigan.com"
|
||||
},
|
||||
head: [
|
||||
{
|
||||
tag: "script",
|
||||
attrs: {
|
||||
type: "text/javascript",
|
||||
id: "analytics",
|
||||
src: "https://analytics.nhcarrigan.com/js/script.file-downloads.outbound-links.js",
|
||||
defer: true,
|
||||
"data-domain": "nhcarrigan.com"
|
||||
}
|
||||
integrations: [
|
||||
mermaid(),
|
||||
starlight({
|
||||
components: {
|
||||
Footer: "./src/components/Footer.astro",
|
||||
ThemeProvider: "./src/components/ThemeProvider.astro",
|
||||
},
|
||||
{
|
||||
tag: "script",
|
||||
content: "window.plausible = window.plausible || function() { (window.plausible.q = window.plausible.q || []).push(arguments) }"
|
||||
title: "NHCarrigan Docs",
|
||||
sidebar: navigation,
|
||||
tableOfContents: { minHeadingLevel: 2, maxHeadingLevel: 4 },
|
||||
description:
|
||||
"This site contains all of the documentation related to NHCarrigan, its Policies, and its Projects.",
|
||||
editLink: {
|
||||
baseUrl: "https://git.nhcarrigan.com/nhcarrigan/docs/_edit/main/",
|
||||
label: "Edit this page on Naomi's Self-hosted Git instance",
|
||||
},
|
||||
{
|
||||
tag: "script",
|
||||
attrs: {
|
||||
type: "text/javascript",
|
||||
id: "trees",
|
||||
src: "https://widgets.tree-nation.com/js/widgets/v1/widgets.min.js?v=1.0",
|
||||
defer: true
|
||||
}
|
||||
lastUpdated: true,
|
||||
social: [
|
||||
{ icon: 'github', label: 'GitHub', href: 'https://git.nhcarrigan.com' },
|
||||
{ icon: 'discord', label: 'Discord', href: 'https://chat.nhcarrigan.com' },
|
||||
{ icon: 'blueSky', label: 'Bluesky', href: 'https://bsky.app/profile/nhcarrigan.com' },
|
||||
{ icon: 'linkedin', label: 'LinkedIn', href: 'https://www.linkedin.com/company/nhcarrigan/' },
|
||||
{ icon: 'twitter', label: 'Twitter', href: 'https://x.com/nhcarrigan1' },
|
||||
{ icon: 'email', label: 'Email', href: 'mailto:contact@nhcarrigan.com' },
|
||||
],
|
||||
logo: {
|
||||
src: "./public/logo.png",
|
||||
alt: "NHCarrigan Logo",
|
||||
replacesTitle: true
|
||||
},
|
||||
{
|
||||
tag: "link",
|
||||
attrs: {
|
||||
rel: "icon",
|
||||
href: "/logo.png"
|
||||
head: [
|
||||
{
|
||||
tag: "script",
|
||||
attrs: {
|
||||
type: "text/javascript",
|
||||
id: "analytics",
|
||||
src: "https://analytics.nhcarrigan.com/js/script.file-downloads.outbound-links.js",
|
||||
defer: true,
|
||||
"data-domain": "nhcarrigan.com",
|
||||
"event-domain": "docs.nhcarrigan.com",
|
||||
},
|
||||
},
|
||||
{
|
||||
tag: "script",
|
||||
content:
|
||||
"window.plausible = window.plausible || function() { (window.plausible.q = window.plausible.q || []).push(arguments) }",
|
||||
},
|
||||
{
|
||||
tag: "script",
|
||||
attrs: {
|
||||
type: "text/javascript",
|
||||
id: "trees",
|
||||
src: "https://widgets.tree-nation.com/js/widgets/v1/widgets.min.js?v=1.0",
|
||||
defer: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
tag: "link",
|
||||
attrs: {
|
||||
rel: "icon",
|
||||
href: "./public/logo.png",
|
||||
},
|
||||
},
|
||||
{
|
||||
tag: "script",
|
||||
attrs: {
|
||||
type: "text/javascript",
|
||||
src: "https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-3569924701890974",
|
||||
async: true,
|
||||
crossorigin: "anonymous",
|
||||
},
|
||||
},
|
||||
{
|
||||
tag: "meta",
|
||||
attrs: {
|
||||
property: "og:image",
|
||||
content: "https://cdn.nhcarrigan.com/og-image.png"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
customCss: [
|
||||
"./src/styles/style.css",
|
||||
"./src/fonts/font-face.css"
|
||||
],
|
||||
})]
|
||||
],
|
||||
customCss: ["./src/styles/style.css", "./src/fonts/font-face.css"],
|
||||
expressiveCode: {
|
||||
themes: [sakuraDreams, sakuraDreamsDark],
|
||||
},
|
||||
}),
|
||||
],
|
||||
});
|
||||
|
||||
+12
-9
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "magical-metal",
|
||||
"name": "documentation",
|
||||
"type": "module",
|
||||
"version": "0.0.1",
|
||||
"version": "1.0.0",
|
||||
"scripts": {
|
||||
"dev": "astro dev",
|
||||
"start": "astro dev",
|
||||
@@ -9,16 +9,19 @@
|
||||
"build": "astro build",
|
||||
"preview": "astro preview",
|
||||
"astro": "astro",
|
||||
"scan": "SONAR_TOKEN='op://Environment Variables - Development/SonarCloud/docs' op run -- sonar-scanner -Dsonar.organization=nhcarrigan -Dsonar.projectKey=nhcarrigan_docs -Dsonar.sources=. -Dsonar.host.url=https://sonarcloud.io",
|
||||
"test": "echo 'No tests yet!' && exit 0"
|
||||
"test": "vitest --run"
|
||||
},
|
||||
"dependencies": {
|
||||
"@astrojs/check": "^0.9.4",
|
||||
"@astrojs/starlight": "^0.32.0",
|
||||
"astro": "^5.3.0",
|
||||
"typescript": "^5.7.3"
|
||||
"@astrojs/check": "0.9.5",
|
||||
"@astrojs/starlight": "0.36.1",
|
||||
"astro": "5.15.2",
|
||||
"astro-mermaid": "1.1.0",
|
||||
"mermaid": "11.12.1",
|
||||
"typescript": "5.9.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"cspell": "8.17.3"
|
||||
"cspell": "9.2.2",
|
||||
"gray-matter": "4.0.3",
|
||||
"vitest": "4.0.5"
|
||||
}
|
||||
}
|
||||
|
||||
Generated
+2882
-1240
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
Before Width: | Height: | Size: 112 KiB After Width: | Height: | Size: 2.1 MiB |
Binary file not shown.
|
After Width: | Height: | Size: 1.3 MiB |
@@ -10,7 +10,12 @@ import Pagination from "@astrojs/starlight/components/Pagination.astro";
|
||||
<LastUpdated {...Astro.props} />
|
||||
</div>
|
||||
<Pagination {...Astro.props} />
|
||||
<div id="extra-footer-content">
|
||||
<div id="tree-nation-offset-website"></div>
|
||||
<a href="https://buy.stripe.com/cN24iTfqu1j6b3afZ2" target="_blank" rel="noreferrer">
|
||||
<img src="https://cdn.nhcarrigan.com/donate.png" alt="Donate" style="width: 70px; height: 70px;">
|
||||
</a>
|
||||
</div>
|
||||
<script>
|
||||
TreeNationOffsetWebsite({
|
||||
code: "a17464e0cd351220",
|
||||
|
||||
@@ -1,20 +1,43 @@
|
||||
---
|
||||
import { Icon } from "@astrojs/starlight/components";
|
||||
---
|
||||
|
||||
{/* This is intentionally inlined to avoid FOUC. */}
|
||||
<script is:inline>
|
||||
document.documentElement.dataset.theme = "light";
|
||||
const analytics = document.getElementById('analytics');
|
||||
const title = document.querySelector('title');
|
||||
analytics.setAttribute('event-page', title.innerText ?? "NHCarrigan Docs");
|
||||
analytics.setAttribute('event-path', window.location.pathname);
|
||||
window.StarlightThemeProvider = (() => {
|
||||
const storedTheme =
|
||||
typeof localStorage !== 'undefined' && localStorage.getItem('starlight-theme');
|
||||
const theme =
|
||||
storedTheme ||
|
||||
(window.matchMedia('(prefers-color-scheme: light)').matches ? 'light' : 'dark');
|
||||
document.documentElement.dataset.theme = theme === 'light' ? 'light' : 'dark';
|
||||
console.log(document.documentElement)
|
||||
return {
|
||||
updatePickers(theme = storedTheme || 'auto') {
|
||||
document.querySelectorAll('starlight-theme-select').forEach((picker) => {
|
||||
const select = picker.querySelector('select');
|
||||
if (select) select.value = theme;
|
||||
/** @type {HTMLTemplateElement | null} */
|
||||
const tmpl = document.querySelector(`#theme-icons`);
|
||||
const newIcon = tmpl && tmpl.content.querySelector('.' + theme);
|
||||
if (newIcon) {
|
||||
const oldIcon = picker.querySelector('svg.label-icon');
|
||||
if (oldIcon) {
|
||||
oldIcon.replaceChildren(...newIcon.cloneNode(true).childNodes);
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
};
|
||||
})();
|
||||
</script>
|
||||
<video
|
||||
autoplay={true}
|
||||
loop={true}
|
||||
muted={true}
|
||||
playsinline={true}
|
||||
src="https://cdn.nhcarrigan.com/overlay.webm"
|
||||
style={{
|
||||
pointerEvents: "none",
|
||||
position: "fixed",
|
||||
top: 0,
|
||||
left: 0,
|
||||
opacity: 0.25,
|
||||
zIndex: 100,
|
||||
width: "100vw",
|
||||
height: "100vh",
|
||||
objectFit: "cover",
|
||||
}}></video>
|
||||
|
||||
<template id="theme-icons">
|
||||
<Icon name="sun" class="light" />
|
||||
<Icon name="moon" class="dark" />
|
||||
<Icon name="laptop" class="auto" />
|
||||
</template>
|
||||
+622
-21
@@ -1,13 +1,14 @@
|
||||
export const navigation = [
|
||||
{
|
||||
label: "About Us",
|
||||
collapsed: true,
|
||||
items: [
|
||||
{
|
||||
label: "Mission Statement",
|
||||
link: "/about/mission",
|
||||
},
|
||||
{
|
||||
label: "Sustainability",
|
||||
label: "Environmental Impact Commitment",
|
||||
link: "/about/sustainability",
|
||||
},
|
||||
{
|
||||
@@ -19,18 +20,23 @@ export const navigation = [
|
||||
link: "/about/donate",
|
||||
},
|
||||
{
|
||||
label: "Contact",
|
||||
label: "Contact Policy",
|
||||
link: "/about/contact",
|
||||
},
|
||||
{
|
||||
label: "Mentorship",
|
||||
label: "Mentorship Programme Terms and Conditions",
|
||||
link: "/about/mentorship",
|
||||
},
|
||||
],
|
||||
].sort((a, b) => a.label.localeCompare(b.label)),
|
||||
},
|
||||
{
|
||||
label: "Legal Information",
|
||||
collapsed: true,
|
||||
items: [
|
||||
{
|
||||
label: "Limitation of Liability and Indemnification Policy",
|
||||
link: "/legal/liability",
|
||||
},
|
||||
{
|
||||
label: "Terms of Service",
|
||||
link: "/legal/terms",
|
||||
@@ -40,49 +46,91 @@ export const navigation = [
|
||||
link: "/legal/privacy",
|
||||
},
|
||||
{
|
||||
label: "Software License",
|
||||
label: "Naomi's Public Licence",
|
||||
link: "/legal/license",
|
||||
},
|
||||
{
|
||||
label: "Acceptable Use Policy",
|
||||
link: "/legal/aup",
|
||||
},
|
||||
{
|
||||
label: "Security Policy",
|
||||
link: "/legal/security",
|
||||
},
|
||||
{
|
||||
label: "DMCA and Copyright",
|
||||
label: "Service Level Agreement and Warranty Disclaimer",
|
||||
link: "/legal/sla",
|
||||
},
|
||||
{
|
||||
label: "Content and Moderation Policy",
|
||||
link: "/legal/content-moderation",
|
||||
},
|
||||
{
|
||||
label: "Community Growth Policy",
|
||||
link: "/legal/community-growth-policy",
|
||||
},
|
||||
{
|
||||
label: "Community Support Policy",
|
||||
link: "/legal/community-support-policy",
|
||||
},
|
||||
{
|
||||
label: "DMCA and Intellectual Property Compliance Policy",
|
||||
link: "/legal/dmca",
|
||||
},
|
||||
{
|
||||
label: "Subprocessors List",
|
||||
label: "Data Subprocessors",
|
||||
link: "/legal/subprocessors",
|
||||
},
|
||||
{
|
||||
label: "Government Actions",
|
||||
label: "Export Control and Sanctions Compliance Policy",
|
||||
link: "/legal/export-control",
|
||||
},
|
||||
{
|
||||
label: "Government Actions and Compliance",
|
||||
link: "/legal/government",
|
||||
},
|
||||
],
|
||||
{
|
||||
label: "Crisis and Mental Health Management Policy",
|
||||
link: "/legal/crisis-mental-health",
|
||||
},
|
||||
].sort((a, b) => a.label.localeCompare(b.label)),
|
||||
},
|
||||
{
|
||||
label: "Community Policies",
|
||||
collapsed: true,
|
||||
items: [
|
||||
{
|
||||
label: "Code of Conduct",
|
||||
label: "Community Code of Conduct",
|
||||
link: "/community/coc",
|
||||
},
|
||||
{
|
||||
label: "Community Guidelines",
|
||||
label: "Community Guidelines and Best Practices",
|
||||
link: "/community/guide",
|
||||
},
|
||||
{
|
||||
label: "Appeal a Sanction",
|
||||
label: "Community Leadership and Governance Policy",
|
||||
link: "/community/leadership",
|
||||
},
|
||||
{
|
||||
label: "Community Recognition and Appreciation Policy",
|
||||
link: "/community/recognition",
|
||||
},
|
||||
{
|
||||
label: "Community Disciplinary Appeals Policy",
|
||||
link: "/community/appeal",
|
||||
},
|
||||
],
|
||||
{
|
||||
label: "Community Feedback and Participation Policy",
|
||||
link: "/community/feedback",
|
||||
},
|
||||
].sort((a, b) => a.label.localeCompare(b.label)),
|
||||
},
|
||||
{
|
||||
label: "Development Documentation",
|
||||
collapsed: true,
|
||||
items: [
|
||||
{
|
||||
label: "Contributing Guide",
|
||||
label: "Contributing Documentation",
|
||||
link: "/dev/contributing",
|
||||
},
|
||||
{
|
||||
@@ -106,48 +154,601 @@ export const navigation = [
|
||||
link: "/dev/servers",
|
||||
},
|
||||
{
|
||||
label: "VTubing Setup",
|
||||
label: "Naomi's VTubing Setup",
|
||||
link: "/dev/vtubing",
|
||||
},
|
||||
],
|
||||
{
|
||||
label: "Security Hall of Fame",
|
||||
link: "/dev/hall-of-fame",
|
||||
}
|
||||
].sort((a, b) => a.label.localeCompare(b.label)),
|
||||
},
|
||||
{
|
||||
label: "Mentorship Programme",
|
||||
collapsed: true,
|
||||
items: [
|
||||
{
|
||||
label: "00. Frequently Asked Questions",
|
||||
link: "/mentorship/00-faq",
|
||||
},
|
||||
{
|
||||
label: "01. Onboarding",
|
||||
link: "/mentorship/01-onboarding",
|
||||
},
|
||||
{
|
||||
label: "02. Goal Setting",
|
||||
link: "/mentorship/02-goal-setting",
|
||||
},
|
||||
{
|
||||
label: "03. Project Planning",
|
||||
link: "/mentorship/03-project-plan",
|
||||
},
|
||||
{
|
||||
label: "04. User Stories",
|
||||
link: "/mentorship/04-user-stories",
|
||||
},
|
||||
{
|
||||
label: "05. Technical Breakdown",
|
||||
link: "/mentorship/05-technical-breakdown",
|
||||
},
|
||||
{
|
||||
label: "06. Priority and Effort",
|
||||
link: "/mentorship/06-priority-and-effort",
|
||||
},
|
||||
{
|
||||
label: "07. Writing Code",
|
||||
link: "/mentorship/07-writing-code",
|
||||
},
|
||||
{
|
||||
label: "08. Final Polish",
|
||||
link: "/mentorship/08-final-polish",
|
||||
},
|
||||
{
|
||||
label: "09. Career Prep",
|
||||
link: "/mentorship/09-career-prep",
|
||||
},
|
||||
{
|
||||
label: "10. Graduation",
|
||||
link: "/mentorship/10-graduation",
|
||||
},
|
||||
].sort((a, b) => a.label.localeCompare(b.label)),
|
||||
},
|
||||
{
|
||||
label: "Project Documentation",
|
||||
collapsed: true,
|
||||
items: [
|
||||
{
|
||||
label: "ESLint Config",
|
||||
link: "/projects/eslint-config",
|
||||
badge: { text: "v5.1.0", variant: "tip" },
|
||||
},
|
||||
{
|
||||
label: "Aria Iuvo",
|
||||
link: "/projects/aria-iuvo",
|
||||
badge: { text: "v1.2.0", variant: "tip" },
|
||||
},
|
||||
{
|
||||
label: "Becca Lyria",
|
||||
link: "/projects/becca-lyria",
|
||||
badge: { text: "v1.0.0", variant: "tip" },
|
||||
},
|
||||
{
|
||||
label: "Naomi's Blog",
|
||||
link: "/projects/blog",
|
||||
badge: { text: "v1.0.0", variant: "tip" },
|
||||
},
|
||||
{
|
||||
label: "Celestine",
|
||||
link: "/projects/celestine",
|
||||
badge: { text: "v1.3.0", variant: "tip" },
|
||||
},
|
||||
{
|
||||
label: "Cordelia Taryne",
|
||||
link: "/projects/cordelia-taryne",
|
||||
badge: { text: "v1.1.0", variant: "tip" },
|
||||
},
|
||||
{
|
||||
label: "Gwen Abalise",
|
||||
link: "/projects/gwen-abalise",
|
||||
badge: { text: "v1.0.0", variant: "tip" },
|
||||
},
|
||||
{
|
||||
label: "Hikari",
|
||||
link: "/projects/hikari",
|
||||
badge: { text: "v0.0.0", variant: "caution" },
|
||||
},
|
||||
{
|
||||
label: "Maylin Taryne",
|
||||
link: "/projects/maylin-taryne",
|
||||
badge: { text: "v1.0.0", variant: "tip" },
|
||||
},
|
||||
{
|
||||
label: "Melody Iuvo",
|
||||
link: "/projects/melody-iuvo",
|
||||
badge: { text: "v1.0.0", variant: "tip" },
|
||||
},
|
||||
{
|
||||
label: "Mommy Bot",
|
||||
link: "/projects/mommy-bot",
|
||||
badge: { text: "v0.0.0", variant: "caution" },
|
||||
},
|
||||
{
|
||||
label: "Mommy",
|
||||
link: "/projects/mommy",
|
||||
badge: { text: "v0.0.0", variant: "caution" },
|
||||
},
|
||||
{
|
||||
label: "Portfolio",
|
||||
link: "/projects/portfolio",
|
||||
badge: { text: "unversioned", variant: "success" },
|
||||
},
|
||||
{
|
||||
label: "Logger",
|
||||
link: "/projects/logger",
|
||||
badge: { text: "v1.0.0", variant: "tip" },
|
||||
},
|
||||
{
|
||||
label: "Resume",
|
||||
link: "/projects/resume",
|
||||
badge: { text: "v1.0.0", variant: "tip" },
|
||||
},
|
||||
{
|
||||
label: "Rosalia Nightsong",
|
||||
link: "/projects/rosalia-nightsong",
|
||||
badge: { text: "v1.0.0", variant: "tip" },
|
||||
},
|
||||
{
|
||||
label: "Static Pages",
|
||||
link: "/projects/static-pages",
|
||||
badge: { text: "unversioned", variant: "success" },
|
||||
},
|
||||
{
|
||||
label: "Website Headers",
|
||||
link: "/projects/website-headers",
|
||||
badge: { text: "v2.1.0", variant: "tip" },
|
||||
},
|
||||
{
|
||||
label: "Altaria",
|
||||
link: "/projects/altaria",
|
||||
badge: { text: "v1.0.0", variant: "tip" },
|
||||
},
|
||||
{
|
||||
label: "Caelia",
|
||||
link: "/projects/caelia",
|
||||
badge: { text: "v1.0.0", variant: "tip" },
|
||||
},
|
||||
{
|
||||
label: "Chibika",
|
||||
link: "/projects/chibika",
|
||||
badge: { text: "v1.0.0", variant: "tip" },
|
||||
},
|
||||
{
|
||||
label: "Lynira",
|
||||
link: "/projects/lynira",
|
||||
badge: { text: "v1.0.0", variant: "tip" },
|
||||
},
|
||||
{
|
||||
label: "Pavelle",
|
||||
link: "/projects/pavelle",
|
||||
badge: { text: "v1.0.0", variant: "tip" },
|
||||
},
|
||||
{
|
||||
label: "Serenya",
|
||||
link: "/projects/serenya",
|
||||
badge: { text: "v1.0.0", variant: "tip" },
|
||||
},
|
||||
{
|
||||
label: "Sorielle",
|
||||
link: "/projects/sorielle",
|
||||
badge: { text: "v1.0.0", variant: "tip" },
|
||||
},
|
||||
{
|
||||
label: "Umbrelle",
|
||||
link: "/projects/umbrelle",
|
||||
badge: { text: "v1.0.0", variant: "tip" },
|
||||
},
|
||||
{
|
||||
label: "Veluna",
|
||||
link: "/projects/veluna",
|
||||
badge: { text: "v1.0.0", variant: "tip" },
|
||||
},
|
||||
{
|
||||
label: "Callista",
|
||||
link: "/projects/callista",
|
||||
badge: { text: "v1.0.0", variant: "tip" },
|
||||
},
|
||||
{
|
||||
label: "NHCarrigan Documentation",
|
||||
link: "/projects/docs",
|
||||
badge: { text: "v1.0.0", variant: "tip" },
|
||||
},
|
||||
{
|
||||
label: "Data API",
|
||||
link: "/projects/data-api",
|
||||
badge: { text: "v1.0.0", variant: "tip" },
|
||||
},
|
||||
{
|
||||
label: "Nymira",
|
||||
link: "/projects/nymira",
|
||||
badge: { text: "unreleased", variant: "danger" },
|
||||
},
|
||||
{
|
||||
label: "Vitalia",
|
||||
link: "/projects/vitalia",
|
||||
badge: { text: "unreleased", variant: "danger" },
|
||||
},
|
||||
{
|
||||
label: "Octavia",
|
||||
link: "/projects/octavia",
|
||||
badge: { text: "unreleased", variant: "danger" },
|
||||
},
|
||||
{
|
||||
label: "Maribelle",
|
||||
link: "/projects/maribelle",
|
||||
badge: { text: "unreleased", variant: "danger" },
|
||||
},
|
||||
{
|
||||
label: "Verena",
|
||||
link: "/projects/verena",
|
||||
badge: { text: "unreleased", variant: "danger" },
|
||||
},
|
||||
{
|
||||
label: "Thalassa",
|
||||
link: "/projects/thalassa",
|
||||
badge: { text: "unreleased", variant: "danger" },
|
||||
},
|
||||
{
|
||||
label: "Aeris",
|
||||
link: "/projects/aeris",
|
||||
badge: { text: "unreleased", variant: "danger" },
|
||||
},
|
||||
{
|
||||
label: "Thessalia",
|
||||
link: "/projects/thessalia",
|
||||
badge: { text: "unreleased", variant: "danger" },
|
||||
},
|
||||
{
|
||||
label: "Isolda",
|
||||
link: "/projects/isolda",
|
||||
badge: { text: "unreleased", variant: "danger" },
|
||||
},
|
||||
{
|
||||
label: "Meliora",
|
||||
link: "/projects/meliora",
|
||||
badge: { text: "unreleased", variant: "danger" },
|
||||
},
|
||||
{
|
||||
label: "Aurelia",
|
||||
link: "/projects/aurelia",
|
||||
badge: { text: "unreleased", variant: "danger" },
|
||||
},
|
||||
{
|
||||
label: "Eirene",
|
||||
link: "/projects/eirene",
|
||||
badge: { text: "unreleased", variant: "danger" },
|
||||
},
|
||||
{
|
||||
label: "Amirei",
|
||||
link: "/projects/amirei",
|
||||
badge: { text: "unreleased", variant: "danger" },
|
||||
},
|
||||
{
|
||||
label: "Zephra",
|
||||
link: "/projects/zephra",
|
||||
badge: { text: "unreleased", variant: "danger" },
|
||||
},
|
||||
{
|
||||
label: "Oriana",
|
||||
link: "/projects/oriana",
|
||||
badge: { text: "unreleased", variant: "danger" },
|
||||
},
|
||||
{
|
||||
label: "Lyra",
|
||||
link: "/projects/lyra",
|
||||
badge: { text: "unreleased", variant: "danger" },
|
||||
},
|
||||
{
|
||||
label: "Selene",
|
||||
link: "/projects/selene",
|
||||
badge: { text: "unreleased", variant: "danger" },
|
||||
},
|
||||
{
|
||||
label: "Sybil",
|
||||
link: "/projects/sybil",
|
||||
badge: { text: "unreleased", variant: "danger" },
|
||||
},
|
||||
{
|
||||
label: "Calenelle",
|
||||
link: "/projects/calenelle",
|
||||
badge: { text: "unreleased", variant: "danger" },
|
||||
},
|
||||
{
|
||||
label: "Rowena",
|
||||
link: "/projects/rowena",
|
||||
badge: { text: "unreleased", variant: "danger" },
|
||||
},
|
||||
{
|
||||
label: "Alouette",
|
||||
link: "/projects/alouette",
|
||||
badge: { text: "unreleased", variant: "danger" },
|
||||
},
|
||||
{
|
||||
label: "Clarion",
|
||||
link: "/projects/clarion",
|
||||
badge: { text: "unreleased", variant: "danger" },
|
||||
},
|
||||
{
|
||||
label: "Elowyn",
|
||||
link: "/projects/elowyn",
|
||||
badge: { text: "unreleased", variant: "danger" },
|
||||
},
|
||||
{
|
||||
label: "Evangeline",
|
||||
link: "/projects/evangeline",
|
||||
badge: { text: "unreleased", variant: "danger" },
|
||||
},
|
||||
{
|
||||
label: "Theodora",
|
||||
link: "/projects/theodora",
|
||||
badge: { text: "unreleased", variant: "danger" },
|
||||
},
|
||||
{
|
||||
label: "Vivienne",
|
||||
link: "/projects/vivienne",
|
||||
badge: { text: "unreleased", variant: "danger" },
|
||||
},
|
||||
{
|
||||
label: "Elysium",
|
||||
link: "/projects/elysium",
|
||||
badge: { text: "unreleased", variant: "danger" },
|
||||
},
|
||||
{
|
||||
label: "Elaria",
|
||||
link: "/projects/elaria",
|
||||
badge: { text: "unreleased", variant: "danger" },
|
||||
},
|
||||
{
|
||||
label: "Elunara",
|
||||
link: "/projects/elunara",
|
||||
badge: { text: "unreleased", variant: "danger" },
|
||||
},
|
||||
{
|
||||
label: "Aureline",
|
||||
link: "/projects/aureline",
|
||||
badge: { text: "unreleased", variant: "danger" },
|
||||
},
|
||||
{
|
||||
label: "Tessara",
|
||||
link: "/projects/tessara",
|
||||
badge: { text: "unreleased", variant: "danger" },
|
||||
},
|
||||
{
|
||||
label: "Hacksmiths",
|
||||
link: "/projects/hacksmiths",
|
||||
badge: { text: "unreleased", variant: "danger" },
|
||||
},
|
||||
{
|
||||
label: "Meridia",
|
||||
link: "/projects/meridia",
|
||||
badge: { text: "unreleased", variant: "danger" },
|
||||
},
|
||||
{
|
||||
label: "Lucinda",
|
||||
link: "/projects/lucinda",
|
||||
badge: { text: "unreleased", variant: "danger" },
|
||||
},
|
||||
{
|
||||
label: "Liora",
|
||||
link: "/projects/liora",
|
||||
badge: { text: "1.0.0", variant: "tip" },
|
||||
},
|
||||
{
|
||||
label: "Beccalia: Origins",
|
||||
link: "/projects/beccalia-origins",
|
||||
badge: { text: "v0.0.0", variant: "caution" },
|
||||
},
|
||||
{
|
||||
label: "Beccalia: Prologue",
|
||||
link: "/projects/beccalia-prologue",
|
||||
badge: { text: "v1.0.1", variant: "tip" },
|
||||
},
|
||||
{
|
||||
label: "Life of a Naomi",
|
||||
link: "/projects/life-of-a-naomi",
|
||||
badge: { text: "v1.0.0", variant: "tip" },
|
||||
},
|
||||
{
|
||||
label: "Ruu's Goblin Quest",
|
||||
link: "/projects/ruus-goblin-quest",
|
||||
badge: { text: "v1.0.0", variant: "tip" },
|
||||
},
|
||||
{
|
||||
label: "Naomi's Adventure I: An Isekai Story",
|
||||
link: "/projects/naomis-adventure-i",
|
||||
badge: { text: "unreleased", variant: "danger" },
|
||||
},
|
||||
{
|
||||
label: "Amari",
|
||||
link: "/projects/amari",
|
||||
badge: { text: "v1.0.0", variant: "tip" },
|
||||
},
|
||||
{
|
||||
label: "Artists4Palestine Bot",
|
||||
link: "/projects/a4p-bot",
|
||||
badge: { text: "v1.0.0", variant: "tip" },
|
||||
},
|
||||
{
|
||||
label: "Naomi's VSCode Themes",
|
||||
link: "/projects/vscode-themes",
|
||||
badge: { text: "v2.2.0", variant: "tip" },
|
||||
},
|
||||
{
|
||||
label: "Boost Monitor",
|
||||
link: "/projects/boost-monitor",
|
||||
badge: { text: "v1.0.1", variant: "tip" },
|
||||
},
|
||||
{
|
||||
label: "TypeScript Config",
|
||||
link: "/projects/typescript-config",
|
||||
badge: { text: "v4.0.0", variant: "tip" },
|
||||
},
|
||||
{
|
||||
label: "Discord Analytics",
|
||||
link: "/projects/discord-analytics",
|
||||
badge: { text: "v1.0.0", variant: "tip" },
|
||||
},
|
||||
{
|
||||
label: "Eclaire",
|
||||
link: "/projects/eclaire",
|
||||
badge: { text: "v1.0.0", variant: "tip" },
|
||||
},
|
||||
{
|
||||
label: "freeCodeCamp Review Generator",
|
||||
link: "/projects/freecodecamp-review-generator",
|
||||
badge: { text: "v1.0.0", variant: "tip" },
|
||||
},
|
||||
{
|
||||
label: "Keiko",
|
||||
link: "/projects/keiko",
|
||||
badge: { text: "v1.0.0", variant: "tip" },
|
||||
},
|
||||
{
|
||||
label: "Meeting Minutes",
|
||||
link: "/projects/meeting-minutes",
|
||||
badge: { text: "v1.0.0", variant: "tip" },
|
||||
},
|
||||
{
|
||||
label: "Nomena",
|
||||
link: "/projects/nomena",
|
||||
badge: { text: "v1.0.0", variant: "tip" },
|
||||
},
|
||||
{
|
||||
label: "Scripts",
|
||||
link: "/projects/scripts",
|
||||
badge: { text: "v1.0.0", variant: "tip" },
|
||||
},
|
||||
{
|
||||
label: "Sylvara",
|
||||
link: "/projects/sylvara",
|
||||
badge: { text: "unreleased", variant: "danger" },
|
||||
}
|
||||
].sort((a, b) => a.label.localeCompare(b.label)),
|
||||
},
|
||||
{
|
||||
label: "Staff Guidelines",
|
||||
collapsed: true,
|
||||
items: [
|
||||
{
|
||||
label: "Staff Handbook",
|
||||
link: "/staff/handbook",
|
||||
},
|
||||
{
|
||||
label: "Join our Team",
|
||||
label: "Professional Conduct Standards for Volunteers",
|
||||
link: "/staff/professional-conduct",
|
||||
},
|
||||
{
|
||||
label: "Volunteer Roles and Opportunities",
|
||||
link: "/staff/roles",
|
||||
},
|
||||
{
|
||||
label: "Position Hierarchy",
|
||||
link: "/staff/hierarchy",
|
||||
},
|
||||
{
|
||||
label: "Join Our Volunteer Team",
|
||||
link: "/staff/apply",
|
||||
},
|
||||
],
|
||||
{
|
||||
label: "Staff Application Evaluation Rubric",
|
||||
link: "/staff/rubric",
|
||||
},
|
||||
{
|
||||
label: "Additional Trainings",
|
||||
collapsed: true,
|
||||
items: [
|
||||
{
|
||||
label: "Accessibility Coordination Training for Staff",
|
||||
link: "/staff/training/accessibility-coordination",
|
||||
},
|
||||
{
|
||||
label: "Community Growth Specialist Training for Staff",
|
||||
link: "/staff/training/community-growth-specialist",
|
||||
},
|
||||
{
|
||||
label: "Community Support Specialist Training for Staff",
|
||||
link: "/staff/training/community-support-specialist",
|
||||
},
|
||||
{
|
||||
label: "Conflict Resolution Training for Staff",
|
||||
link: "/staff/training/conflict-resolution",
|
||||
},
|
||||
{
|
||||
label: "Crisis Response Training for Staff",
|
||||
link: "/staff/training/crisis-response",
|
||||
},
|
||||
{
|
||||
label: "Cross-Platform Coordination Training for Staff",
|
||||
link: "/staff/training/cross-platform-coordination",
|
||||
},
|
||||
{
|
||||
label: "Data Analytics and Reporting Training for Staff",
|
||||
link: "/staff/training/data-analytics-reporting",
|
||||
},
|
||||
{
|
||||
label: "Documentation and Transparency Training for Staff",
|
||||
link: "/staff/training/documentation-transparency",
|
||||
},
|
||||
{
|
||||
label: "Guild Wars 2 Leadership Training for Staff",
|
||||
link: "/staff/training/guild-wars-2-leadership",
|
||||
},
|
||||
{
|
||||
label: "Inclusive Moderation Training for Staff",
|
||||
link: "/staff/training/inclusive-moderation",
|
||||
},
|
||||
{
|
||||
label: "Mentorship and Training Coordination for Staff",
|
||||
link: "/staff/training/mentorship-training-coordination",
|
||||
},
|
||||
{
|
||||
label: "Social Media Management Training for Staff",
|
||||
link: "/staff/training/social-media-management",
|
||||
},
|
||||
{
|
||||
label: "Technical Contributor Training for Staff",
|
||||
link: "/staff/training/technical-contributor",
|
||||
},
|
||||
].sort((a, b) => a.label.localeCompare(b.label)),
|
||||
},
|
||||
{
|
||||
label: "Staff Policy Self-Assessment",
|
||||
link: "/staff/policy-self-assessment",
|
||||
},
|
||||
].sort((a, b) => a.label.localeCompare(b.label)),
|
||||
},
|
||||
{
|
||||
label: "Miscellaneous Documents",
|
||||
collapsed: true,
|
||||
items: [
|
||||
{
|
||||
label: "Managing Local Music",
|
||||
link: "/misc/music",
|
||||
},
|
||||
{
|
||||
label: "Templates",
|
||||
link: "/misc/templates",
|
||||
},
|
||||
{
|
||||
label: "AI Prompts",
|
||||
link: "/misc/prompts",
|
||||
}
|
||||
]
|
||||
].sort((a, b) => a.label.localeCompare(b.label)),
|
||||
},
|
||||
{
|
||||
label: "Sitemap",
|
||||
link: "https://sitemap.nhcarrigan.com",
|
||||
attrs: {
|
||||
target: "_blank",
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
+110
-203
@@ -2,16 +2,70 @@
|
||||
title: Contact Policy
|
||||
---
|
||||
|
||||
## Introduction and Legal Framework
|
||||
|
||||
This Contact Policy establishes our communication standards, channels, and expectations for all interactions with our organisation. This Policy operates within our comprehensive legal and policy framework, incorporating our Terms of Service, Privacy Policy, Community Code of Conduct, and all applicable legal protections by reference.
|
||||
|
||||
**IMPORTANT: All communications are subject to our Limitation of Liability and Indemnification Policy, Community Code of Conduct, and applicable legal frameworks. By engaging in communication with us, you acknowledge and agree to comply with all relevant policies.**
|
||||
|
||||
---
|
||||
|
||||
:::tip
|
||||
We maintain a full list of all officially-owned social media accounts. You can view those accounts at https://cdn.nhcarrigan.com/socials.txt.
|
||||
|
||||
<details>
|
||||
<summary>Verification Instructions</summary>
|
||||
|
||||
To verify the authenticity of that document, grab our SSH key from https://git.nhcarrigan.com/naomi.keys and save it locally. ADD `naomi@nhcarrigan.com ` TO THE BEGINNING OF THIS SIGNATURE FILE. It should look like `naomi@nhcarrigan.com ssh-rsa <key string>`.
|
||||
|
||||
Save the list of socials locally locally.
|
||||
|
||||
Copy and save this signature locally:
|
||||
|
||||
```
|
||||
-----BEGIN SSH SIGNATURE-----
|
||||
U1NIU0lHAAAAAQAAAhcAAAAHc3NoLXJzYQAAAAMBAAEAAAIBAMU5uZawMgDZj3m5jw9WZ6
|
||||
ltOSMbYQWnfo9NyccKL8xiVoGVU9PxzSLEuPpczAZpNaKLD5JqhJ2zXN/9YVF+R3wq6NZY
|
||||
tCDTET02HShOEXTsfChEi+LVi4Brr1OY5Jo1pPViNfm4IintA1yTkCQtyQwrq/lWFvlc/B
|
||||
mS0Sn3ogEJCp0FxXYXrBfo6ujveKoYKiIBxRlHN4D13Mu00KDvufeEUqtJ42m5fNf/dKJU
|
||||
7H3Hb7e9l3IuUJeiBC8fb0tTx7E9pg6ivaH6KM8tVGK+U77LK3qzXWICutWGAg1GlMQNsd
|
||||
17sa03NB4tE12cXIVLCSPUo9Wlt+8BYNNvO14JrCJzQ4/mzBDSsUu2NKdAj4rYaoUW742/
|
||||
KnPdhfmjOpMFIW53IjldmAs5sixH8u6DrMR1Ge+goOcdwGpHGdl4c4Pkyr6gesdLIDwpE4
|
||||
sf5ea0XB23JqTDU2e7AusUzTwc4coUGPrrOBTVJI2NSJSS/eUEiGUMhUBYOTtcbnJEnHQb
|
||||
Nw0sDi+8gqFLdJU6pl7NFWt8HrRKCU4g86DGO9Ym5j2MJNw3looFPjr4eNqbd0Xvnh3Hes
|
||||
bXTcDO+fT9vceJx/fT4ulE23GLiT5B0Pir8uVGaytKXTRLjBx9op7NrsvxYABQ2Z8Kp4Ck
|
||||
nTpTU75OikmKTNPltPk5sfIN5SAd0HWPAAAAB3NvY2lhbHMAAAAAAAAABnNoYTUxMgAAAh
|
||||
QAAAAMcnNhLXNoYTItNTEyAAACAMFX4E0UKi1FsLzX02G7hgs/nuShGl5Le57bTZSb9IPM
|
||||
HgdwNsSr5LPq08jlMElt1DNRq6U2CLBa6tHkxRATzOE1qlKcfjzJqKddLpRBwkLLq+iGO1
|
||||
cPyp+TNrNBURrzslOxwpphTSrF/ehhQ0vc+IXYytqDD7cZnLD3NjGhYfvwWGmvkVI4fS6P
|
||||
VycaE4+1/8XxviwCPb+q44HPUUzOvCUtQBb0Y6w/7WCIfQWjpetkpGQrLdUFFWTnb5kq/9
|
||||
nSNUH/0qQfjHMV+wz9MO9yY1oskvJ8P9cCKZ4/6sJK/d5NPZ76KO4eOwiFvGKNBFmZ0SwF
|
||||
hNVMgZf9Sem3HtylOFsYFIwD6caRz8uRZ3VqiqQhpvCcrEdG9Ezna9362EJsVE1GUwiIMG
|
||||
nZMY6gjdQeezJpC3BGsCMCI6dF3pq6XlQ0Qrmmo9dTHW+ACdUBnBicG9Qpi+6ctBYGSHVx
|
||||
EUcT6R+7JzdsFisMFdDztLEfSoECnxmqDOVia6yg9KkRPio2DISkaBU0ZGBBsKTNeWHY2U
|
||||
NP9XfAtfiGVe60t9ojoZiY8w9mAX//l+7L6EYgivm0MJWstSsilb/+3hqD3pywhrd/zF6b
|
||||
LK7eSS34bl3DiFPQq0IBtzK4vAgpnRRg3OzzUWYKwV5OeF9WP9kyC4ZoPFVWYMEqbGXYcK
|
||||
lSoyLtKhg+
|
||||
-----END SSH SIGNATURE-----
|
||||
```
|
||||
|
||||
Then run:
|
||||
|
||||
```
|
||||
ssh-keygen -Y verify -f /path/to/saved/key -I naomi@nhcarrigan.com -n socials -s /path/to/saved/signature < /path/to/saved/list
|
||||
```
|
||||
|
||||
</details>
|
||||
:::
|
||||
|
||||
## 1. Support and Communication Channels
|
||||
|
||||
### 1.1 Public Support Channels
|
||||
|
||||
We offer FREE support through several PUBLIC channels, including:
|
||||
|
||||
- Community Forums
|
||||
- Public Repository Issues
|
||||
- Open IRC Channels
|
||||
- Custom Fediverse Instance
|
||||
- Discord server
|
||||
|
||||
These channels are ideal for:
|
||||
|
||||
@@ -40,60 +94,27 @@ Our platforms offer various ways to engage with our projects and community:
|
||||
- Seek mentorship in software development
|
||||
- Participate in casual discussions with our team and community members
|
||||
|
||||
### 1.4 Platform Directory
|
||||
### 1.4 Contact Form
|
||||
|
||||
Below, you'll find a comprehensive list of our official communication platforms. Each platform serves specific purposes and caters to different types of interactions. Please choose the most appropriate channel for your needs to ensure the fastest and most effective response.
|
||||
We offer a [contact form](https://forms.nhcarrigan.com/form/HyqoJ9Th5QDiOn_GPLNIRhe1a5ON7mDQf-O_ukM6R4g) for direct, low-priority communication requests.
|
||||
|
||||
### 1.5 Contact Form
|
||||
|
||||
We offer a [contact form](https://forms.nhcarrigan.com/contact) for direct, low-priority communication requests.
|
||||
|
||||
It is often faster to reach out through one of the above platforms, and best to consider this contact form as a backup in the event of a severe outage.
|
||||
It is often faster to reach out through one of the below platforms, and best to consider this contact form as a backup in the event of a severe outage.
|
||||
|
||||
## 2. Communication Platforms
|
||||
|
||||
### 2.1 IRC
|
||||
### 2.1. Discord
|
||||
|
||||
Our custom IRC network allows for real-time communication with your fellow community members.
|
||||
Our Discord server allows for both quick and in-depth communication.
|
||||
|
||||
:::note
|
||||
We do not have an IRC bouncer. The only people who will see your messages are the ones who are online when it is sent.
|
||||
:::
|
||||
|
||||
- Join Link: https://irc.nhcarrigan.com
|
||||
- Features:
|
||||
- Fastest response times
|
||||
- Multiple topic-specific channels
|
||||
- Best for: Quick support, community discussions, and live collaboration
|
||||
|
||||
### 2.2. Forum
|
||||
|
||||
Our self-hosted forum allows for more long-form communication, which is ideal for support queries and in-depth conversations.
|
||||
|
||||
- Join Link: https://forum.nhcarrigan.com
|
||||
- Join Link: https://chat.nhcarrigan.com
|
||||
- Features:
|
||||
- Quick response times
|
||||
- Threaded conversations
|
||||
- Persistent and indexed posts
|
||||
- Community powered support
|
||||
- Best for: Support queries
|
||||
|
||||
### 2.3. Fediverse
|
||||
### 2.2. Code Repositories
|
||||
|
||||
We self-host a fediverse instance for our random thoughts.
|
||||
|
||||
:::caution
|
||||
The instance is invite-only and invites are reserved for our core team and polycule. But you can follow and engage with any Mastodon-compliant instance!
|
||||
:::
|
||||
|
||||
- Link: https://fedi.nhcarrigan.com
|
||||
- Features:
|
||||
- Microblogging platform
|
||||
- Likes + reposts
|
||||
- Best for: General chatter
|
||||
|
||||
### 2.4. Code Repositories
|
||||
|
||||
Our code repositories are all self-hosted. Sign-ups are open for anyone who wants to file an issue or comment on a discussion, but making code contributions is restricted to our core team.
|
||||
Our code repositories are all self-hosted. You will need to request an account via our form: https://forms.nhcarrigan.com/form/c0_N5hb-VcmC2ClzaGOvDxVirMN_coiWG7eoPhDPsZ0
|
||||
|
||||
- Link: https://git.nhcarrigan.com
|
||||
- Features:
|
||||
@@ -101,17 +122,7 @@ Our code repositories are all self-hosted. Sign-ups are open for anyone who want
|
||||
- Source code for all of our products
|
||||
- Best for: Filing tickets on our software.
|
||||
|
||||
### 2.5 Matrix Server
|
||||
|
||||
We have a matrix server available for asynchronous chat.
|
||||
|
||||
- Link: https://matrix.nhcarrigan.com
|
||||
- Features:
|
||||
- Encrypted rooms and chats
|
||||
- Discord-like experience.
|
||||
- Best for: Sensitive discussions that need extra security.
|
||||
|
||||
### 2.6 Etiquette and Best Practices
|
||||
### 2.3. Etiquette and Best Practices
|
||||
|
||||
- Please be respectful and follow the community guidelines on all platforms.
|
||||
- Use appropriate channels or rooms for your queries to ensure the fastest response.
|
||||
@@ -124,8 +135,8 @@ We have a matrix server available for asynchronous chat.
|
||||
|
||||
We have a dedicated page where we post all of our organisational updates.
|
||||
|
||||
- URL: https://announcements.nhcarrigan.com
|
||||
- Nature: This board is read-only.
|
||||
- URL: https://hikari.nhcarrigan.com/announcements
|
||||
- Nature: You can reply to announcement threads to discuss the announcement.
|
||||
- Content:
|
||||
- Project updates and new releases
|
||||
- Important community announcements
|
||||
@@ -147,7 +158,7 @@ Our blog contains more personal posts and updates.
|
||||
|
||||
### 3.3 Interacting with Announcements
|
||||
|
||||
All of our announcements are read-only, but you can discuss them in any of our platforms mentioned in Section 1!
|
||||
All of our announcements are read-only, but you can discuss them in any of our platforms mentioned in Section 2!
|
||||
|
||||
### 3.6 Historical Announcements
|
||||
|
||||
@@ -173,25 +184,7 @@ LinkedIn serves as our primary professional networking platform.
|
||||
|
||||
When sending a connection request, please include a brief message explaining your interest. We typically respond to LinkedIn messages within 2-3 business days.
|
||||
|
||||
### 4.2 Peerlist Profile
|
||||
|
||||
As an alternative to LinkedIn, we maintain a presence on Peerlist, a platform focused on tech professionals.
|
||||
|
||||
- Profile URL: https://peerlist.io/naomi_lgbt
|
||||
- Purpose:
|
||||
- Showcase technical projects and contributions
|
||||
- Highlight specific skills and technologies
|
||||
- Connect with other tech professionals
|
||||
- Best for:
|
||||
- Tech-focused recruiters and companies
|
||||
- Fellow developers and engineers
|
||||
- Open-source collaborators
|
||||
|
||||
#### 4.2.1 Engaging on Peerlist
|
||||
|
||||
Feel free to explore our projects and contributions on Peerlist. You can leave comments or questions on specific items in our portfolio.
|
||||
|
||||
### 4.3 Professional Inquiries
|
||||
### 4.2 Professional Inquiries
|
||||
|
||||
When reaching out for professional reasons, please consider the following:
|
||||
|
||||
@@ -199,94 +192,23 @@ When reaching out for professional reasons, please consider the following:
|
||||
- Relevant Background: Provide brief context about yourself or your company.
|
||||
- Specific Questions: If you have particular queries, include them in your initial message.
|
||||
|
||||
### 4.4 Services
|
||||
### 4.3 Services
|
||||
|
||||
If you're interested in hiring us to perform some work for you, fill out the form at https://forms.nhcarrigan.com/commission.
|
||||
If you're interested in hiring us to perform some work for you, fill out the form at https://forms.nhcarrigan.com/form/XRlQjeu8CbMrTA-v0IPOxlUPEPitLKXTWg70UUCIORA.
|
||||
|
||||
### 4.5 Speaking Engagements and Events
|
||||
### 4.4 Speaking Engagements and Events
|
||||
|
||||
If you're interested in having us speak at your event or contribute to your publication, fill out the form at https://forms.nhcarrigan.com/events.
|
||||
If you're interested in having us speak at your event or contribute to your publication, fill out the form at https://forms.nhcarrigan.com/form/Xqap3Q8hazzJd4Rrp9OOs9ip8Pa7C9zOVThlyFoPCbU.
|
||||
|
||||
### 4.6 Keeping Professional Connections Updated
|
||||
### 4.5 Keeping Professional Connections Updated
|
||||
|
||||
We regularly update our professional profiles with new projects, skills, and achievements. Follow us on these platforms to stay informed about our professional journey and potential opportunities for collaboration.
|
||||
|
||||
## 5. One-on-One Sessions
|
||||
|
||||
We offer personalized, one-on-one sessions to cater to various needs, from casual conversations to in-depth consultations. Book your session through our Topmate profile.
|
||||
|
||||
### 5.1 Coffee Chat - $50
|
||||
|
||||
A casual, informal conversation to connect and share ideas.
|
||||
|
||||
- Duration: 15 minutes
|
||||
- Purpose:
|
||||
- Get to know Naomi
|
||||
- Discuss general topics in tech
|
||||
- Share experiences and insights
|
||||
- Best for:
|
||||
- Students looking for career advice
|
||||
- Professionals seeking to expand their network
|
||||
- Anyone interested in a friendly chat about tech and open source
|
||||
|
||||
### 5.2 Consulting Session - $100
|
||||
|
||||
A focused, one-on-one session to discuss potential new projects and align our services with your needs.
|
||||
|
||||
- Duration: 30 minutes
|
||||
- Purpose:
|
||||
- Explore your project requirements in detail
|
||||
- Discuss how our services can meet your needs
|
||||
- Provide estimated quotes for the proposed work
|
||||
- Best for:
|
||||
- Developers stuck on a particular problem
|
||||
- Project managers seeking technical guidance
|
||||
- Startups needing expert input on their tech stack
|
||||
|
||||
### 5.3 Mentorship Session - $200
|
||||
|
||||
An in-depth, personalized session focused on long-term professional growth and skill development.
|
||||
|
||||
- Duration: 1 hour
|
||||
- Purpose:
|
||||
- Provide career guidance and development strategies
|
||||
- Offer personalized learning plans and resources
|
||||
- Review and provide feedback on code or projects
|
||||
- Best for:
|
||||
- Early-career developers seeking guidance
|
||||
- Professionals looking to transition into tech
|
||||
- Anyone seeking structured, long-term professional development
|
||||
|
||||
### 5.4 How to Book a Session:
|
||||
|
||||
- Complete the [meeting request form](https://forms.nhcarrigan.com/session)
|
||||
- Wait for an email to schedule a time
|
||||
- Once a time is agreed upon, you will receive an invoice via email.
|
||||
- The invoice MUST be paid at least 24 hours prior to your session.
|
||||
|
||||
### 5.5 Preparing for Your Session:
|
||||
|
||||
- Coffee Chat: Come with topics you'd like to discuss or questions about the industry
|
||||
- Consulting: Prepare a clear description of your problem or project, and any relevant code or documentation
|
||||
- Mentorship: Outline your career goals and areas where you'd like to improve
|
||||
|
||||
### 5.6 Additional Information:
|
||||
|
||||
- All sessions are conducted virtually via a video call over Zoom or Google Meet.
|
||||
- Payment is required at the time of booking
|
||||
- Rescheduling is possible with at least 24 hours notice
|
||||
|
||||
For any questions about these sessions or to discuss a different type of engagement, please reach out through our preferred contact methods listed in previous sections.
|
||||
|
||||
## 6. Email Communication
|
||||
|
||||
:::caution
|
||||
Email communication is considered a paid service and will be invoiced at $25 per email we receive.
|
||||
:::
|
||||
## 5. Email Communication
|
||||
|
||||
We offer several email addresses for specific types of inquiries. Please use the appropriate email address to ensure your message reaches the right team and receives the most efficient response.
|
||||
|
||||
### 6.1 General Inquiries
|
||||
### 5.1 General Inquiries
|
||||
|
||||
- Email: contact@nhcarrigan.com
|
||||
- Use for:
|
||||
@@ -295,7 +217,7 @@ We offer several email addresses for specific types of inquiries. Please use the
|
||||
- Media or press inquiries
|
||||
- Any queries that don't fit other categories
|
||||
|
||||
### 6.2 Billing and Financial Matters
|
||||
### 5.2 Billing and Financial Matters
|
||||
|
||||
- Email: billing@nhcarrigan.com
|
||||
- Use for:
|
||||
@@ -304,7 +226,7 @@ We offer several email addresses for specific types of inquiries. Please use the
|
||||
- Refund requests
|
||||
- Updating billing information
|
||||
|
||||
### 6.3 Technical Support
|
||||
### 5.3 Technical Support
|
||||
|
||||
- Email: support@nhcarrigan.com
|
||||
- Use for:
|
||||
@@ -312,7 +234,7 @@ We offer several email addresses for specific types of inquiries. Please use the
|
||||
- Reporting bugs or technical issues
|
||||
- Documentation clarifications
|
||||
|
||||
### 6.4 Privacy Concerns
|
||||
### 5.4 Privacy Concerns
|
||||
|
||||
- Email: privacy@nhcarrigan.com
|
||||
- Use for:
|
||||
@@ -321,7 +243,7 @@ We offer several email addresses for specific types of inquiries. Please use the
|
||||
- Reporting potential privacy breaches
|
||||
- Opting out of data collection (where applicable)
|
||||
|
||||
### 6.5 Security Matters
|
||||
### 5.5 Security Matters
|
||||
|
||||
- Email: security@nhcarrigan.com
|
||||
- Use for:
|
||||
@@ -329,7 +251,7 @@ We offer several email addresses for specific types of inquiries. Please use the
|
||||
- Questions about our security practices
|
||||
- Concerns about potential security breaches
|
||||
|
||||
### 6.6 Legal Inquiries
|
||||
### 5.6 Legal Inquiries
|
||||
|
||||
- Email: legal@nhcarrigan.com
|
||||
- Use for:
|
||||
@@ -338,7 +260,7 @@ We offer several email addresses for specific types of inquiries. Please use the
|
||||
- Requests for legal documentation
|
||||
- Formal notices or communications
|
||||
|
||||
### 6.7 Feedback and Suggestions
|
||||
### 5.7 Feedback and Suggestions
|
||||
|
||||
- Email: feedback@nhcarrigan.com
|
||||
- Use for:
|
||||
@@ -347,7 +269,7 @@ We offer several email addresses for specific types of inquiries. Please use the
|
||||
- Sharing your experience with our services
|
||||
- Offering ideas for future developments
|
||||
|
||||
### 6.8 Press/Media Inquiries
|
||||
### 5.8 Press/Media Inquiries
|
||||
|
||||
- Email: press@nhcarrigan.com
|
||||
- Use for:
|
||||
@@ -355,7 +277,7 @@ We offer several email addresses for specific types of inquiries. Please use the
|
||||
- Scheduling interviews for your media outlet
|
||||
- Attribution requests in academic articles
|
||||
|
||||
### 6.9 Event Requests
|
||||
### 5.9 Event Requests
|
||||
|
||||
- Email: events@nhcarrigan.com
|
||||
- Use for:
|
||||
@@ -364,7 +286,7 @@ We offer several email addresses for specific types of inquiries. Please use the
|
||||
- Workshop or training session requests
|
||||
- Event sponsorship inquiries
|
||||
|
||||
### 6.10 Marketing Inquiries
|
||||
### 5.10 Marketing Inquiries
|
||||
|
||||
- Email: marketing@nhcarrigan.com
|
||||
- Use for:
|
||||
@@ -373,7 +295,7 @@ We offer several email addresses for specific types of inquiries. Please use the
|
||||
- Advertising inquiries
|
||||
- Content licensing requests
|
||||
|
||||
### 6.11 Career Information
|
||||
### 5.11 Career Information
|
||||
|
||||
- Email: careers@nhcarrigan.com
|
||||
- Use for:
|
||||
@@ -382,7 +304,7 @@ We offer several email addresses for specific types of inquiries. Please use the
|
||||
- Inquiries
|
||||
- Following up on job applications
|
||||
|
||||
### 6.12 Partnerships
|
||||
### 5.12 Partnerships
|
||||
|
||||
- Email: partners@nhcarrigan.com
|
||||
- Use for:
|
||||
@@ -391,7 +313,7 @@ We offer several email addresses for specific types of inquiries. Please use the
|
||||
- Brand ambassador programmes
|
||||
- Product placement or sponsored content inquiries
|
||||
|
||||
### 6.13 Email Communication Guidelines
|
||||
### 5.13 Email Communication Guidelines
|
||||
|
||||
- Subject Line: Please use a clear, concise subject line that summarizes your inquiry.
|
||||
- Content: Provide all relevant details in your initial email to expedite the response process.
|
||||
@@ -399,22 +321,25 @@ We offer several email addresses for specific types of inquiries. Please use the
|
||||
- Response Time: We aim to respond to all emails within 2 business days. Complex inquiries may require additional time.
|
||||
- Follow-ups: If you haven't received a response after 3 business days, feel free to send a polite follow-up.
|
||||
|
||||
### 6.14 Email Privacy and Security
|
||||
### 5.14 Email Privacy and Security
|
||||
|
||||
All email communications are treated as confidential.
|
||||
**Reference to Comprehensive Privacy Framework**: Detailed privacy protections, data handling procedures, and security measures are set forth in our Privacy Policy, which is incorporated herein by reference.
|
||||
|
||||
We do not share your email address or the content of your messages with third parties unless:
|
||||
All email communications are treated as confidential and subject to our comprehensive privacy protections.
|
||||
|
||||
- Required by law; OR
|
||||
- As part of a public warning related to a violation of our Code of Conduct
|
||||
We do not share your email address or the content of your messages with third parties except as outlined in our Privacy Policy, including:
|
||||
|
||||
### 6.15 Spam and Unsolicited Emails
|
||||
- When required by law or legal process
|
||||
- As part of public safety measures related to Code of Conduct violations
|
||||
- As necessary for service provision and technical operations
|
||||
|
||||
### 5.15 Spam and Unsolicited Emails
|
||||
|
||||
We have a strict no-spam policy. If you receive any unsolicited emails claiming to be from us, please report them to security@nhcarrigan.com.
|
||||
|
||||
By using the appropriate email address for your inquiry, you help us provide you with the most efficient and accurate response possible. If you're unsure which email to use, feel free to send your inquiry to contact@nhcarrigan.com, and we'll direct it to the appropriate team.
|
||||
|
||||
### 6.16 Acceptable Use and Consequences
|
||||
### 5.16 Acceptable Use and Consequences
|
||||
|
||||
We are committed to maintaining a respectful and productive communication environment. To ensure this:
|
||||
|
||||
@@ -433,20 +358,13 @@ We reserve the right to report serious abuses to relevant authorities if necessa
|
||||
|
||||
By communicating with us via email, you agree to adhere to these guidelines and understand the consequences of misuse.
|
||||
|
||||
## 7. Direct Messages
|
||||
## 6. Direct Messages
|
||||
|
||||
:::caution
|
||||
Direct messages (DMs) are considered a paid service and will be invoiced at $25 per message we receive.
|
||||
:::
|
||||
### 6.1 Direct Message Policy
|
||||
|
||||
### 7.1 Direct Message Policy
|
||||
We offer direct messaging as a private, personalized communication channel. However, to manage our time effectively and ensure the highest quality of service, direct messages are the lowest priority of communication. Instead, we strongly encourage you to reach out via our Discord community.
|
||||
|
||||
We offer direct messaging as a premium, personalized communication channel. However, to manage our time effectively and ensure the highest quality of service, we have implemented the following policy for direct messages:
|
||||
|
||||
- Each direct message received will be invoiced at $25.
|
||||
- This applies to all platforms where direct messaging is available.
|
||||
|
||||
### 7.2 Purpose and Use
|
||||
### 6.2 Purpose and Use
|
||||
|
||||
Direct messages should be used for:
|
||||
|
||||
@@ -454,28 +372,17 @@ Direct messages should be used for:
|
||||
- Sensitive information that shouldn't be shared publicly
|
||||
- Personalized support or consultation requests
|
||||
|
||||
### 7.3 Invoicing and Payment
|
||||
### 6.3 Response Time
|
||||
|
||||
- An invoice will be generated for each direct message received.
|
||||
- Payment is required before a response will be provided.
|
||||
- Invoices will be sent to you via the direct message channel on the platform where the direct message was received.
|
||||
|
||||
### 7.4 Response Time
|
||||
|
||||
- Once payment is received, we aim to respond to direct messages within 1-2 business days.
|
||||
- We aim to respond to direct messages within 5-7 business days.
|
||||
- Complex inquiries may require additional time, which will be communicated to you.
|
||||
|
||||
### 7.5 Refund Policy
|
||||
|
||||
- Due to the immediate nature of the service, refunds for direct messages are not typically offered.
|
||||
- In exceptional circumstances, refund requests will be considered on a case-by-case basis.
|
||||
|
||||
### 7.6 Appropriate Use
|
||||
### 6.4 Appropriate Use
|
||||
|
||||
- Direct messages should be used responsibly and for legitimate purposes only.
|
||||
- Abusive, harassing, or spam messages will not be tolerated and may result in blocking or reporting to the platform.
|
||||
|
||||
### 7.7 Alternatives
|
||||
### 6.5 Alternatives
|
||||
|
||||
We encourage users to consider the following alternatives before sending a direct message:
|
||||
|
||||
@@ -483,8 +390,8 @@ We encourage users to consider the following alternatives before sending a direc
|
||||
- Check our FAQ or documentation for commonly asked questions
|
||||
- Post in our community forums for non-urgent matters
|
||||
|
||||
### 7.8 Consent and Acknowledgment
|
||||
### 6.7 Consent and Acknowledgment
|
||||
|
||||
By sending a direct message, you acknowledge that you have read and agreed to this policy, including the fee structure and invoicing process.
|
||||
By sending a direct message, you acknowledge that you have read and agreed to this policy.
|
||||
|
||||
Remember, while we value direct communication, we encourage the use of our public channels whenever possible to foster community engagement and shared learning.
|
||||
|
||||
@@ -2,6 +2,12 @@
|
||||
title: Support Our Work 💜
|
||||
---
|
||||
|
||||
:::tip
|
||||
We have started tracking our organisation's income and expenses publicly, through our [OpenCollective](https://opencollective.com/nhcarrigan) account!
|
||||
|
||||
You can also donate there directly.
|
||||
:::
|
||||
|
||||
We are passionate about creating and maintaining free-to-use projects and providing guidance in various programming communities. Your support helps us continue this mission and expand our efforts.
|
||||
|
||||
## 1. Why Support Us?
|
||||
@@ -20,9 +26,17 @@ We are passionate about creating and maintaining free-to-use projects and provid
|
||||
|
||||
## 3. Ways to Support
|
||||
|
||||
You can make a $5 monthly donation via https://buy.stripe.com/cN24iTfqu1j6b3afZ2
|
||||
We offer a few options for donations!
|
||||
|
||||
Or, if you'd like to make a one-off donation: https://donate.stripe.com/8wMcPp1zE8Ly2wEcMR
|
||||
- You can donate on our [OpenCollective](https://opencollective.com/nhcarrigan) page
|
||||
- You can donate via a monthly subscription in our [Discord community](https://chat.nhcarrigan.com)
|
||||
- You can donate via a monthly membership on our [Patreon](https://patreon.com/nhcarrigan)
|
||||
- You can make monthly or one-time donations on [Ko-Fi](https://ko-fi.com/nhcarrigan)
|
||||
- You can suggest and purchase gifts for us on [Throne](https://throne.com/naomilgbt)
|
||||
- You can subscribe to our [Twitch streams](https://twitch.tv/naomilgbt)
|
||||
- You can send direct donations via [PayPal](https://paypal.me/nhcarrigan) or [CashApp](https://cash.app/$nhcarrigan)
|
||||
- You can sponsor us directly through our [GitHub organisation](https://github.com/sponsors/nhcarrigan) or [Naomi's account](https://github.com/sponsors/naomi-lgbt)
|
||||
- Want to keep it simple? Make [monthly](https://buy.stripe.com/cN24iTfqu1j6b3afZ2) or [one-time](https://donate.stripe.com/8wMcPp1zE8Ly2wEcMR) donations directly through Stripe!
|
||||
|
||||
## 4. Other Ways to Help
|
||||
|
||||
@@ -38,6 +52,4 @@ For any questions about donations or to discuss other support options, please co
|
||||
|
||||
## 6. Perks
|
||||
|
||||
Once you have donated, make sure to join our [community](https://forum.nhcarrigan.com)! Once there, DM Naomi to request access to our special supporters subforum!
|
||||
|
||||
You can also request access to our [private development notes](https://notes.nhcarrigan.com), which gives you a sneak peek into our roadmap and future plans. You'll need to provide an email address so we can add you to the access list.
|
||||
Once you have donated, make sure to join our [Discord](https://chat.nhcarrigan.com)! Once there, ping Naomi to request access to our special supporters channel and role!
|
||||
|
||||
@@ -4,7 +4,7 @@ title: Hire us!
|
||||
|
||||
We're excited about the opportunity to collaborate with you and contribute to the success of your goals. Our team brings a wealth of experience and a passion for delivering high-quality solutions tailored to your specific needs.
|
||||
|
||||

|
||||

|
||||
|
||||
## 1. Our Services
|
||||
|
||||
@@ -35,10 +35,6 @@ For more complex, long-term, or in-depth projects, we recommend booking an in-de
|
||||
|
||||
### 2.3. Mentorship Session (60 minutes)
|
||||
|
||||
:::tip
|
||||
Individual mentorship sessions are made available for those who might need one-off guidance, but the best value is actually through our [Mentorship programme](/about/mentorship).
|
||||
:::
|
||||
|
||||
For those seeking personalized guidance and skill development, we offer a full mentorship session.
|
||||
|
||||
- Ideal for: Individuals looking to enhance their skills in development, community management, or related areas
|
||||
@@ -54,6 +50,6 @@ For those seeking personalized guidance and skill development, we offer a full m
|
||||
|
||||
## 4. Ready to Get Started?
|
||||
|
||||
Submit a [meeting request](https://forms.nhcarrigan.com/session)!
|
||||
Submit a [commission request](https://forms.nhcarrigan.com/form/XRlQjeu8CbMrTA-v0IPOxlUPEPitLKXTWg70UUCIORA)!
|
||||
|
||||
Not sure which option is right for you? Feel free to contact us with any questions. We're excited to explore how we can help bring your ideas to life and contribute to your success!
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
title: Mentorship Programme Terms and Conditions
|
||||
---
|
||||
|
||||
Here at NHCarrigan, we are dedicated to lowering the barriers of entry into tech and helping underprivileged/under-represented classes reach their goals. As part of this mission, we offer a mentorship programme ("Programme").
|
||||
Here at NHCarrigan, we are dedicated to lowering the barriers of entry into tech and helping underprivileged/under-represented classes reach their goals. As part of this mission, we offer a mentorship programme ("Programme"). This Programme operates within our comprehensive legal and policy framework, incorporating our Terms of Service, Community Policies, and all applicable legal protections by reference.
|
||||
|
||||
## 1. Introduction
|
||||
|
||||
@@ -10,52 +10,40 @@ These Terms and Conditions (“Terms”) outline the Programme provided by NHCar
|
||||
|
||||
### 1.1. Enrolment
|
||||
|
||||
To enrol in the Programme, [fill out the application](https://forms.nhcarrigan.com/mentorship).
|
||||
To enrol in the Programme, [fill out the application](https://forms.nhcarrigan.com/form/gNv4NYZmdiMWpkUcnknII2yYCvnYNGAmabG5O5He9Mo).
|
||||
|
||||
## 2. Programme Services
|
||||
|
||||
Upon successful enrolment, the Mentee receives the following benefits:
|
||||
|
||||
### 2.1 Monthly 1:1 Sessions
|
||||
### 2.1 Dedicated Discord Channels
|
||||
|
||||
Participants are entitled to one monthly 1:1 session with a mentor to discuss progress, set goals, and address any questions. Scheduling of these sessions is subject to mutual agreement and the mentor’s availability.
|
||||
Participants will have access to private Discord channels exclusively for Mentees. These channels get priority response times from the NHCarrigan team. All participants must adhere to our [Code of Conduct](/community/coc).
|
||||
|
||||
### 2.2 Private Discord Channel
|
||||
### 2.3 Flagship Project
|
||||
|
||||
Participants will have access to a private Discord channel exclusively for Mentees. This channel offers priority response times from the NHCarrigan team. All participants must adhere to the Discord Code of Conduct found [here](https://docs.nhcarrigan.com).
|
||||
Participants will gain maintainer-level access to a repository under our [Mentorship GitHub organisation](https://github.com/nhcarrigan-mentorship), which they will use to build their flagship project under the tutelage of our team.
|
||||
|
||||
### 2.3 Group Meetings
|
||||
|
||||
If the Programme enrols five (5) or more participants within a given month, all Mentees will be invited to a monthly group meeting. This meeting will provide opportunities for group discussions, shared experiences, and networking.
|
||||
|
||||
### 2.4 Maintainer-Level Access to Open Source Projects
|
||||
|
||||
Participants will gain maintainer-level access to NHCarrigan’s open-source projects for hands-on work experience. This access is a privilege and requires adherence to project guidelines, which can be reviewed [here](https://docs.nhcarrigan.com).
|
||||
|
||||
### 2.5 Internship and Resume Building
|
||||
### 2.4 Career Prep and Resume Building
|
||||
|
||||
Participants will have the opportunity to build their resumes through an internship with NHCarrigan. This includes eligibility for project contributions and collaboration with the NHCarrigan team.
|
||||
|
||||
### 2.6 Ongoing Support and Resources
|
||||
### 2.5 Ongoing Support and Resources
|
||||
|
||||
Mentees will receive continuous resume reviews, personalized learning roadmaps, and dedicated guidance for the duration of their membership. Additional resources and Programme updates will be provided as part of this lifetime membership support.
|
||||
|
||||
## 3. Payment Terms
|
||||
## 3. Code of Conduct
|
||||
|
||||
The Programme fee of $200 USD is due at the start of each month to retain membership. Failure to make payments may result in suspension or termination of services.
|
||||
Participants agree to uphold the Company's Code of Conduct and other policies, as outlined in the [NHCarrigan Documentation](https://docs.nhcarrigan.com/community/coc).
|
||||
|
||||
## 4. Code of Conduct
|
||||
|
||||
Participants agree to uphold the Company’s Code of Conduct and other policies, as outlined in the [NHCarrigan Documentation](https://docs.nhcarrigan.com/commnuity/coc.md).
|
||||
|
||||
## 5. Programme Modifications
|
||||
## 4 Programme Modifications
|
||||
|
||||
NHCarrigan reserves the right to modify Programme features, benefits, and terms at any time. Notification of such changes will be provided to participants with as much advance notice as possible.
|
||||
|
||||
## 6. Termination and Cancellation
|
||||
## 5. Termination and Cancellation
|
||||
|
||||
Participants may cancel their membership at any time, effective at the end of the current billing cycle. Refunds will not be issued for partial months. NHCarrigan reserves the right to terminate membership if a participant violates any of these Terms.
|
||||
Participants may cancel their membership at any time, by providing written notice to our team indicating their desire to drop-out and the reason for leaving.
|
||||
|
||||
## 7. Contact Information
|
||||
## 6. Contact Information
|
||||
|
||||
For questions or further information, please contact the NHCarrigan team through the official support channels listed in the [documentation](https://docs.nhcarrigan.com/about/contact).
|
||||
For questions or further information, please contact the NHCarrigan team through the official support channels listed in the [documentation](/about/contact).
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
title: Mission Statement
|
||||
---
|
||||
|
||||
This Mission Statement ("Statement") articulates the core values and guiding principles of [Company Name] in its efforts to build inclusive, ethical, and sustainable technology solutions.
|
||||
This Mission Statement ("Statement") articulates the core values and guiding principles of NHCarrigan ("The Company") in its efforts to build inclusive, ethical, and sustainable technology solutions and foster welcoming online communities. This Statement operates within our comprehensive legal and policy framework, incorporating our Terms of Service, Community Policies, and all applicable legal protections by reference.
|
||||
|
||||
## 1. Core Values
|
||||
|
||||
@@ -22,9 +22,9 @@ The Company adheres to a strict ethical code that guides our technological devel
|
||||
|
||||
We are dedicated to maintaining transparency with our stakeholders, whether clients, users, or community members. Clear communication and honesty are at the forefront of our interactions and decision-making.
|
||||
|
||||
### 1.5. Community-Driven Innovation
|
||||
### 1.5. Community-Driven Innovation and Democratic Governance
|
||||
|
||||
Our projects are community-centric, encouraging collaboration and input from diverse voices. We believe in technology as a tool to uplift, empower, and serve communities through innovative solutions that address real-world challenges.
|
||||
Our projects are community-centric, encouraging collaboration and input from diverse voices through democratic participation and transparent governance structures. We believe in technology as a tool to uplift, empower, and serve communities through innovative solutions that address real-world challenges, supported by comprehensive community leadership frameworks and participatory decision-making processes.
|
||||
|
||||
### 1.6. Breaking Down Barriers in Tech
|
||||
|
||||
@@ -34,9 +34,9 @@ The Company is committed to tearing down the systemic and social barriers that e
|
||||
|
||||
We recognize that toxic behaviors and exclusionary practices harm communities. The Company shall take a proactive stance in challenging these behaviors within our industry and within the tech communities we interact with, fostering spaces where collaboration, respect, and growth thrive.
|
||||
|
||||
### 1.8. Mentorship and Support for New Developers
|
||||
### 1.8. Comprehensive Community Support and Member Welfare
|
||||
|
||||
The Company is dedicated to providing mentorship and support to new developers, particularly those from underrepresented groups. Through guided mentorship, educational resources, and hands-on support, we help individuals break into the industry, equipping them with the skills and confidence to succeed.
|
||||
The Company is dedicated to providing comprehensive support systems for community members, including mentorship for new developers, recognition and appreciation programs, and robust member welfare frameworks. Through guided mentorship, educational resources, crisis response systems, and hands-on support, we help individuals thrive within our communities and succeed in the tech industry, particularly focusing on support for underrepresented groups.
|
||||
|
||||
## 2. Strategic Goals
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
title: Environmental Impact Commitment
|
||||
---
|
||||
|
||||
This Environmental Impact Commitment ("Commitment") outlines the principles and obligations that [Company Name] upholds to minimize its environmental impact and contribute to global sustainability efforts.
|
||||
This Environmental Impact Commitment ("Commitment") outlines the principles and obligations that NHCarrigan ("The Company") upholds to minimize its environmental impact and contribute to global sustainability efforts. This Commitment operates within our comprehensive legal and policy framework, incorporating our Terms of Service, Mission Statement, and all applicable legal protections by reference.
|
||||
|
||||
## 1. Definitions
|
||||
|
||||
@@ -74,12 +74,16 @@ The Company shall ensure that all its operations, projects, and partnerships com
|
||||
|
||||
Beyond legal compliance, the Company acknowledges its ethical responsibility to proactively mitigate environmental harm and contribute to a sustainable future.
|
||||
|
||||
## 6. Amendments and Updates
|
||||
## 6. Legal Framework Integration and Amendments
|
||||
|
||||
### 6.1. Right to Amend
|
||||
### 6.1. Policy Integration
|
||||
|
||||
The Company reserves the right to amend this Commitment as necessary to reflect evolving best practices and environmental standards.
|
||||
**IMPORTANT: This Environmental Impact Commitment is integrated with and subject to our comprehensive legal and policy framework, including warranty disclaimers and liability limitations set forth in our Limitation of Liability and Indemnification Policy, which is incorporated herein by reference.**
|
||||
|
||||
### 6.2. Notification of Changes
|
||||
### 6.2. Right to Amend
|
||||
|
||||
Significant amendments to this Commitment will be communicated through the Company’s official channels.
|
||||
The Company reserves the right to amend this Commitment as necessary to reflect evolving best practices, environmental standards, and legal requirements.
|
||||
|
||||
### 6.3. Notification of Changes
|
||||
|
||||
Significant amendments to this Commitment will be communicated through the Company's official channels in accordance with our standard policy update procedures.
|
||||
|
||||
@@ -1,38 +1,202 @@
|
||||
---
|
||||
title: Appealing a Sanction
|
||||
title: Community Disciplinary Appeals Policy
|
||||
---
|
||||
|
||||
Our moderators exercise careful discretion when implementing disciplinary measures (including but not limited to temporary suspensions, permanent bans, or other access restrictions). However, we acknowledge that misunderstandings or errors may occasionally occur.
|
||||
## 1. Preamble and Purpose
|
||||
|
||||
If you believe you have been unjustly restricted from participating in our community, you may initiate our formal appeal process as outlined below.
|
||||
### 1.1 Introduction
|
||||
|
||||
:::caution[Warning!]
|
||||
Submitting multiple appeals for the same sanction will result in our appeals team automatically denying your request.
|
||||
This Community Disciplinary Appeals Policy (hereinafter referred to as "the Policy") establishes the formal procedures and requirements for appealing disciplinary sanctions imposed by our moderation team. Whilst our Community Leaders exercise careful discretion and professional judgement when implementing disciplinary measures, we acknowledge that human error or misunderstandings may occasionally occur within any moderation system.
|
||||
|
||||
### 1.2 Purpose and Scope
|
||||
|
||||
This Policy serves to:
|
||||
- Provide a fair and transparent mechanism for reviewing disciplinary decisions
|
||||
- Ensure adherence to principles of natural justice and procedural fairness
|
||||
- Maintain the integrity of our community standards whilst protecting individual rights
|
||||
- Establish clear procedures for both appellants and review panels
|
||||
|
||||
### 1.3 Right of Appeal
|
||||
|
||||
Every community member who receives a disciplinary sanction has the fundamental right to appeal such decision through the procedures outlined herein, subject to the conditions and limitations specified in this Policy.
|
||||
|
||||
## 2. Definitions and Interpretation
|
||||
|
||||
### 2.1 Key Definitions
|
||||
|
||||
For the purposes of this Policy:
|
||||
- **"Appellant"** means any individual seeking to appeal a disciplinary sanction
|
||||
- **"Disciplinary Sanction"** means any punitive measure imposed, including but not limited to warnings, temporary suspensions, permanent bans, or access restrictions
|
||||
- **"Appeals Panel"** means the designated authority responsible for reviewing appeals
|
||||
- **"Original Decision"** means the initial disciplinary action being appealed
|
||||
- **"Community Leaders"** means moderators, administrators, and other authorised personnel
|
||||
|
||||
### 2.2 Interpretation
|
||||
|
||||
This Policy shall be interpreted in accordance with principles of fairness, natural justice, and the overarching objectives of maintaining community safety and standards.
|
||||
|
||||
## 3. Grounds for Appeal
|
||||
|
||||
### 3.1 Acceptable Grounds
|
||||
|
||||
Appeals may be submitted on the following grounds:
|
||||
1. **Procedural Irregularity**: The disciplinary process was not followed correctly
|
||||
2. **Disproportionate Sanction**: The penalty imposed was excessive relative to the violation
|
||||
3. **Factual Error**: Material facts were incorrectly assessed or considered
|
||||
4. **New Evidence**: Relevant evidence has become available that was not considered in the original decision
|
||||
5. **Misinterpretation of Policy**: The community guidelines or terms of service were incorrectly applied
|
||||
|
||||
### 3.2 Inadmissible Appeals
|
||||
|
||||
Appeals will not be considered on the following grounds:
|
||||
1. General disagreement with community policies or guidelines
|
||||
2. Claims that rules are unfair or unreasonable
|
||||
3. Arguments that other members engaged in similar conduct without sanction
|
||||
4. Emotional distress or inconvenience caused by the sanction
|
||||
|
||||
## 4. Pre-Appeal Requirements
|
||||
|
||||
### 4.1 Mandatory Preparation
|
||||
|
||||
Prior to submitting an appeal, appellants must complete the following preparatory steps:
|
||||
|
||||
1. **Policy Review**: Conduct a thorough review and demonstrate understanding of:
|
||||
- Community Guidelines and Code of Conduct
|
||||
- Terms of Service
|
||||
- This Appeals Policy
|
||||
|
||||
2. **Sanction Verification**: Access and review the specific details of the imposed sanction via our [sanctions database](https://hikari.nhcarrigan.com/sanctions)
|
||||
|
||||
3. **Self-Assessment**: Complete a comprehensive self-assessment of the circumstances leading to the sanction
|
||||
|
||||
### 4.2 Required Documentation
|
||||
|
||||
Appeals must include the following information:
|
||||
1. **Identity Verification**: Full account details and contact information
|
||||
2. **Sanction Details**: Complete description of the disciplinary action being appealed
|
||||
3. **Grounds Statement**: Clear identification of the specific grounds for appeal as outlined in Section 3.1
|
||||
4. **Evidence Portfolio**: All relevant documentation, screenshots, or other evidence supporting the appeal
|
||||
5. **Commitment Declaration**: Written commitment to adhere to all community standards and policies
|
||||
6. **Contribution Statement**: Detailed explanation of intended positive contributions to the community upon reinstatement
|
||||
|
||||
## 5. Appeal Submission Procedures
|
||||
|
||||
### 5.1 Formal Submission Process
|
||||
|
||||
Appeals must be submitted through our official appeals portal: [Community Appeals Form](https://forms.nhcarrigan.com/form/l3PC15yalSWjdZASTQvGo22q_uj_7OtXAhZdcW35ev8)
|
||||
|
||||
### 5.2 Submission Requirements
|
||||
|
||||
All appeals must:
|
||||
- Be submitted within thirty (30) days of the original sanction
|
||||
- Include all required documentation as specified in Section 4.2
|
||||
- Be written in clear, professional language
|
||||
- Demonstrate good faith engagement with the appeals process
|
||||
|
||||
### 5.3 Multiple Appeal Prohibition
|
||||
|
||||
:::caution[Critical Warning]
|
||||
Submitting multiple appeals for the same disciplinary sanction will result in automatic dismissal of all subsequent appeals and may constitute abuse of process, potentially leading to additional sanctions.
|
||||
:::
|
||||
|
||||
## 1. Preparing Your Appeal
|
||||
## 6. Review Process and Procedures
|
||||
|
||||
Prior to submitting an appeal, please ensure you have the following information ready:
|
||||
### 6.1 Initial Review
|
||||
|
||||
1. Confirmation that you have thoroughly reviewed and understood our Community Guidelines and Terms of Service.
|
||||
2. An explicit statement of your commitment to adhere to all applicable rules and policies.
|
||||
3. Your understanding of the specific sanction levied against you and the alleged violation(s) cited.
|
||||
4. A clear and concise explanation of why you believe the moderation decision was erroneous or disproportionate.
|
||||
5. A statement detailing your motivations for seeking reinstatement and the potential positive contributions you intend to make to our community.
|
||||
Upon receipt, all appeals undergo an initial administrative review to ensure:
|
||||
- Compliance with submission requirements
|
||||
- Timeliness of submission
|
||||
- Completeness of documentation
|
||||
- Identification of appropriate grounds for appeal
|
||||
|
||||
Please note that incomplete or inadequately prepared appeals may be summarily dismissed. You can [find your sanction in our logs](https://moderation.nhcarrigan.com) to review.
|
||||
### 6.2 Substantive Review
|
||||
|
||||
## 2. Appeal Submission Process
|
||||
Appeals meeting initial requirements proceed to substantive review, wherein the Appeals Panel shall:
|
||||
1. Examine all evidence and documentation
|
||||
2. Review the original decision and its rationale
|
||||
3. Consider the appellant's submissions and arguments
|
||||
4. Assess whether the appeal has merit under the established grounds
|
||||
|
||||
To submit your appeal, please complete the form available at the following link:
|
||||
### 6.3 Review Timeline
|
||||
|
||||
[Submit a Sanction Appeal](https://forms.nhcarrigan.com/appeal)
|
||||
The Appeals Panel endeavours to complete reviews within fourteen (14) business days of receipt, though complex cases may require additional time.
|
||||
|
||||
## 3. Important Disclaimers
|
||||
## 7. Possible Outcomes and Decisions
|
||||
|
||||
- Submission of an appeal does not guarantee its approval.
|
||||
- The decision of the appeals review panel is final and binding.
|
||||
- We reserve the right to deny or revoke access to our services at any time, for any reason, at our sole discretion.
|
||||
- Repeated violations or abuse of the appeals process may result in permanent ineligibility for reinstatement.
|
||||
### 7.1 Appeal Outcomes
|
||||
|
||||
By submitting an appeal, you acknowledge that you have read, understood, and agree to abide by the terms outlined in this document.
|
||||
Following review, the Appeals Panel may:
|
||||
1. **Uphold the Appeal**: Overturn the original sanction entirely
|
||||
2. **Partially Uphold the Appeal**: Reduce the severity of the original sanction
|
||||
3. **Dismiss the Appeal**: Confirm the original sanction remains in full effect
|
||||
4. **Remit for Reconsideration**: Return the matter for fresh consideration with specific directions
|
||||
|
||||
### 7.2 Decision Communication
|
||||
|
||||
All appeal decisions shall be communicated in writing to the appellant, including:
|
||||
- The outcome of the appeal
|
||||
- Detailed reasoning for the decision
|
||||
- Any conditions or requirements for reinstatement
|
||||
- Information regarding the finality of the decision
|
||||
|
||||
## 8. Finality and Limitations
|
||||
|
||||
### 8.1 Decision Finality
|
||||
|
||||
Decisions of the Appeals Panel are final and binding. No further appeals or reviews are available through our internal processes.
|
||||
|
||||
### 8.2 Discretionary Rights Reserved
|
||||
|
||||
Notwithstanding this appeals process, we reserve the absolute right to:
|
||||
- Deny or revoke access to our services at any time
|
||||
- Modify community standards and policies
|
||||
- Take additional action based on new information or circumstances
|
||||
- Refuse service to any individual at our sole discretion
|
||||
|
||||
### 8.3 Abuse of Process
|
||||
|
||||
Repeated abuse of the appeals process, including but not limited to:
|
||||
- Submitting frivolous or vexatious appeals
|
||||
- Providing false or misleading information
|
||||
- Harassment of Appeals Panel members
|
||||
- Multiple appeals for the same sanction
|
||||
|
||||
May result in permanent ineligibility for future appeals and additional disciplinary sanctions.
|
||||
|
||||
## 9. Compliance and Acknowledgement
|
||||
|
||||
### 9.1 Terms Acceptance
|
||||
|
||||
By submitting an appeal through this process, appellants explicitly acknowledge that they have:
|
||||
- Read and understood this Appeals Policy in its entirety
|
||||
- Reviewed and understand all applicable community standards and policies
|
||||
- Agreed to accept the decision of the Appeals Panel as final and binding
|
||||
- Committed to full compliance with all community standards upon any reinstatement
|
||||
|
||||
### 9.2 Legal Framework Integration
|
||||
|
||||
This appeals process operates within our comprehensive legal and policy framework, including:
|
||||
|
||||
**(a)** **Terms of Service**: Fundamental legal relationship and user obligations;
|
||||
|
||||
**(b)** **Limitation of Liability and Indemnification Policy**: Legal protections and risk allocation;
|
||||
|
||||
**(c)** **Content and Moderation Policy**: Enforcement procedures and standards;
|
||||
|
||||
**(d)** **All applicable policies**: Privacy, acceptable use, and specialized policies incorporated by reference.
|
||||
|
||||
**IMPORTANT**: This appeals process is provided as an internal community service and does not create any legal rights or obligations beyond those established in our comprehensive legal policies. The availability of this process does not limit our right to take any action deemed necessary for community safety and integrity.
|
||||
|
||||
## 10. Policy Updates and Amendments
|
||||
|
||||
### 10.1 Amendment Rights
|
||||
|
||||
This Policy may be updated, modified, or amended at any time without prior notice. Appellants are responsible for ensuring familiarity with the current version of this Policy.
|
||||
|
||||
### 10.2 Effective Date
|
||||
|
||||
This Policy is effective immediately upon publication and applies to all appeals submitted after its implementation.
|
||||
|
||||
---
|
||||
|
||||
*This Community Disciplinary Appeals Policy was last updated on 15 September 2025 and supersedes all previous versions.*
|
||||
|
||||
+602
-443
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,401 @@
|
||||
---
|
||||
title: Community Feedback and Participation Policy
|
||||
---
|
||||
|
||||
## 1. Foundation and Democratic Principles
|
||||
|
||||
### 1.1 Introduction and Purpose
|
||||
|
||||
This Community Feedback and Participation Policy (hereinafter referred to as "the Policy") establishes our comprehensive framework for meaningful community member engagement in governance, policy development, and community improvement processes. This Policy embodies our commitment to participatory governance, ensuring that community members have multiple accessible pathways to influence decisions that affect their community experience and contribute to the continuous improvement of our shared environment.
|
||||
|
||||
### 1.2 Core Democratic Principles
|
||||
|
||||
Our community feedback and participation approach is founded upon:
|
||||
|
||||
**(a)** **Participatory Governance**: Community members have meaningful opportunities to influence decisions affecting them;
|
||||
|
||||
**(b)** **Transparent Decision-Making**: Clear communication about how community input influences policy and governance decisions;
|
||||
|
||||
**(c)** **Inclusive Participation**: Multiple accessible pathways for engagement that accommodate diverse needs and preferences;
|
||||
|
||||
**(d)** **Responsive Leadership**: Leadership commitment to actively seeking, considering, and responding to community input;
|
||||
|
||||
**(e)** **Continuous Improvement**: Regular assessment and enhancement of community feedback systems and participation opportunities;
|
||||
|
||||
**(f)** **Democratic Accountability**: Mechanisms ensuring leadership remains accountable to the community they serve.
|
||||
|
||||
### 1.3 Participation Philosophy
|
||||
|
||||
We believe that community members are the ultimate experts on their own experience and needs, and our governance systems should reflect this expertise by:
|
||||
- Actively seeking diverse community perspectives on policies and decisions
|
||||
- Creating multiple pathways for participation that accommodate different preferences and circumstances
|
||||
- Ensuring that community input meaningfully influences policy development and implementation
|
||||
- Building community ownership and investment in shared governance and improvement processes
|
||||
- Fostering a culture of collaborative decision-making and mutual responsibility
|
||||
|
||||
### 1.4 Legal Framework Integration
|
||||
|
||||
This Policy operates within our comprehensive legal and policy framework, including our Terms of Service, Privacy Policy, Community Code of Conduct, and Community Leadership and Governance Policy, all of which are incorporated herein by reference.
|
||||
|
||||
## 2. Feedback Channels and Communication Systems
|
||||
|
||||
### 2.1 Regular Feedback Opportunities
|
||||
|
||||
#### 2.1.1 Daily and Ongoing Feedback Channels
|
||||
|
||||
**Open Communication Channels:**
|
||||
- Dedicated feedback channels accessible to all community members for ongoing input and suggestions
|
||||
- Community: `#community-suggestions-and-feedback` on Discord
|
||||
- Products: `#product-feedback-and-suggestions` on Discord
|
||||
- Direct feedback systems protecting member privacy whilst enabling honest communication
|
||||
- Community: https://forms.nhcarrigan.com/form/IDdo5e4OJS44QYFm9_aRJ36lY3Ox-BBTAM9zfnkhfoo
|
||||
- Products: https://forms.nhcarrigan.com/form/jkcGg0hMIa4U0hDL2OMip5pMX2UujN5W5n4Qn8HReJ8
|
||||
- Direct messaging opportunities with community leadership for individual concerns and suggestions
|
||||
- Public discussion forums for community-wide conversation about policies and improvements
|
||||
|
||||
**Structured Feedback Systems:**
|
||||
- Regular feedback forms targeting specific community areas and improvement opportunities
|
||||
- Suggestion box systems for ongoing community enhancement ideas and proposals
|
||||
- Incident reporting systems for policy effectiveness assessment and improvement identification
|
||||
- Accessibility feedback channels specifically designed to identify and address inclusion barriers
|
||||
- `#accessibility` on Discord.
|
||||
|
||||
#### 2.1.2 Scheduled Feedback Collection
|
||||
|
||||
**Monthly Community Input Sessions:**
|
||||
- Structured community meetings focused on specific policy areas or community improvements
|
||||
- Rotating focus areas ensuring comprehensive coverage of community operations and policies
|
||||
- Multiple participation formats (live discussion, written input, asynchronous participation) to accommodate diverse preferences
|
||||
- Clear agendas and preparation materials enabling meaningful community participation
|
||||
|
||||
**Quarterly Community Assessments:**
|
||||
- Comprehensive community satisfaction surveys covering all aspects of community experience
|
||||
- Policy effectiveness assessments gathering detailed feedback on existing policies and procedures
|
||||
- Community needs assessments identifying emerging priorities and improvement opportunities
|
||||
- Leadership performance evaluations providing community input on governance effectiveness
|
||||
|
||||
### 2.2 Accessible Participation Methods
|
||||
|
||||
#### 2.2.1 Universal Design in Feedback Systems
|
||||
|
||||
**Multiple Communication Formats:**
|
||||
- Written feedback forms available in multiple languages and accessible formats
|
||||
- Audio and video feedback submission options for members with different communication preferences
|
||||
- Visual feedback tools including graphics, diagrams, and interactive elements for diverse learning styles
|
||||
- Real-time and asynchronous participation options accommodating different time zones and availability patterns
|
||||
|
||||
**Accessibility Accommodations:**
|
||||
- Screen reader compatible feedback systems for members using assistive technology
|
||||
- Large print and high contrast options for members with visual accessibility needs
|
||||
- Simple language versions of feedback requests and policy summaries for improved comprehension
|
||||
- Alternative format materials and documentation available upon request
|
||||
|
||||
#### 2.2.2 Cultural and Linguistic Inclusion
|
||||
|
||||
**Culturally Responsive Feedback Collection:**
|
||||
- Feedback systems designed with cultural sensitivity and diverse communication style accommodation
|
||||
- Translation services available for feedback submission in languages other than English
|
||||
- Cultural liaison positions to facilitate feedback collection from diverse community groups
|
||||
- Recognition and accommodation of cultural differences in feedback expression and participation preferences
|
||||
|
||||
**Inclusive Participation Support:**
|
||||
- Mentorship and support systems helping new or less experienced community members engage in feedback processes
|
||||
- Education about feedback systems and participation opportunities for members unfamiliar with democratic participation
|
||||
- Peer support networks connecting members interested in collaborative participation and governance engagement
|
||||
- Special outreach to ensure participation from underrepresented community groups and perspectives
|
||||
|
||||
## 3. Policy Development and Change Processes
|
||||
|
||||
### 3.1 Community Consultation Requirements
|
||||
|
||||
#### 3.1.1 Mandatory Consultation Procedures
|
||||
|
||||
**Significant Policy Changes:**
|
||||
All significant policy changes must include:
|
||||
- **Minimum 30-day public comment period** with multiple opportunities for community input and feedback
|
||||
- **Community impact assessment** analysing how proposed changes will affect different community groups and members
|
||||
- **Alternative proposal consideration** including community-suggested modifications and improvements
|
||||
- **Transparent rationale communication** explaining the need for changes and how community input influenced final decisions
|
||||
|
||||
**New Policy Development:**
|
||||
- **Community needs assessment** identifying the necessity and community support for new policies
|
||||
- **Draft policy review period** allowing community input on proposed policy language and implementation plans
|
||||
- **Stakeholder consultation** ensuring input from community members who would be most affected by new policies
|
||||
- **Implementation planning** involving community input on effective policy rollout and communication strategies
|
||||
|
||||
#### 3.1.2 Community Input Integration Process
|
||||
|
||||
**Systematic Input Analysis:**
|
||||
- **Comprehensive review** of all community feedback and input received during consultation periods
|
||||
- **Thematic analysis** identifying common concerns, suggestions, and priorities expressed by community members
|
||||
- **Response development** addressing each significant concern or suggestion raised during consultation processes
|
||||
- **Policy modification** incorporating feasible community suggestions and addressing identified concerns
|
||||
|
||||
**Transparent Decision Communication:**
|
||||
- **Detailed summaries** of community input received and how it influenced policy decisions
|
||||
- **Clear explanations** of why certain community suggestions were or were not incorporated into final policies
|
||||
- **Implementation timelines** and community preparation information for policy changes
|
||||
- **Ongoing evaluation commitments** outlining how policy effectiveness will be assessed with community input
|
||||
|
||||
### 3.2 Emergency and Urgent Change Procedures
|
||||
|
||||
#### 3.2.1 Emergency Policy Modifications
|
||||
|
||||
**Crisis Response Policy Changes:**
|
||||
When immediate policy changes are necessary for community safety:
|
||||
- **Immediate implementation** with clear communication about emergency nature of changes
|
||||
- **Retroactive community consultation** conducted as soon as practically possible after emergency implementation
|
||||
- **Community input integration** for permanent policy changes following emergency measures
|
||||
- **Transparent review process** evaluating emergency decisions and incorporating community feedback for future improvements
|
||||
|
||||
#### 3.2.2 Urgent Community Need Response
|
||||
|
||||
**Expedited Change Procedures:**
|
||||
- **Accelerated consultation timelines** with intensive community outreach and input collection
|
||||
- **Community priority assessment** ensuring urgent changes address genuine community needs and priorities
|
||||
- **Rapid response implementation** with continuous community feedback collection and policy adjustment
|
||||
- **Follow-up evaluation** assessing urgent change effectiveness and incorporating lessons learned
|
||||
|
||||
## 4. Transparency and Decision-Making Communication
|
||||
|
||||
### 4.1 Open Governance Practices
|
||||
|
||||
#### 4.1.1 Decision-Making Transparency
|
||||
|
||||
**Public Decision Records:**
|
||||
- **Meeting minutes and records** available to all community members for transparency and accountability
|
||||
- **Decision rationales** clearly documented and communicated to explain leadership reasoning and community input consideration
|
||||
- **Policy change logs** tracking all modifications and their justifications for comprehensive transparency
|
||||
- **Community impact tracking** documenting how decisions affect different community groups and members
|
||||
|
||||
**Leadership Accessibility:**
|
||||
- **Regular office hours** where community members can directly engage with leadership about governance and policy matters
|
||||
- **Public Q&A sessions** addressing community concerns and providing transparent answers about decision-making processes
|
||||
- **Leadership communication channels** accessible to all community members for ongoing dialogue and feedback
|
||||
- **Community liaison programs** facilitating communication between leadership and diverse community groups
|
||||
|
||||
#### 4.1.2 Information Accessibility and Sharing
|
||||
|
||||
**Comprehensive Information Access:**
|
||||
- **Policy documentation** available in multiple formats and accessible language for broad community understanding
|
||||
- **Decision-making process guides** helping community members understand how to participate effectively in governance
|
||||
- **Historical records** of community decisions and their outcomes available for transparency and learning
|
||||
- **Resource libraries** providing educational materials about community governance and participation opportunities
|
||||
|
||||
**Proactive Communication:**
|
||||
- **Regular community updates** about governance activities, policy development, and decision-making processes
|
||||
- **Advance notice** of upcoming decisions, consultation opportunities, and participation deadlines
|
||||
- **Multiple communication channels** ensuring information reaches community members through their preferred methods
|
||||
- **Follow-up communication** about decision outcomes and implementation progress
|
||||
|
||||
### 4.2 Community Accountability Mechanisms
|
||||
|
||||
#### 4.2.1 Leadership Accountability Systems
|
||||
|
||||
**Performance Monitoring and Evaluation:**
|
||||
- **Regular community confidence surveys** assessing leadership effectiveness and community satisfaction
|
||||
- **360-degree feedback systems** incorporating input from community members, peers, and external partners
|
||||
- **Public performance reporting** sharing leadership evaluation outcomes and improvement commitments with the community
|
||||
- **Community review processes** enabling community members to formally evaluate leadership performance and effectiveness
|
||||
|
||||
**Response and Improvement Commitments:**
|
||||
- **Public commitments** to address community concerns and feedback identified through accountability processes
|
||||
- **Improvement timelines** with specific milestones and progress reporting to demonstrate leadership responsiveness
|
||||
- **Community follow-up** ensuring leadership commitments are fulfilled and community concerns are adequately addressed
|
||||
- **Continuous improvement integration** incorporating accountability feedback into leadership development and governance enhancement
|
||||
|
||||
#### 4.2.2 Policy Effectiveness Assessment
|
||||
|
||||
**Community-Centred Evaluation:**
|
||||
- **Regular policy effectiveness surveys** gathering community input on how well policies are meeting their intended objectives
|
||||
- **Community impact assessment** evaluating policy effects on different community groups and addressing unintended consequences
|
||||
- **Policy modification processes** incorporating community feedback and assessment results into ongoing policy improvement
|
||||
- **Community success metrics** developed collaboratively to measure progress toward shared community goals and values
|
||||
|
||||
## 5. Special Consultation and Participation Programs
|
||||
|
||||
### 5.1 Demographic and Identity-Based Consultation
|
||||
|
||||
#### 5.1.1 Targeted Community Outreach
|
||||
|
||||
**Underrepresented Group Engagement:**
|
||||
- **Specific consultation programs** ensuring input from community members who may not participate in general feedback processes
|
||||
- **Identity-affirming participation opportunities** creating safe spaces for marginalized community members to provide honest feedback
|
||||
- **Cultural competency** in consultation design and facilitation to encourage authentic participation from diverse community members
|
||||
- **Language and accessibility support** removing barriers to participation for community members with diverse needs
|
||||
|
||||
**Specialized Advisory Groups:**
|
||||
- **Rotating advisory panels** including community members from diverse backgrounds and experience levels
|
||||
- **Issue-specific consultation groups** bringing together community members with relevant expertise or lived experience
|
||||
- **Accessibility advisory groups** providing ongoing input on inclusion and accommodation needs and improvements
|
||||
- **Community youth and senior advisory panels** ensuring intergenerational perspectives in community governance
|
||||
|
||||
#### 5.1.2 Community-Driven Initiative Support
|
||||
|
||||
**Grassroots Proposal Development:**
|
||||
- **Community member proposal processes** enabling members to suggest and develop new community initiatives and improvements
|
||||
- **Collaborative development support** providing resources and assistance for community members developing improvement proposals
|
||||
- **Peer review and community refinement** processes helping improve community-driven proposals through collaborative development
|
||||
- **Implementation support** for community-approved initiatives including resource allocation and ongoing assistance
|
||||
|
||||
**Community Organizing and Advocacy:**
|
||||
- **Community organizing support** for members who want to advocate for specific changes or improvements
|
||||
- **Coalition building assistance** helping community members with shared interests collaborate effectively on improvement initiatives
|
||||
- **Advocacy training and resources** empowering community members to effectively participate in governance and change processes
|
||||
- **Community campaign support** for democratic initiatives that build broad community support for positive changes
|
||||
|
||||
### 5.2 Crisis and Emergency Community Consultation
|
||||
|
||||
#### 5.2.1 Emergency Response Input
|
||||
|
||||
**Crisis Communication and Consultation:**
|
||||
- **Emergency communication protocols** ensuring community members receive timely information about crisis decisions affecting them
|
||||
- **Rapid consultation processes** gathering essential community input even during emergency situations
|
||||
- **Community safety prioritization** balancing community input with immediate safety and security requirements
|
||||
- **Post-crisis evaluation** involving comprehensive community consultation on emergency response effectiveness and improvements
|
||||
|
||||
#### 5.2.2 Community Healing and Recovery Participation
|
||||
|
||||
**Collective Recovery Planning:**
|
||||
- **Community-wide healing initiatives** developed with broad community input and participation
|
||||
- **Recovery goal setting** involving community members in establishing priorities and metrics for post-crisis improvement
|
||||
- **Community resilience building** through collaborative planning and resource development
|
||||
- **Trauma-informed consultation** ensuring crisis consultation processes are sensitive to community member well-being and recovery needs
|
||||
|
||||
## 6. Feedback Response and Follow-Up Systems
|
||||
|
||||
### 6.1 Comprehensive Response Protocols
|
||||
|
||||
#### 6.1.1 Individual Feedback Acknowledgment
|
||||
|
||||
**Personal Response Commitments:**
|
||||
- **Acknowledgment within 48 hours** for all individual feedback submissions and policy input
|
||||
- **Detailed responses within 14 days** addressing specific concerns, suggestions, and questions raised by community members
|
||||
- **Follow-up communication** ensuring community members feel heard and providing updates on how their input is being considered
|
||||
- **Personal consultation opportunities** for community members who need additional discussion or clarification about their feedback
|
||||
|
||||
**Resolution and Implementation Tracking:**
|
||||
- **Issue tracking systems** following feedback items from submission through resolution and implementation
|
||||
- **Progress updates** provided to feedback submitters about how their input is being addressed and implemented
|
||||
- **Outcome communication** sharing results and impacts of changes made in response to community feedback
|
||||
- **Satisfaction follow-up** ensuring community members are satisfied with how their feedback was handled and addressed
|
||||
|
||||
#### 6.1.2 Community-Wide Response Communication
|
||||
|
||||
**Public Feedback Summaries:**
|
||||
- **Monthly summary reports** highlighting community feedback themes, concerns, and suggestions received
|
||||
- **Response action reports** detailing how community feedback has influenced policies, decisions, and community improvements
|
||||
- **Implementation progress updates** showing community members how their collective input is creating positive changes
|
||||
- **Appreciation and recognition** of community members who provide valuable feedback and participate in governance processes
|
||||
|
||||
**Community Learning and Improvement:**
|
||||
- **Best practice sharing** about effective feedback integration and community input utilization
|
||||
- **Process improvement updates** showing how community feedback systems themselves are being enhanced based on member input
|
||||
- **Success story communication** celebrating positive changes that resulted from community feedback and participation
|
||||
- **Challenge identification** and collaborative problem-solving when feedback systems need improvement or enhancement
|
||||
|
||||
### 6.2 Continuous Feedback System Enhancement
|
||||
|
||||
#### 6.2.1 Meta-Feedback and System Improvement
|
||||
|
||||
**Feedback System Effectiveness Assessment:**
|
||||
- **Annual evaluation** of community feedback systems and their effectiveness in enabling meaningful participation
|
||||
- **Community satisfaction surveys** specifically assessing feedback and participation system accessibility and responsiveness
|
||||
- **Process improvement recommendations** developed collaboratively with community members who use feedback systems regularly
|
||||
- **Innovation and enhancement implementation** continuously improving feedback systems based on community needs and technological advances
|
||||
|
||||
**Community Participation Analytics:**
|
||||
- **Participation pattern analysis** identifying barriers to engagement and opportunities for increased community involvement
|
||||
- **Demographic participation assessment** ensuring feedback systems are effectively reaching and engaging diverse community members
|
||||
- **Response quality evaluation** assessing whether community input is receiving appropriate attention and consideration
|
||||
- **Impact measurement** documenting how community feedback creates positive changes in community policies and experience
|
||||
|
||||
## 7. Training and Support for Community Participation
|
||||
|
||||
### 7.1 Civic Engagement Education
|
||||
|
||||
#### 7.1.1 Participation Skills Development
|
||||
|
||||
**Democratic Participation Training:**
|
||||
- **Civic engagement workshops** teaching community members effective advocacy, communication, and participation skills
|
||||
- **Policy analysis training** helping community members understand policy implications and provide more informed feedback
|
||||
- **Meeting facilitation and participation skills** empowering community members to lead and contribute effectively to governance processes
|
||||
- **Conflict resolution and collaborative decision-making** training supporting constructive participation in community debates and discussions
|
||||
|
||||
**Communication and Advocacy Skills:**
|
||||
- **Public speaking and presentation training** for community members interested in more active governance participation
|
||||
- **Written communication skills** development for effective policy feedback and proposal development
|
||||
- **Research and analysis training** helping community members gather information and develop evidence-based suggestions
|
||||
- **Coalition building and organizing skills** for community members interested in leading community improvement initiatives
|
||||
|
||||
#### 7.1.2 Community Governance Education
|
||||
|
||||
**Governance Literacy Programs:**
|
||||
- **Community governance orientation** for new members explaining how community decision-making works and how to participate
|
||||
- **Policy development process education** teaching community members how policies are created, modified, and implemented
|
||||
- **Leadership and governance roles education** explaining different governance positions and how community members can become involved
|
||||
- **Community history and values education** helping members understand the context and principles guiding community governance
|
||||
|
||||
### 7.2 Participation Support and Mentorship
|
||||
|
||||
#### 7.2.1 New Member Integration
|
||||
|
||||
**Participation Mentorship Programs:**
|
||||
- **Governance mentorship** pairing experienced community members with newcomers interested in participation and feedback
|
||||
- **Peer support networks** connecting community members with similar interests in governance and community improvement
|
||||
- **Guided participation experiences** providing supported opportunities for new members to engage in feedback and governance processes
|
||||
- **Community leadership pipeline development** identifying and supporting community members interested in greater governance involvement
|
||||
|
||||
#### 7.2.2 Ongoing Participation Support
|
||||
|
||||
**Sustained Engagement Assistance:**
|
||||
- **Resource libraries** providing ongoing access to materials, tools, and information supporting effective community participation
|
||||
- **Consultation and guidance services** offering individualized support for community members developing proposals or providing complex feedback
|
||||
- **Peer collaboration platforms** facilitating community member connections and collaborative work on governance and improvement initiatives
|
||||
- **Recognition and appreciation systems** acknowledging and celebrating community members who contribute consistently to governance and feedback processes
|
||||
|
||||
## 8. Policy Implementation and Continuous Improvement
|
||||
|
||||
### 8.1 Policy Effectiveness Evaluation
|
||||
|
||||
#### 8.1.1 Regular Assessment and Enhancement
|
||||
|
||||
**Quarterly System Review:**
|
||||
- **Participation metrics assessment** analysing community engagement levels and identifying areas for improvement
|
||||
- **Feedback quality evaluation** ensuring community input is meaningful, comprehensive, and effectively integrated into decision-making
|
||||
- **Response effectiveness assessment** measuring how well feedback systems serve community needs and promote positive change
|
||||
- **Accessibility and inclusion evaluation** ensuring feedback systems effectively reach and engage all community members
|
||||
|
||||
**Annual Comprehensive Evaluation:**
|
||||
- **Community satisfaction with governance** assessment including feedback system effectiveness and responsiveness
|
||||
- **Democratic participation impact** measuring how community feedback creates positive changes in policies and community experience
|
||||
- **Community capacity building** evaluation assessing how participation systems support community member skill development and engagement
|
||||
- **System innovation and improvement** planning for enhanced feedback systems and participation opportunities
|
||||
|
||||
### 8.2 Community-Driven Policy Evolution
|
||||
|
||||
#### 8.2.1 Responsive Policy Development
|
||||
|
||||
**Community-Initiated Policy Changes:**
|
||||
- **Community proposal processes** enabling members to suggest policy modifications and improvements through structured democratic processes
|
||||
- **Community prioritization systems** allowing members to identify which policy areas most need attention and improvement
|
||||
- **Collaborative policy development** involving community members in drafting, reviewing, and refining policy changes
|
||||
- **Democratic approval processes** ensuring community input and consent for significant policy modifications and new policy development
|
||||
|
||||
**Continuous Improvement Integration:**
|
||||
- **Policy effectiveness monitoring** with regular community feedback integration and responsive improvement implementation
|
||||
- **Best practice adoption** incorporating lessons learned from community governance experience and external research
|
||||
- **Innovation in participation** continuously developing new and improved methods for community engagement and democratic participation
|
||||
- **Community ownership development** building community members' sense of agency and investment in shared governance and community improvement
|
||||
|
||||
---
|
||||
|
||||
## Democratic Commitment to Community Voice
|
||||
|
||||
This Community Feedback and Participation Policy represents our fundamental commitment to democratic governance and community self-determination. We believe that community members are the ultimate authorities on their own needs and experiences, and our governance systems must reflect this reality through meaningful participation opportunities and responsive leadership.
|
||||
|
||||
Through this Policy, we pledge to maintain transparent, accessible, and effective systems for community input, ensure that community feedback meaningfully influences decision-making, and continuously improve our democratic processes to better serve our community's evolving needs and priorities.
|
||||
|
||||
---
|
||||
|
||||
*This Community Feedback and Participation Policy was created on 15 September 2025. For questions about community participation opportunities or to provide feedback on this Policy, please contact our Community Leaders through the designated channels outlined in our Community Code of Conduct.*
|
||||
+1068
-454
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,727 @@
|
||||
---
|
||||
title: Community Leadership and Governance Policy
|
||||
---
|
||||
|
||||
## 1. Foundation and Purpose
|
||||
|
||||
### 1.1 Introduction
|
||||
|
||||
This Community Leadership and Governance Policy (hereinafter referred to as "the Policy") establishes the framework for transparent, accountable, and effective leadership within our community ecosystem. This Policy ensures that community leadership operates with integrity, serves the best interests of all community members, and maintains the highest standards of conduct whilst fostering a safe, welcoming, and inclusive environment.
|
||||
|
||||
### 1.2 Core Principles
|
||||
|
||||
Our community leadership operates on the following foundational principles:
|
||||
|
||||
**(a)** **Servant Leadership**: Leaders serve the community rather than wielding authority for personal benefit;
|
||||
|
||||
**(b)** **Transparency**: Decision-making processes and rationales are clearly communicated to the community;
|
||||
|
||||
**(c)** **Accountability**: Leaders are answerable for their actions and decisions to the community they serve;
|
||||
|
||||
**(d)** **Inclusivity**: Leadership reflects and promotes the diversity of our community;
|
||||
|
||||
**(e)** **Collaborative Governance**: Community input is actively sought and valued in decision-making processes.
|
||||
|
||||
### 1.3 Legal Framework Integration
|
||||
|
||||
This Policy operates within our comprehensive legal and policy framework, including our Terms of Service, Community Code of Conduct, Content and Moderation Policy, and Limitation of Liability and Indemnification Policy, all of which are incorporated herein by reference.
|
||||
|
||||
## 2. Leadership Structure and Roles
|
||||
|
||||
### 2.1 Leadership Hierarchy
|
||||
|
||||
Our community leadership operates through a structured hierarchy designed to ensure effective governance whilst maintaining accessibility and accountability:
|
||||
|
||||
#### 2.1.1 Executive Leadership
|
||||
|
||||
- **Community Director**: Overall strategic direction and final decision-making authority
|
||||
- **Deputy Director**: Support for Community Director and succession planning
|
||||
- **Legal and Policy Advisor**: Oversight of legal compliance and policy development
|
||||
|
||||
#### 2.1.2 Operational Leadership
|
||||
|
||||
- **Head Moderator**: Oversight of moderation team and enforcement consistency
|
||||
- **Community Managers**: Day-to-day community operations and member engagement
|
||||
- **Technical Manager**: Day-to-day technical operations, code reviews, and technical contributor coordination
|
||||
- **Technical Administrators**: Platform infrastructure management and strategic technical planning
|
||||
|
||||
#### 2.1.3 Specialist Leadership
|
||||
|
||||
- **Accessibility Coordinator**: Ensuring inclusive design and accommodation
|
||||
- **Crisis Response Coordinator**: Mental health and emergency situation management
|
||||
- **Events Coordinator**: Community activities and engagement programmes
|
||||
- **Communications and Outreach Coordinator**: External communications and community messaging
|
||||
- **Training and Development Coordinator**: Leadership development and educational programming
|
||||
- **Partnership and Collaboration Coordinator**: External relationships and collaborative initiatives
|
||||
- **Support Team Leader**: Oversight and coordination of community support operations
|
||||
- **Community Growth Specialist**: Member recruitment, retention, and community expansion initiatives
|
||||
|
||||
#### 2.1.4 Volunteer Leadership
|
||||
|
||||
- **Moderators**: Front-line community moderation and member support
|
||||
- **Mentors**: New member guidance and peer support programmes
|
||||
- **Subject Matter Experts**: Specialized knowledge and educational support
|
||||
- **Technical Contributors**: Development support and technical expertise for community platforms and tools
|
||||
- **Guild Wars 2 Leader**: Strategic leadership and management of Guild Wars 2 community activities
|
||||
- **Guild Wars 2 Officer**: Support for Guild Wars 2 operations and member coordination
|
||||
- **Quality Assurance Coordinator**: Testing and quality control for community platforms and resources
|
||||
- **Data and Analytics Coordinator**: Community metrics analysis and reporting
|
||||
|
||||
#### 2.1.5 Support Team
|
||||
|
||||
- **Community Support Specialists**: General member assistance and issue resolution
|
||||
- **Technical Support Representatives**: Platform and technical assistance for community members
|
||||
- **Content Support Coordinators**: Content creation assistance and resource management
|
||||
- **Member Relations Specialists**: Member onboarding and relationship management
|
||||
- **Documentation Support Technicians**: Maintenance and improvement of community documentation
|
||||
|
||||
### 2.2 Role Responsibilities
|
||||
|
||||
#### 2.2.1 Executive Leadership Responsibilities
|
||||
|
||||
**Community Director:**
|
||||
|
||||
- Establish overall community vision and strategic objectives
|
||||
- Make final decisions on significant policy changes and disciplinary matters
|
||||
- Represent the community in external relationships and partnerships
|
||||
- Ensure leadership team accountability and performance
|
||||
- Oversee crisis management and emergency response coordination
|
||||
|
||||
**Deputy Director:**
|
||||
|
||||
- Support Community Director in strategic planning and implementation
|
||||
- Lead specific initiatives and projects as assigned
|
||||
- Serve as primary succession candidate for Community Director role
|
||||
- Coordinate cross-functional leadership team activities
|
||||
|
||||
**Legal and Policy Advisor:**
|
||||
|
||||
- Oversee legal compliance across all community operations and policies
|
||||
- Review and approve policy changes for legal and regulatory compliance
|
||||
- Provide legal guidance to leadership team on governance matters
|
||||
- Coordinate with external legal counsel when necessary
|
||||
- Maintain awareness of relevant laws and regulations affecting community operations
|
||||
|
||||
#### 2.2.2 Operational Leadership Responsibilities
|
||||
|
||||
**Head Moderator:**
|
||||
|
||||
- Ensure consistent application of community standards across all platforms
|
||||
- Train, support, and evaluate moderation team performance
|
||||
- Develop and refine moderation procedures and best practices
|
||||
- Handle escalated disciplinary matters and appeals coordination
|
||||
- Maintain moderation transparency and accountability systems
|
||||
|
||||
**Community Managers:**
|
||||
|
||||
- Foster positive community culture and engagement
|
||||
- Coordinate community activities, discussions, and initiatives
|
||||
- Serve as primary liaison between community members and leadership
|
||||
- Monitor community health and member satisfaction
|
||||
- Implement community feedback and suggestion programmes
|
||||
|
||||
**Technical Manager:**
|
||||
|
||||
- Oversee daily technical operations including code reviews and issue triage
|
||||
- Coordinate Technical Contributor team activities and project management
|
||||
- Provide technical guidance and mentorship to Technical Contributors
|
||||
- Serve as liaison between Technical Administrators and Technical Contributors
|
||||
- Monitor technical project progress and ensure timely task completion
|
||||
- Facilitate technical discussions and decision-making for community projects
|
||||
|
||||
**Technical Administrators:**
|
||||
|
||||
- Manage platform infrastructure, servers, and technical systems
|
||||
- Implement security protocols and system monitoring
|
||||
- Coordinate strategic technical planning and architecture decisions
|
||||
- Oversee system upgrades, maintenance, and disaster recovery procedures
|
||||
- Collaborate with Technical Manager on technical project prioritization
|
||||
- Ensure platform scalability and performance optimization
|
||||
|
||||
#### 2.2.3 Specialist Leadership Responsibilities
|
||||
|
||||
**Accessibility Coordinator:**
|
||||
|
||||
- Develop and maintain accessibility standards and guidelines
|
||||
- Provide consultation on inclusive design and accommodation needs
|
||||
- Coordinate assistive technology support and resources
|
||||
- Evaluate platform accessibility and recommend improvements
|
||||
- Serve as primary contact for accessibility-related concerns and requests
|
||||
|
||||
**Crisis Response Coordinator:**
|
||||
|
||||
- Develop and maintain crisis response protocols and emergency procedures
|
||||
- Coordinate mental health support and intervention services
|
||||
- Lead crisis management teams during emergency situations
|
||||
- Provide training on crisis recognition and de-escalation techniques
|
||||
- Maintain relationships with external mental health and emergency services
|
||||
- Oversee post-crisis community healing and support processes
|
||||
|
||||
**Events Coordinator:**
|
||||
|
||||
- Plan and organize community activities, events, and engagement programmes
|
||||
- Coordinate with other leadership roles to ensure event alignment with community goals
|
||||
- Manage event logistics, scheduling, and resource allocation
|
||||
- Develop community engagement strategies to increase participation
|
||||
- Evaluate event success and gather feedback for continuous improvement
|
||||
- Maintain calendar of community activities and special initiatives
|
||||
|
||||
**Communications and Outreach Coordinator:**
|
||||
|
||||
- Manage external communications and public relations for the community
|
||||
- Coordinate community newsletters, updates, and public announcements
|
||||
- Oversee social media presence and community messaging consistency
|
||||
- Facilitate communication between different community platforms and channels
|
||||
- Manage partnerships and external relationship communications
|
||||
- Develop and maintain community brand voice and messaging guidelines
|
||||
- Coordinate crisis communications and public response strategies
|
||||
|
||||
**Training and Development Coordinator:**
|
||||
|
||||
- Develop and maintain comprehensive training curricula for all leadership roles
|
||||
- Coordinate onboarding programs for new leaders and community members
|
||||
- Manage mentorship program structure, matching, and effectiveness monitoring
|
||||
- Oversee professional development opportunities and educational resources
|
||||
- Ensure consistent training standards and quality across all programs
|
||||
- Coordinate with external training providers and professional development opportunities
|
||||
- Evaluate training effectiveness and implement continuous improvements
|
||||
|
||||
**Partnership and Collaboration Coordinator:**
|
||||
|
||||
- Manage relationships with other communities, organizations, and external partners
|
||||
- Coordinate collaborative projects and cross-community initiatives
|
||||
- Oversee guest speaker programs and external educational opportunities
|
||||
- Manage sponsorship agreements and partnership development
|
||||
- Facilitate inter-community events and collaborative activities
|
||||
- Develop and maintain partnership agreements and memoranda of understanding
|
||||
- Represent the community in external collaborative forums and networks
|
||||
|
||||
**Support Team Leader:**
|
||||
|
||||
- Oversee and coordinate all community support operations and team activities
|
||||
- Train, support, and evaluate support team member performance and development
|
||||
- Develop and maintain support procedures, standards, and best practices
|
||||
- Monitor support quality metrics and member satisfaction with support services
|
||||
- Handle escalated support issues and complex member concerns requiring leadership intervention
|
||||
- Coordinate support team scheduling and coverage to ensure consistent availability
|
||||
- Collaborate with other leadership roles to identify support needs and resource requirements
|
||||
- Implement support team improvements and process optimizations based on feedback and analytics
|
||||
- Serve as primary liaison between support team and executive/operational leadership
|
||||
- Manage support team knowledge base and ensure consistent information sharing
|
||||
|
||||
**Community Growth Specialist:**
|
||||
|
||||
- Develop and implement comprehensive community growth strategies and member recruitment initiatives
|
||||
- Analyse community growth metrics, member acquisition trends, and retention patterns
|
||||
- Design and execute outreach campaigns to attract new members from target demographics
|
||||
- Coordinate with Communications and Outreach Coordinator on growth-focused messaging and content
|
||||
- Implement member retention programs and initiatives to reduce community churn
|
||||
- Identify and develop community growth opportunities through partnerships and collaborations
|
||||
- Monitor and optimize member onboarding processes to improve new member experience and retention
|
||||
- Conduct market research and competitive analysis to identify growth opportunities
|
||||
- Create and manage referral programs and member advocacy initiatives
|
||||
- Track and report on key growth metrics including member acquisition, retention, and lifetime value
|
||||
- Collaborate with Events Coordinator to design growth-focused community activities and engagement programs
|
||||
|
||||
#### 2.2.4 Volunteer Leadership Responsibilities
|
||||
|
||||
**Moderators:**
|
||||
|
||||
- Enforce community standards and guidelines consistently across platforms
|
||||
- Respond to reports and complaints from community members
|
||||
- Document moderation actions and maintain accurate records
|
||||
- Escalate complex issues to Head Moderator or appropriate leadership
|
||||
- Provide initial support and guidance to community members
|
||||
- Participate in ongoing moderation training and development programmes
|
||||
|
||||
**Mentors:**
|
||||
|
||||
- Provide guidance and support to new community members
|
||||
- Facilitate peer support programmes and buddy systems
|
||||
- Offer one-on-one mentorship relationships as needed
|
||||
- Coordinate new member orientation and onboarding processes
|
||||
- Share expertise and knowledge to support member growth and development
|
||||
- Collaborate with Community Managers to identify members needing additional support
|
||||
|
||||
**Subject Matter Experts:**
|
||||
|
||||
- Provide specialized knowledge and expertise in designated areas
|
||||
- Create educational content and resources for community members
|
||||
- Offer technical support and guidance within their areas of expertise
|
||||
- Lead workshops, discussions, and educational initiatives
|
||||
- Serve as consultants to leadership team on specialized topics
|
||||
- Mentor other community members in developing specialized skills
|
||||
|
||||
**Technical Contributors:**
|
||||
|
||||
- Contribute to development and maintenance of community platforms and tools
|
||||
- Participate in code reviews and collaborative development processes
|
||||
- Implement features and fixes under Technical Manager guidance
|
||||
- Document technical work and maintain code quality standards
|
||||
- Support technical troubleshooting and issue resolution
|
||||
- Collaborate with Technical Administrators and Technical Manager on project priorities
|
||||
|
||||
**Guild Wars 2 Leader:**
|
||||
|
||||
- Provide strategic leadership and direction for Guild Wars 2 community activities
|
||||
- Coordinate guild operations, events, and member engagement within the game
|
||||
- Oversee Guild Wars 2 Officer team and delegate responsibilities effectively
|
||||
- Represent the community in inter-guild relationships and alliances
|
||||
- Develop and implement Guild Wars 2-specific community policies and guidelines
|
||||
- Plan and execute large-scale guild events, missions, and competitive activities
|
||||
- Monitor guild health, member satisfaction, and retention within the game environment
|
||||
|
||||
**Guild Wars 2 Officer:**
|
||||
|
||||
- Support Guild Wars 2 Leader in daily guild operations and member coordination
|
||||
- Assist new Guild Wars 2 members with game mechanics, guild procedures, and integration
|
||||
- Organize and lead smaller-scale guild activities, missions, and training sessions
|
||||
- Moderate Guild Wars 2-specific communication channels and resolve member conflicts
|
||||
- Recruit new members and conduct guild recruitment activities
|
||||
- Maintain guild resources, including banks, halls, and shared assets
|
||||
- Coordinate with other officers to ensure consistent coverage and support for guild members
|
||||
|
||||
**Quality Assurance Coordinator:**
|
||||
|
||||
- Test community platforms and tools for bugs, usability issues, and performance problems
|
||||
- Coordinate documentation reviews and updates to ensure accuracy and completeness
|
||||
- Manage feedback collection and analysis processes for continuous improvement
|
||||
- Oversee accessibility testing and compliance verification across all platforms
|
||||
- Ensure consistency and quality across community resources and materials
|
||||
- Develop and maintain quality assurance standards and testing procedures
|
||||
- Collaborate with Technical Contributors and Technical Administrators on issue resolution
|
||||
|
||||
**Data and Analytics Coordinator:**
|
||||
|
||||
- Collect and analyze community engagement metrics and participation data
|
||||
- Prepare regular reports on community health, growth trends, and member satisfaction
|
||||
- Manage community surveys and feedback analysis for leadership decision-making
|
||||
- Support leadership team with data insights and trend identification
|
||||
- Maintain privacy-compliant data collection and analysis practices
|
||||
- Develop dashboards and visualization tools for community metrics monitoring
|
||||
- Coordinate with other leadership roles to identify key performance indicators and success metrics
|
||||
|
||||
#### 2.2.5 Support Team Responsibilities
|
||||
|
||||
**Community Support Specialists:**
|
||||
|
||||
- Provide general assistance and guidance to community members with questions and concerns
|
||||
- Handle initial intake and triage of member support requests and issues
|
||||
- Assist members with platform navigation, account issues, and general community participation
|
||||
- Escalate complex issues to appropriate leadership roles or specialists
|
||||
- Maintain detailed records of support interactions and common issue patterns
|
||||
- Collaborate with other support team members to ensure consistent service quality
|
||||
- Participate in support team training and knowledge sharing initiatives
|
||||
|
||||
**Technical Support Representatives:**
|
||||
|
||||
- Provide technical assistance to community members experiencing platform or tool issues
|
||||
- Troubleshoot and resolve common technical problems with community systems
|
||||
- Create and maintain technical support documentation and troubleshooting guides
|
||||
- Coordinate with Technical Contributors and Technical Administrators on complex technical issues
|
||||
- Monitor technical support channels and respond to member technical questions
|
||||
- Identify recurring technical problems and recommend system improvements
|
||||
- Assist members with accessibility tools and assistive technology integration
|
||||
|
||||
**Content Support Coordinators:**
|
||||
|
||||
- Assist community members with content creation, formatting, and publishing
|
||||
- Provide guidance on community content guidelines and best practices
|
||||
- Help members optimize their contributions for accessibility and engagement
|
||||
- Coordinate with Subject Matter Experts to ensure content accuracy and quality
|
||||
- Manage content creation resources, templates, and style guides
|
||||
- Support community content initiatives and collaborative projects
|
||||
- Monitor content quality and provide constructive feedback to contributors
|
||||
|
||||
**Member Relations Specialists:**
|
||||
|
||||
- Facilitate new member onboarding and integration into community culture
|
||||
- Serve as primary point of contact for member concerns and relationship issues
|
||||
- Coordinate welcome programs and new member orientation activities
|
||||
- Monitor member satisfaction and engagement levels across the community
|
||||
- Mediate minor conflicts and facilitate communication between members
|
||||
- Collect member feedback and suggestions for community improvements
|
||||
- Maintain positive relationships and foster sense of belonging among community members
|
||||
|
||||
**Documentation Support Technicians:**
|
||||
|
||||
- Maintain accuracy and currency of all community documentation and resources
|
||||
- Update policy documents, guides, and informational materials as needed
|
||||
- Coordinate documentation reviews and ensure consistency across all materials
|
||||
- Assist with translation and localization of documentation for diverse audiences
|
||||
- Create and update visual aids, diagrams, and multimedia support materials
|
||||
- Collaborate with leadership roles to document new processes and procedures
|
||||
- Ensure documentation accessibility and usability for all community members
|
||||
|
||||
## 3. Selection and Appointment Processes
|
||||
|
||||
### 3.1 Leadership Selection Criteria
|
||||
|
||||
All community leaders must demonstrate:
|
||||
|
||||
#### 3.1.1 Essential Qualifications
|
||||
|
||||
- **Community Standing**: Minimum six (6) months of positive community participation
|
||||
- **Conduct Record**: Clean disciplinary record with no serious violations
|
||||
- **Skills Demonstration**: Relevant competencies for the specific leadership role
|
||||
- **Commitment Availability**: Adequate time and energy to fulfil role responsibilities
|
||||
- **Values Alignment**: Strong commitment to community principles and inclusive practices
|
||||
|
||||
#### 3.1.2 Preferred Qualifications
|
||||
|
||||
- **Prior Leadership Experience**: Previous volunteer or professional leadership roles
|
||||
- **Specialised Knowledge**: Relevant expertise in moderation, community management, or technical areas
|
||||
- **Mentorship Capability**: Demonstrated ability to guide and support other community members
|
||||
- **Crisis Management Experience**: Skills in conflict resolution and emergency response
|
||||
|
||||
### 3.2 Selection Processes
|
||||
|
||||
#### 3.2.1 Application and Nomination Process
|
||||
|
||||
**Open Applications:**
|
||||
|
||||
- Leadership positions are posted publicly with clear role descriptions and requirements
|
||||
- Applications are evergreen and may be found at https://forms.nhcarrigan.com/form/PEpB3gA79gxP8wmfEf4zou96opkpUTjssTcaeYjhoi8
|
||||
- Community members may self-nominate or nominate others with consent
|
||||
- Applications include personal statements, relevant experience, and community references
|
||||
|
||||
**Community Input Phase:**
|
||||
|
||||
- Public comment periods allow community feedback on candidates
|
||||
- Anonymous feedback mechanisms protect community members from potential retaliation
|
||||
- Existing leadership team provides assessments of candidate suitability
|
||||
- Transparent scoring rubrics ensure fair and consistent evaluation
|
||||
|
||||
#### 3.2.2 Interview and Assessment Process
|
||||
|
||||
**Structured Interviews:**
|
||||
|
||||
- All candidates participate in structured interviews with existing leadership
|
||||
- Scenario-based questions assess decision-making capabilities and values alignment
|
||||
- Technical competency assessments for roles requiring specialized skills
|
||||
- Cultural fit evaluation ensures compatibility with community values and practices
|
||||
|
||||
**Community Engagement Assessment:**
|
||||
|
||||
- Candidates demonstrate understanding of community needs and priorities
|
||||
- Problem-solving scenarios test practical leadership capabilities
|
||||
- Ethical decision-making assessments ensure integrity and sound judgement
|
||||
- Commitment verification confirms availability and dedication to the role
|
||||
|
||||
### 3.3 Appointment and Transition
|
||||
|
||||
#### 3.3.1 Final Selection and Announcement
|
||||
|
||||
**Decision Making:**
|
||||
|
||||
- Selection committees include diverse representation from existing leadership
|
||||
- Decisions are made through consensus-building processes when possible
|
||||
- Final appointments require approval from Executive Leadership
|
||||
- Community announcement includes rationale for selection and role expectations
|
||||
|
||||
**Transition Planning:**
|
||||
|
||||
- New leaders receive comprehensive orientation and training programmes
|
||||
- Mentorship partnerships with experienced leaders provide ongoing support
|
||||
- Progressive responsibility increases ensure successful role adaptation
|
||||
- Regular check-ins during transition period assess progress and provide assistance
|
||||
|
||||
## 4. Leadership Accountability and Oversight
|
||||
|
||||
### 4.1 Performance Standards and Expectations
|
||||
|
||||
#### 4.1.1 Ongoing Performance Metrics
|
||||
|
||||
All community leaders are evaluated on:
|
||||
|
||||
**Community Impact Measures:**
|
||||
|
||||
- Member satisfaction with leadership support and responsiveness
|
||||
- Community health indicators including participation rates and member retention
|
||||
- Conflict resolution effectiveness and community harmony metrics
|
||||
- Accessibility and inclusivity improvements and implementation
|
||||
|
||||
**Individual Performance Standards:**
|
||||
|
||||
- Adherence to community values and ethical standards
|
||||
- Responsiveness to community needs and concerns
|
||||
- Professional development and skills enhancement
|
||||
- Collaboration effectiveness with other leadership team members
|
||||
|
||||
#### 4.1.2 Regular Review Processes
|
||||
|
||||
**Quarterly Performance Reviews:**
|
||||
|
||||
- Structured feedback sessions with direct supervisors or peer review panels
|
||||
- Community feedback collection through anonymous surveys and input forms
|
||||
- Goal-setting for upcoming quarter with specific, measurable objectives
|
||||
- Professional development planning and resource allocation
|
||||
|
||||
**Annual Comprehensive Assessments:**
|
||||
|
||||
- 360-degree feedback including community members, peers, and supervisors
|
||||
- Achievement evaluation against annual goals and community impact metrics
|
||||
- Leadership development planning and career progression discussions
|
||||
- Reappointment decisions based on performance and community needs
|
||||
|
||||
### 4.2 Community Feedback and Input Mechanisms
|
||||
|
||||
#### 4.2.1 Regular Feedback Channels
|
||||
|
||||
**Monthly Community Forums:**
|
||||
|
||||
- Open forums where community members can directly engage with leadership
|
||||
- Structured question and answer sessions on community concerns and priorities
|
||||
- Anonymous submission options for sensitive feedback or concerns
|
||||
- Public response commitments with timeline expectations for issue resolution
|
||||
|
||||
**Leadership Accessibility Programs:**
|
||||
|
||||
- Regular "office hours" where leaders are available for individual community member concerns
|
||||
- Dedicated communication channels for leadership feedback and suggestions
|
||||
- Community liaison positions to facilitate communication between members and leadership
|
||||
- Transparent communication about leadership decisions and their rationales
|
||||
|
||||
#### 4.2.2 Formal Accountability Processes
|
||||
|
||||
**Community Confidence Measures:**
|
||||
|
||||
- Annual community confidence surveys to assess leadership effectiveness
|
||||
- No-confidence vote procedures for community members to request leadership changes
|
||||
- Transparent reporting of community feedback themes and leadership responses
|
||||
- Regular town hall meetings for community-wide discussion of governance issues
|
||||
|
||||
### 4.3 Leadership Standards Enforcement
|
||||
|
||||
#### 4.3.1 Misconduct Investigation Procedures
|
||||
|
||||
When concerns about leadership conduct arise:
|
||||
|
||||
**Initial Assessment:**
|
||||
|
||||
- Formal complaint procedures with clear submission guidelines and protection for complainants
|
||||
- Independent investigation teams to avoid conflicts of interest
|
||||
- Transparent timelines and process communication to maintain community trust
|
||||
- Interim protective measures when necessary to ensure community safety
|
||||
|
||||
**Investigation Process:**
|
||||
|
||||
- Comprehensive evidence collection including witness statements and documentation
|
||||
- Fair hearing procedures with opportunity for accused leaders to respond
|
||||
- Independent review panels including community member representation
|
||||
- Clear standards of evidence and burden of proof requirements
|
||||
|
||||
#### 4.3.2 Disciplinary Measures and Consequences
|
||||
|
||||
**Progressive Disciplinary System:**
|
||||
|
||||
- Formal warnings with clear performance improvement expectations
|
||||
- Temporary suspension from leadership duties pending improvement demonstration
|
||||
- Role restriction or reassignment to positions with appropriate oversight
|
||||
- Removal from leadership positions with detailed rationale provided to community
|
||||
|
||||
**Community Protection Measures:**
|
||||
|
||||
- Immediate removal authority for leaders who pose risks to community safety
|
||||
- Public disclosure requirements for serious misconduct to maintain community trust
|
||||
- Appeals processes for leaders facing disciplinary action
|
||||
- Community healing and repair processes following leadership misconduct incidents
|
||||
|
||||
## 5. Leadership Development and Support
|
||||
|
||||
### 5.1 Training and Professional Development
|
||||
|
||||
#### 5.1.1 Mandatory Training Programs
|
||||
|
||||
All community leaders must complete:
|
||||
|
||||
**Foundation Training:**
|
||||
|
||||
- Community values, mission, and strategic objectives orientation
|
||||
- Legal and policy framework comprehensive training
|
||||
- Conflict resolution and mediation skills development
|
||||
- Accessibility and inclusive practices certification
|
||||
|
||||
**Comprehensive Training Document Review**: All staff members must review and acknowledge completion of ALL training documents and materials, including those that may not appear directly relevant to their specific role, to ensure comprehensive understanding of community standards and cross-functional awareness
|
||||
|
||||
**Role-Specific Training:**
|
||||
|
||||
- Moderation techniques and tools for moderation team members
|
||||
- Crisis intervention and mental health first aid for support roles
|
||||
- Technical administration and security for technical leadership
|
||||
- Event planning and community engagement for activities coordinators
|
||||
|
||||
#### 5.1.2 Ongoing Development Opportunities
|
||||
|
||||
**Skill Enhancement Programs:**
|
||||
|
||||
- Leadership coaching and mentorship opportunities
|
||||
- External training and conference attendance support
|
||||
- Cross-functional experience and role shadowing programs
|
||||
- Community management and governance best practices workshops
|
||||
|
||||
**Personal Development Support:**
|
||||
|
||||
- Stress management and burnout prevention resources
|
||||
- Communication skills development and public speaking training
|
||||
- Cultural competency and diversity, equity, inclusion education
|
||||
- Technology skills and platform administration training
|
||||
|
||||
### 5.2 Leadership Support Systems
|
||||
|
||||
#### 5.2.1 Peer Support Networks
|
||||
|
||||
**Leadership Team Collaboration:**
|
||||
|
||||
- Regular leadership team meetings for coordination and mutual support
|
||||
- Peer mentoring partnerships for experience sharing and guidance
|
||||
- Cross-training programs to ensure coverage and capability development
|
||||
- Team-building activities and relationship-strengthening initiatives
|
||||
|
||||
**External Professional Networks:**
|
||||
|
||||
- Participation in community management professional organisations
|
||||
- Networking opportunities with other community leadership teams
|
||||
- Industry conference attendance and professional development events
|
||||
- Access to external coaching and consultation resources
|
||||
|
||||
#### 5.2.2 Wellness and Burnout Prevention
|
||||
|
||||
**Workload Management:**
|
||||
|
||||
- Clear role boundaries and expectation setting to prevent overextension
|
||||
- Regular workload assessment and redistribution when necessary
|
||||
- Mandatory rest periods and vacation time for volunteer leaders
|
||||
- Recognition and appreciation programs to maintain motivation and satisfaction
|
||||
|
||||
**Mental Health Support:**
|
||||
|
||||
- Peer support groups for leadership stress and challenge management
|
||||
- Regular wellness check-ins and proactive intervention when needed
|
||||
- Flexible role arrangements to accommodate personal circumstances
|
||||
|
||||
## 6. Succession Planning and Continuity
|
||||
|
||||
### 6.1 Leadership Succession Framework
|
||||
|
||||
#### 6.1.1 Planned Succession Processes
|
||||
|
||||
**Leadership Pipeline Development:**
|
||||
|
||||
- Identification and mentorship of potential future leaders
|
||||
- Progressive responsibility assignments to prepare succession candidates
|
||||
- Cross-training programs to ensure multiple qualified candidates for key roles
|
||||
- Regular succession planning reviews and candidate development assessment
|
||||
|
||||
**Transition Management:**
|
||||
|
||||
- Comprehensive handover procedures for departing leaders
|
||||
- Knowledge transfer protocols to maintain institutional memory
|
||||
- Interim leadership arrangements during transition periods
|
||||
- Community communication strategies for leadership changes
|
||||
|
||||
#### 6.1.2 Emergency Succession Procedures
|
||||
|
||||
**Crisis Leadership Arrangements:**
|
||||
|
||||
- Predefined emergency succession chains for critical leadership roles
|
||||
- Emergency decision-making authority delegation procedures
|
||||
- Rapid response team formation for crisis management
|
||||
- Community communication protocols for emergency leadership changes
|
||||
|
||||
### 6.2 Knowledge Management and Institutional Memory
|
||||
|
||||
#### 6.2.1 Documentation and Record-Keeping
|
||||
|
||||
**Leadership Knowledge Base:**
|
||||
|
||||
- Comprehensive documentation of policies, procedures, and decision-making rationales
|
||||
- Historical record-keeping of significant community events and leadership decisions
|
||||
- Best practices documentation and lessons learned compilation
|
||||
- Regular updates and maintenance of institutional knowledge resources
|
||||
|
||||
**Training Materials and Resources:**
|
||||
|
||||
- Standardised training curricula for new leaders
|
||||
- Decision-making frameworks and guidance documents
|
||||
- Community history and cultural context documentation
|
||||
- Technical procedures and platform administration guides
|
||||
|
||||
## 7. Community Transparency and Communication
|
||||
|
||||
### 7.1 Transparency Requirements
|
||||
|
||||
#### 7.1.1 Public Reporting and Disclosure
|
||||
|
||||
**Regular Community Updates:**
|
||||
|
||||
- Monthly leadership reports on community health, activities, and initiatives
|
||||
- Quarterly transparency reports including disciplinary action summaries and community metrics
|
||||
- Annual comprehensive reviews of community progress and leadership effectiveness
|
||||
- Public disclosure of significant policy changes and their rationales
|
||||
|
||||
**Decision-Making Transparency:**
|
||||
|
||||
- Public documentation of major leadership decisions and their reasoning
|
||||
- Community consultation processes for significant changes affecting members
|
||||
- Open meeting minutes and records for community leadership discussions
|
||||
- Clear communication of appeals processes and outcomes
|
||||
|
||||
#### 7.1.2 Community Engagement and Input
|
||||
|
||||
**Participatory Governance:**
|
||||
|
||||
- Regular community surveys to assess satisfaction and gather input on priorities
|
||||
- Public comment periods for proposed policy changes and community initiatives
|
||||
- Community advisory panels with rotating membership
|
||||
- Open forums for community concerns and suggestions
|
||||
|
||||
## 8. Policy Implementation and Review
|
||||
|
||||
### 8.2 Regular Review and Updates
|
||||
|
||||
#### 8.2.1 Policy Review Schedule
|
||||
|
||||
**Annual Reviews:**
|
||||
|
||||
- Comprehensive policy effectiveness assessment
|
||||
- Community feedback integration and policy refinement
|
||||
- Best practices research and external benchmarking
|
||||
- Leadership team input and improvement recommendations
|
||||
|
||||
**Continuous Improvement:**
|
||||
|
||||
- Quarterly review of policy implementation and effectiveness
|
||||
- Community feedback integration and responsive policy adjustments
|
||||
- Regular benchmarking against community management best practices
|
||||
- Ongoing legal and regulatory compliance verification
|
||||
|
||||
### 8.2 Amendment Procedures
|
||||
|
||||
#### 8.2.1 Policy Change Process
|
||||
|
||||
**Community Input Requirements:**
|
||||
|
||||
- Minimum thirty (30) day public comment period for significant policy changes
|
||||
- Community advisory panel review and recommendation processes
|
||||
- Leadership team consensus-building and impact assessment
|
||||
- Legal and policy compliance verification before implementation
|
||||
|
||||
**Implementation and Communication:**
|
||||
|
||||
- Clear communication of policy changes and effective dates
|
||||
- Training updates for all leadership team members
|
||||
- Community education and awareness programs for new requirements
|
||||
- Regular monitoring of policy effectiveness and community impact
|
||||
|
||||
---
|
||||
|
||||
## Acknowledgement and Compliance
|
||||
|
||||
By accepting leadership roles within our community, all leaders explicitly acknowledge that they have read, understood, and agreed to comply with this Community Leadership and Governance Policy in its entirety. This commitment includes ongoing adherence to all accountability measures, transparency requirements, and community service obligations outlined herein.
|
||||
|
||||
This Policy represents our collective commitment to maintaining excellent leadership standards that serve our community's mission of fostering a safe, welcoming, and inclusive environment for all members.
|
||||
|
||||
---
|
||||
|
||||
_This Community Leadership and Governance Policy was created on 15 September 2025. For questions about this Policy or to provide feedback on leadership performance, please contact our Community Leaders through the designated channels outlined in our Community Code of Conduct._
|
||||
@@ -0,0 +1,429 @@
|
||||
---
|
||||
title: Community Recognition and Appreciation Policy
|
||||
---
|
||||
|
||||
## 1. Foundation and Philosophy
|
||||
|
||||
### 1.1 Introduction and Purpose
|
||||
|
||||
This Community Recognition and Appreciation Policy (hereinafter referred to as "the Policy") establishes our comprehensive framework for acknowledging, celebrating, and appreciating the diverse contributions of community members. This Policy recognises that fostering a truly welcoming and inclusive environment requires intentional appreciation of member efforts, celebration of diverse talents and contributions, and creation of meaningful recognition systems that motivate continued positive engagement.
|
||||
|
||||
### 1.2 Core Principles
|
||||
|
||||
Our recognition and appreciation approach is founded upon:
|
||||
|
||||
**(a)** **Inclusive Recognition**: Celebrating diverse types of contributions and varying levels of participation;
|
||||
|
||||
**(b)** **Authentic Appreciation**: Genuine, specific, and meaningful acknowledgement of member efforts;
|
||||
|
||||
**(c)** **Equitable Access**: Recognition opportunities available to all community members regardless of background or status;
|
||||
|
||||
**(d)** **Cultural Sensitivity**: Recognition practices that respect diverse cultural approaches to appreciation and celebration;
|
||||
|
||||
**(e)** **Sustainable Systems**: Long-term recognition programs that maintain motivation and community engagement;
|
||||
|
||||
**(f)** **Community-Driven Values**: Recognition that reinforces positive community culture and shared values.
|
||||
|
||||
### 1.3 Recognition Philosophy
|
||||
|
||||
We believe that every community member contributes value in unique ways, and our recognition systems are designed to:
|
||||
- Acknowledge contributions both large and small
|
||||
- Celebrate effort and growth as well as achievement
|
||||
- Promote inclusive participation and diverse engagement styles
|
||||
- Build community connections and mutual appreciation
|
||||
- Encourage continued positive contribution and community involvement
|
||||
|
||||
### 1.4 Legal Framework Integration
|
||||
|
||||
This Policy operates within our comprehensive legal and policy framework, including our Terms of Service, Privacy Policy, Community Code of Conduct, and Community Leadership and Governance Policy, all of which are incorporated herein by reference.
|
||||
|
||||
## 2. Recognition Categories and Programs
|
||||
|
||||
### 2.1 Regular Recognition Programs
|
||||
|
||||
#### 2.1.1 Daily Appreciation Initiatives
|
||||
|
||||
**Community Gratitude Practices:**
|
||||
- Daily appreciation messages highlighting specific member contributions
|
||||
- "Spotlight Saturday" featuring different community members and their positive impact
|
||||
- Peer appreciation systems allowing members to acknowledge each other's contributions
|
||||
- Weekly gratitude threads celebrating community achievements and member efforts
|
||||
|
||||
**Micro-Recognition Systems:**
|
||||
- Thank-you reactions and appreciation emojis for helpful contributions
|
||||
- Positive feedback highlighting specific instances of community support
|
||||
- Recognition of members who provide assistance, answer questions, or offer guidance
|
||||
- Acknowledgement of members who demonstrate inclusive and welcoming behaviour
|
||||
|
||||
#### 2.1.2 Monthly Recognition Programs
|
||||
|
||||
**Member of the Month Awards:**
|
||||
- Recognition for outstanding community contribution and positive impact
|
||||
- Rotating focus on different types of contributions (helping others, creative contributions, community building)
|
||||
- Nominated by community members and selected by leadership team
|
||||
- Featured spotlight with member interview and contribution celebration
|
||||
|
||||
**Contribution Category Awards:**
|
||||
- **Helper of the Month**: Members who consistently provide support and assistance to others
|
||||
- **Mentor of the Month**: Members who guide and support newcomers or less experienced community members
|
||||
- **Innovator of the Month**: Members who bring creative ideas, solutions, or new perspectives
|
||||
- **Inclusivity Champion**: Members who actively promote inclusive practices and welcoming environments
|
||||
|
||||
### 2.2 Special Recognition Programs
|
||||
|
||||
#### 2.2.1 Annual Achievement Awards
|
||||
|
||||
**Excellence in Community Building:**
|
||||
- Outstanding Community Leader Award for members who demonstrate exceptional leadership qualities
|
||||
- Community Catalyst Award for members who inspire positive change and growth
|
||||
- Diversity and Inclusion Champion Award for members who actively promote inclusive practices
|
||||
- Lifetime Achievement Award for long-term contributors who have significantly shaped community culture
|
||||
|
||||
**Special Category Recognition:**
|
||||
- **Rising Star Award**: Newer members who have made significant positive impact
|
||||
- **Comeback Achievement**: Members who have overcome challenges and returned to positive participation
|
||||
- **Behind-the-Scenes Hero**: Members who contribute significantly in less visible but essential ways
|
||||
- **Community Bridge Builder**: Members who facilitate connections and resolve conflicts constructively
|
||||
|
||||
#### 2.2.2 Milestone Celebration Programs
|
||||
|
||||
**Participation Milestone Recognition:**
|
||||
- Anniversary celebrations for community membership milestones (1 year, 2 years, 5 years)
|
||||
- Growth milestone celebrations acknowledging member development and learning
|
||||
- Community service milestone recognition for volunteer contributions and leadership
|
||||
|
||||
**Community Achievement Celebrations:**
|
||||
- Community growth milestones (membership numbers, activity levels, positive outcomes)
|
||||
- Collective achievement celebrations (successful events, community projects, positive changes)
|
||||
- Anniversary celebrations of significant community moments and developments
|
||||
- Recognition of community resilience and positive responses to challenges
|
||||
|
||||
## 3. Nomination and Selection Processes
|
||||
|
||||
:::tip
|
||||
Nomination form can be found at https://forms.nhcarrigan.com/form/wksk-NuR3HBuovSixbXFEnkYq-3Gp-bZMH-n__PNRKw
|
||||
:::
|
||||
|
||||
### 3.1 Community-Driven Nomination Systems
|
||||
|
||||
#### 3.1.1 Peer Nomination Processes
|
||||
|
||||
**Open Nomination Periods:**
|
||||
- Monthly nomination windows allowing any community member to nominate others
|
||||
- Anonymous nomination options to encourage participation without social pressure
|
||||
- Self-nomination opportunities for members to highlight their own contributions
|
||||
- Group nomination options for collaborative projects and team achievements
|
||||
|
||||
**Nomination Criteria and Guidelines:**
|
||||
- Specific, detailed descriptions of contributions and positive impact
|
||||
- Examples of how nominees demonstrate community values and inclusive practices
|
||||
- Focus on effort, growth, and positive community impact rather than just results
|
||||
- Consideration of diverse contribution types and varying participation styles
|
||||
|
||||
#### 3.1.2 Selection and Review Processes
|
||||
|
||||
**Diverse Selection Committees:**
|
||||
- Rotating committee membership ensuring diverse perspectives and fair evaluation
|
||||
- Include community members from different backgrounds, experience levels, and community areas
|
||||
- Balance of leadership team members and community volunteers in selection processes
|
||||
- Training for selection committee members on bias awareness and inclusive evaluation
|
||||
|
||||
**Fair and Transparent Evaluation:**
|
||||
- Clear evaluation criteria shared publicly and applied consistently
|
||||
- Anonymous evaluation processes to reduce bias and ensure fair consideration
|
||||
- Multiple reviewer assessment system for important recognition decisions
|
||||
- Regular review of selection processes to ensure equity and effectiveness
|
||||
|
||||
### 3.2 Recognition Frequency and Distribution
|
||||
|
||||
#### 3.2.1 Balanced Recognition Distribution
|
||||
|
||||
**Inclusive Recognition Practices:**
|
||||
- Ensure recognition reaches members from all community areas and participation styles
|
||||
- Actively seek out and acknowledge contributions from less visible community members
|
||||
- Balance recognition between new members and long-term contributors
|
||||
- Promote recognition of diverse types of contributions and community involvement
|
||||
|
||||
**Geographic and Cultural Inclusion:**
|
||||
- Recognition that considers different time zones and participation patterns
|
||||
- Cultural sensitivity in recognition practices and celebration methods
|
||||
- Accessibility considerations in recognition events and appreciation activities
|
||||
- Language and communication accessibility in recognition announcements and celebrations
|
||||
|
||||
## 4. Types of Contributions Valued
|
||||
|
||||
### 4.1 Direct Community Contributions
|
||||
|
||||
#### 4.1.1 Active Participation and Engagement
|
||||
|
||||
**Discussion and Content Contributions:**
|
||||
- Thoughtful questions that promote community learning and engagement
|
||||
- Helpful responses and information sharing that assists other community members
|
||||
- Creative contributions including original content, resources, and educational materials
|
||||
- Constructive feedback and suggestions that improve community experience
|
||||
|
||||
**Community Support Activities:**
|
||||
- Welcoming new members and helping them integrate into community culture
|
||||
- Providing technical assistance and platform navigation support
|
||||
- Mentoring and guidance for less experienced community members
|
||||
- Conflict resolution assistance and constructive mediation efforts
|
||||
|
||||
#### 4.1.2 Leadership and Initiative
|
||||
|
||||
**Volunteer Leadership Roles:**
|
||||
- Moderation activities and community standards enforcement
|
||||
- Event planning and community activity organisation
|
||||
- Educational initiative development and implementation
|
||||
- Policy development input and community improvement suggestions
|
||||
|
||||
**Innovation and Problem-Solving:**
|
||||
- Creative solutions to community challenges and improvement opportunities
|
||||
- New program or initiative development and implementation
|
||||
- Technology improvements and platform enhancement contributions
|
||||
- Process improvements that enhance community experience and accessibility
|
||||
|
||||
### 4.2 Indirect and Supporting Contributions
|
||||
|
||||
#### 4.2.1 Community Culture Building
|
||||
|
||||
**Positive Environment Creation:**
|
||||
- Consistent demonstration of inclusive and welcoming behaviour
|
||||
- Cultural bridge-building between different community groups and perspectives
|
||||
- Emotional support and encouragement for community members during difficult times
|
||||
- Celebration of other members' achievements and positive contribution acknowledgement
|
||||
|
||||
**Values Demonstration and Modeling:**
|
||||
- Exemplary adherence to community standards and positive behaviour modeling
|
||||
- Advocacy for inclusive practices and accessibility improvements
|
||||
- Support for marginalised community members and inclusive representation
|
||||
- Constructive engagement with community policies and improvement processes
|
||||
|
||||
#### 4.2.2 Behind-the-Scenes Contributions
|
||||
|
||||
**Administrative and Organisational Support:**
|
||||
- Documentation improvement and resource organisation activities
|
||||
- Research and information gathering for community benefit
|
||||
- Quality assurance and error reporting for community resources and platforms
|
||||
- Accessibility testing and improvement suggestions for community tools
|
||||
|
||||
**Community Maintenance Activities:**
|
||||
- Content curation and organisation for community resources
|
||||
- Link checking, information updates, and resource maintenance
|
||||
- Translation services and language accessibility improvements
|
||||
- Community data collection and analysis for improvement purposes
|
||||
|
||||
## 5. Recognition Methods and Formats
|
||||
|
||||
### 5.1 Public Recognition and Celebration
|
||||
|
||||
#### 5.1.1 Community Announcements and Features
|
||||
|
||||
**Regular Recognition Announcements:**
|
||||
- Weekly appreciation announcements highlighting specific member contributions
|
||||
- Monthly feature articles celebrating member achievements and community impact
|
||||
- Annual recognition ceremony events with community-wide celebration
|
||||
- Special milestone announcements for significant member achievements
|
||||
|
||||
**Profile and Achievement Highlighting:**
|
||||
- Member spotlight features with interviews and contribution celebration
|
||||
- Achievement badges and recognition symbols displayed on member profiles
|
||||
- "Wall of Fame" or recognition gallery featuring outstanding contributors
|
||||
- Newsletter features and external communication highlighting member achievements
|
||||
|
||||
#### 5.1.2 Community Events and Celebrations
|
||||
|
||||
**Recognition Ceremony Events:**
|
||||
- Annual awards ceremony with community-wide attendance and celebration
|
||||
- Monthly appreciation events featuring award presentations and community gathering
|
||||
- Special milestone celebration events for significant community achievements
|
||||
- Recognition reception events providing networking and appreciation opportunities
|
||||
|
||||
**Interactive Celebration Activities:**
|
||||
- Community appreciation events with member participation and engagement
|
||||
- Recognition games and activities that celebrate diverse contributions
|
||||
- Peer appreciation sessions where members can acknowledge each other's contributions
|
||||
- Storytelling events where members share impact stories and appreciation experiences
|
||||
|
||||
### 5.2 Private and Personal Recognition
|
||||
|
||||
#### 5.2.1 Individual Appreciation Communications
|
||||
|
||||
**Personal Recognition Messages:**
|
||||
- Direct appreciation messages from community leadership acknowledging specific contributions
|
||||
- Personalized thank-you notes for exceptional community service and positive impact
|
||||
- One-on-one appreciation conversations recognizing member efforts and growth
|
||||
- Private acknowledgement of sensitive contributions that require confidential appreciation
|
||||
|
||||
**Tailored Recognition Approaches:**
|
||||
- Recognition methods adapted to individual preferences and comfort levels
|
||||
- Cultural considerations in recognition style and appreciation expressions
|
||||
- Accessibility accommodations in recognition delivery and participation
|
||||
- Personal achievement celebration that respects individual privacy preferences
|
||||
|
||||
## 6. Accessibility and Inclusion in Recognition
|
||||
|
||||
### 6.1 Universal Design Recognition Systems
|
||||
|
||||
#### 6.1.1 Accessible Recognition Participation
|
||||
|
||||
**Inclusive Nomination Processes:**
|
||||
- Multiple nomination methods accommodating different communication preferences and abilities
|
||||
- Anonymous nomination options for members who prefer not to be publicly associated with nominations
|
||||
- Alternative format nominations including audio, video, or alternative text submissions
|
||||
- Language translation support for nominations submitted in languages other than English
|
||||
|
||||
**Accessible Recognition Events:**
|
||||
- Recognition events planned with accessibility considerations including mobility, sensory, and cognitive accessibility
|
||||
- Multiple participation formats (in-person, virtual, asynchronous) to accommodate different needs and preferences
|
||||
- Clear communication about accessibility features and accommodation availability
|
||||
- Alternative participation methods for members unable to attend live recognition events
|
||||
|
||||
#### 6.1.2 Diverse Recognition Styles
|
||||
|
||||
**Cultural Sensitivity in Recognition:**
|
||||
- Recognition practices that respect diverse cultural approaches to appreciation and celebration
|
||||
- Multiple celebration styles accommodating different comfort levels with public recognition
|
||||
- Individual preference accommodation for recognition style and publicity level
|
||||
- Culturally appropriate celebration methods that honour diverse community member backgrounds
|
||||
|
||||
**Neurodiversity Considerations:**
|
||||
- Recognition systems that accommodate different social and sensory preferences
|
||||
- Alternative recognition methods for members who may find traditional recognition formats challenging
|
||||
- Clear communication about recognition expectations and optional participation levels
|
||||
- Flexible recognition formats that allow members to engage in ways that work best for them
|
||||
|
||||
### 6.2 Equity in Recognition Distribution
|
||||
|
||||
#### 6.2.1 Bias Awareness and Prevention
|
||||
|
||||
**Systematic Bias Prevention:**
|
||||
- Regular analysis of recognition distribution patterns to identify and address potential bias
|
||||
- Training for recognition committee members on unconscious bias recognition and prevention
|
||||
- Diverse perspectives inclusion in recognition decision-making processes
|
||||
- Transparent recognition criteria that promote equity and inclusive evaluation
|
||||
|
||||
**Inclusive Recognition Criteria:**
|
||||
- Recognition criteria that value diverse types of contributions and participation styles
|
||||
- Appreciation for growth and effort rather than only final achievements or outcomes
|
||||
- Recognition of contributions that may be less visible but equally valuable to community health
|
||||
- Consideration of different life circumstances and availability levels in recognition evaluation
|
||||
|
||||
#### 6.2.2 Representative Recognition Outcomes
|
||||
|
||||
**Demographic Equity Monitoring:**
|
||||
- Regular assessment of recognition distribution across different community demographic groups
|
||||
- Proactive outreach to ensure recognition opportunities reach all community segments
|
||||
- Special recognition categories that highlight contributions from underrepresented community members
|
||||
- Community feedback collection on recognition equity and inclusive representation
|
||||
|
||||
## 7. Volunteer Appreciation and Support
|
||||
|
||||
### 7.1 Leadership and Staff Recognition
|
||||
|
||||
#### 7.1.1 Volunteer Appreciation Programs
|
||||
|
||||
**Regular Volunteer Recognition:**
|
||||
- Monthly volunteer appreciation events with special recognition for leadership contributions
|
||||
- Annual volunteer appreciation celebrations acknowledging the significant time and effort invested
|
||||
- Volunteer milestone recognition for length of service and depth of contribution
|
||||
- Public acknowledgement of volunteer efforts and their positive impact on community experience
|
||||
|
||||
**Professional Development and Growth Support:**
|
||||
- Training and skill development opportunities for volunteers as appreciation for their service
|
||||
- Leadership development programs and advancement opportunities within community structure
|
||||
- Professional reference and recommendation support for volunteers seeking career opportunities
|
||||
- Networking opportunities and community connections that benefit volunteer development
|
||||
|
||||
#### 7.1.2 Volunteer Wellness and Burnout Prevention
|
||||
|
||||
**Volunteer Support Systems:**
|
||||
- Regular check-ins with volunteers to assess satisfaction, challenges, and support needs
|
||||
- Burnout prevention resources and workload management support
|
||||
- Flexible volunteer arrangements accommodating changing life circumstances and availability
|
||||
- Peer support networks connecting volunteers for mutual encouragement and assistance
|
||||
|
||||
**Recognition of Volunteer Limits and Boundaries:**
|
||||
- Appreciation for volunteer contributions without creating pressure for continued overextension
|
||||
- Support for volunteers who need to reduce involvement or take breaks from community service
|
||||
- Recognition that volunteer contributions are gifts to the community rather than obligations
|
||||
- Celebration of volunteers' other life priorities and achievements outside of community service
|
||||
|
||||
## 8. Community Feedback and Recognition Evolution
|
||||
|
||||
### 8.1 Community Input on Recognition Programs
|
||||
|
||||
#### 8.1.1 Regular Feedback Collection
|
||||
|
||||
**Recognition Program Evaluation:**
|
||||
- Annual surveys collecting community feedback on recognition program effectiveness and satisfaction
|
||||
- Focus groups with community members who have received recognition to assess program impact
|
||||
- Input collection from community members who have not received recognition to identify barriers and improvements
|
||||
- Regular assessment of recognition program accessibility and inclusive representation
|
||||
|
||||
**Continuous Improvement Integration:**
|
||||
- Community suggestion processes for recognition program enhancement and new recognition categories
|
||||
- Responsive program modification based on community feedback and changing needs
|
||||
- Transparent communication about recognition program changes and improvement rationales
|
||||
- Community involvement in recognition program planning and development processes
|
||||
|
||||
### 8.2 Recognition Program Evolution and Innovation
|
||||
|
||||
#### 8.2.1 Adaptive Recognition Systems
|
||||
|
||||
**Emerging Recognition Opportunities:**
|
||||
- Regular evaluation of community needs and new types of contributions that merit recognition
|
||||
- Innovation in recognition methods and celebration formats to maintain engagement and relevance
|
||||
- Technology integration to enhance recognition accessibility and community participation
|
||||
- Partnership development with external organisations to expand recognition opportunities and resources
|
||||
|
||||
**Long-Term Program Sustainability:**
|
||||
- Planning for recognition program continuity during leadership transitions and community growth
|
||||
- Resource allocation and volunteer development to support ongoing recognition activities
|
||||
- Documentation and knowledge preservation to maintain recognition program quality and consistency
|
||||
- Strategic planning for recognition program expansion and enhancement as community evolves
|
||||
|
||||
## 9. Policy Implementation and Review
|
||||
|
||||
### 9.1 Regular Review and Enhancement
|
||||
|
||||
#### 9.1.1 Continuous Improvement Process
|
||||
|
||||
**Monthly Program Assessment:**
|
||||
- Recognition program effectiveness evaluation and participant satisfaction assessment
|
||||
- Recognition distribution analysis to ensure equity and inclusive representation
|
||||
- Community feedback integration and program adjustment based on member input
|
||||
- Volunteer appreciation program evaluation and enhancement planning
|
||||
|
||||
**Annual Comprehensive Review:**
|
||||
- Community-wide recognition program impact assessment and satisfaction evaluation
|
||||
- Recognition criteria and selection process review for effectiveness and fairness
|
||||
- Accessibility and inclusion evaluation with improvement planning and implementation
|
||||
- Strategic planning for recognition program expansion and innovation
|
||||
|
||||
### 9.2 Community Celebration and Recognition Culture
|
||||
|
||||
#### 9.2.1 Culture Development and Reinforcement
|
||||
|
||||
**Recognition Culture Promotion:**
|
||||
- Community education about the importance and impact of appreciation and recognition
|
||||
- Peer-to-peer recognition encouragement and facilitation
|
||||
- Leadership modeling of appreciation and recognition practices
|
||||
- Integration of recognition and appreciation into regular community activities and interactions
|
||||
|
||||
**Long-Term Community Impact:**
|
||||
- Recognition program contribution to overall community health and member satisfaction
|
||||
- Appreciation culture development and maintenance as community grows and evolves
|
||||
- Recognition program role in member retention and continued positive community engagement
|
||||
- Community reputation enhancement through recognition of excellence and positive contribution
|
||||
|
||||
---
|
||||
|
||||
## Community Commitment to Appreciation
|
||||
|
||||
This Community Recognition and Appreciation Policy represents our deep commitment to acknowledging, celebrating, and appreciating every community member's unique contributions and positive impact. We believe that genuine appreciation and meaningful recognition are essential components of creating truly welcoming and inclusive environments where all members can thrive.
|
||||
|
||||
Through this Policy, we pledge to maintain systems that celebrate diverse contributions, provide equitable recognition opportunities, and foster a culture of mutual appreciation that strengthens our community bonds and encourages continued positive engagement.
|
||||
|
||||
---
|
||||
|
||||
*This Community Recognition and Appreciation Policy was created on 15 September 2025. For questions about recognition programs or to nominate community members for appreciation, please contact our Community Leaders through the designated channels outlined in our Community Code of Conduct.*
|
||||
@@ -24,8 +24,8 @@ In case of any discrepancy between this document and project-specific guidelines
|
||||
|
||||
All commits must be cryptographically signed using either GPG or SSH. This requirement serves to verify the authenticity and integrity of your contributions.
|
||||
|
||||
- For GPG signing, ensure your GPG key is associated with your GitHub or Codeberg account.
|
||||
- For SSH signing, use a key linked to your GitHub or Codeberg account.
|
||||
- For GPG signing, ensure your GPG key is associated with your Github or NHCarrigan Git account.
|
||||
- For SSH signing, use a key linked to your Github or NHCarrigan Git account.
|
||||
|
||||
By signing your commit, you are certifying that:
|
||||
|
||||
@@ -42,7 +42,7 @@ All contributors are expected to adhere to our Contributor Covenant. The full te
|
||||
All contributions to our projects, including but not limited to code, documentation, artwork, and other materials, will be licensed under our global software license. By submitting a contribution, you are agreeing to license your work under the terms of this license.
|
||||
|
||||
- Our global software license: Naomi's Public License
|
||||
- Full text of the license: https://docs.nhcarrigan.com/#/license
|
||||
- Full text of the license: [License Page](/legal/license)
|
||||
|
||||
### 1.6 Intellectual Property
|
||||
|
||||
@@ -95,76 +95,43 @@ To work with secrets locally, you must set up the 1Password CLI (Command Line In
|
||||
|
||||
## 3. Setting Up Your Development Environment
|
||||
|
||||
### 3.1 Forking the Repository
|
||||
### 3.1 Gaining a contributor account
|
||||
|
||||
1. Navigate to the original repository on Codeberg.
|
||||
2. Click the "Fork" button in the upper right corner of the page.
|
||||
3. Select your account as the destination for the fork.
|
||||
4. Wait for Codeberg to create a copy of the repository in your account.
|
||||
1. Navigate to our [contributor form](https://forms.nhcarrigan.com/form/c0_N5hb-VcmC2ClzaGOvDxVirMN_coiWG7eoPhDPsZ0).
|
||||
2. Fill out the web form.
|
||||
3. Wait for Naomi to approve your account.
|
||||
|
||||
### 3.2 Cloning Your Fork
|
||||
### 3.2 Cloning A Project
|
||||
|
||||
1. Go to your forked repository on Codeberg.
|
||||
2. Click the "Code" button and copy the URL (HTTPS or SSH, depending on your setup).
|
||||
1. Go to repository on NHCarrigan's Git instance.
|
||||
2. Click the "Code" button and copy the HTTPS URL.
|
||||
3. Open your terminal or command prompt.
|
||||
4. Navigate to the directory where you want to store the project.
|
||||
5. Run the following command, replacing `<url>` with the URL you copied:
|
||||
|
||||
```
|
||||
```bash
|
||||
git clone <url>
|
||||
```
|
||||
|
||||
6. Enter your GitHub credentials if prompted.
|
||||
6. Enter your Git credentials if prompted.
|
||||
|
||||
### 3.3 Setting Up the Upstream Remote
|
||||
### 3.3 Keeping Your Clone Up-to-Date
|
||||
|
||||
Adding the original repository as an upstream remote allows you to easily keep your fork up-to-date.
|
||||
Regularly update your clone to incorporate changes from the upstream repository:
|
||||
|
||||
1. Change into the project directory:
|
||||
1. Check out the main branch:
|
||||
|
||||
```
|
||||
cd <project-name>
|
||||
```
|
||||
|
||||
2. Add the upstream remote:
|
||||
|
||||
```
|
||||
git remote add upstream <original-repository-url>
|
||||
```
|
||||
|
||||
Replace `<original-repository-url>` with the **git** URL of the original repository.
|
||||
|
||||
3. Verify the new remote:
|
||||
|
||||
```
|
||||
git remote -v
|
||||
```
|
||||
|
||||
You should see entries for both `origin` (your fork) and `upstream`.
|
||||
|
||||
### 3.4 Keeping Your Fork Up-to-Date
|
||||
|
||||
Regularly update your fork to incorporate changes from the upstream repository:
|
||||
|
||||
1. Fetch the branches and commits from the upstream repository:
|
||||
|
||||
```
|
||||
git fetch upstream
|
||||
```
|
||||
|
||||
2. Check out your fork's local main branch:
|
||||
|
||||
```
|
||||
```bash
|
||||
git checkout main
|
||||
```
|
||||
|
||||
3. Merge changes from upstream/main into your local main branch:
|
||||
2. Pull changes from upstream to your local clone:
|
||||
|
||||
```
|
||||
git merge upstream/main
|
||||
```bash
|
||||
git pull
|
||||
```
|
||||
|
||||
### 3.5 Troubleshooting
|
||||
### 3.4 Troubleshooting
|
||||
|
||||
If you encounter any issues during setup:
|
||||
|
||||
@@ -172,7 +139,7 @@ If you encounter any issues during setup:
|
||||
2. Search for similar issues in the project's issue tracker.
|
||||
3. If the problem persists, open a new issue with detailed information about the problem and steps to reproduce it.
|
||||
|
||||
You can also reach out to us on our forum: https://forum.nhcarrigan.com
|
||||
You can also reach out to us on our Discord: https://chat.nhcarrigan.com/
|
||||
|
||||
## 4. Claiming an Issue
|
||||
|
||||
@@ -206,10 +173,10 @@ We encourage collaboration and pair programming on complex issues!
|
||||
|
||||
### 4.5 Working on the Issue
|
||||
|
||||
1. Once assigned, create a new branch in your fork for this specific issue.
|
||||
1. Once assigned, create a new branch in the project for this specific issue.
|
||||
2. Use a descriptive branch name, e.g., `fix/issue-123-button-alignment`.
|
||||
3. Make your changes, committing regularly with clear, concise commit messages.
|
||||
4. Push your changes to your fork.
|
||||
4. Push your changes to your branch.
|
||||
5. Open a pull request when ready for review (see Pull Request Guidelines in section [X]).
|
||||
|
||||
### 4.6 Keeping the Community Updated
|
||||
@@ -245,16 +212,16 @@ Pay attention to issue labels for additional context:
|
||||
|
||||
## 5. Working on Your Issue
|
||||
|
||||
### 5.1 Updating Your Fork
|
||||
### 5.1 Updating Your Clone
|
||||
|
||||
Before starting work, ensure your forked version is up to date with the original repository. If you've set up the `upstream` remote as mentioned in Section 3, follow these steps:
|
||||
Before starting work, ensure your clone is up to date with the original repository.
|
||||
|
||||
1. Open your terminal and navigate to your project's root directory.
|
||||
2. Run the following commands:
|
||||
|
||||
```bash
|
||||
git fetch upstream
|
||||
git merge upstream/main
|
||||
git checkout main
|
||||
git pull
|
||||
```
|
||||
|
||||
### 5.2 Creating a New Branch
|
||||
@@ -282,7 +249,7 @@ Always create a new branch for your work:
|
||||
|
||||
1. Make your code changes, following the project's coding standards and guidelines.
|
||||
2. Regularly commit your changes with clear, concise messages.
|
||||
3. Push your changes to your fork periodically:
|
||||
3. Push your changes to your branch periodically:
|
||||
|
||||
```bash
|
||||
git push origin <branchname>
|
||||
@@ -321,7 +288,7 @@ When you're ready to commit your changes:
|
||||
|
||||
Example:
|
||||
|
||||
```
|
||||
```md
|
||||
feat: add user authentication system
|
||||
|
||||
Implement JWT-based authentication for API endpoints.
|
||||
@@ -363,24 +330,24 @@ If you're unsure about any part of the process or need help, don't hesitate to a
|
||||
|
||||
### 6.1 Pushing Your Changes
|
||||
|
||||
1. Push your changes to your forked repository:
|
||||
1. Push your changes to the repository:
|
||||
|
||||
```bash
|
||||
git push -u origin <branchname>
|
||||
```
|
||||
|
||||
- `-u` sets the upstream, linking your local branch to the remote branch
|
||||
- `origin` specifies your forked repository as the destination
|
||||
- `origin` specifies the project repository as the destination
|
||||
- `<branchname>` is the name of your local branch
|
||||
|
||||
2. Ensure the push is successful and your changes appear in your forked repository on Codeberg.
|
||||
2. Ensure the push is successful and your changes appear in the repository on NHCarrigan's Git instance.
|
||||
|
||||
### 6.2 Creating the Pull Request
|
||||
|
||||
1. Navigate to your forked repository on Codeberg.
|
||||
1. Navigate to the repository on NHCarrigan's Git instance.
|
||||
2. You should see a prompt to create a pull request for your recently pushed branch. If not, click on the "Pull requests" tab and then the "New pull request" button.
|
||||
3. Ensure the base repository is the original project repository and the base branch is `main`.
|
||||
4. Select your fork as the head repository and your recently pushed branch as the compare branch.
|
||||
4. Select the project as the head repository and your recently pushed branch as the compare branch.
|
||||
|
||||
### 6.3 Filling Out the Pull Request
|
||||
|
||||
@@ -409,7 +376,7 @@ If you need to make changes to your pull request:
|
||||
|
||||
1. Make the required changes in your local branch.
|
||||
2. Commit the changes.
|
||||
3. Push the new commits to your fork:
|
||||
3. Push the new commits to your branch:
|
||||
|
||||
```bash
|
||||
git push origin <branchname>
|
||||
@@ -427,7 +394,7 @@ If you need to make changes to your pull request:
|
||||
### 6.8 Merging and Closing
|
||||
|
||||
- Once your pull request is approved, a maintainer will merge it into the main project.
|
||||
- After merging, you can delete your branch from your fork if you won't be using it anymore.
|
||||
- After merging, you can delete your branch from the repository if you won't be using it anymore.
|
||||
- Celebrate your contribution to the project!
|
||||
|
||||
## 7. Pull Request Reviews
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: nhcarrigan Contributor Covenant
|
||||
title: Contributor Covenant
|
||||
---
|
||||
|
||||
Copyright (C) 2024 nhcarrigan and its contributors.
|
||||
|
||||
+1864
-2215
File diff suppressed because it is too large
Load Diff
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: Labels
|
||||
title: "Issue/PR Labels"
|
||||
---
|
||||
|
||||
We use very specific labels to help categorise our issues. This page explains what each label means.
|
||||
@@ -52,7 +52,7 @@ Staff members working on these issues must adhere to all relevant confidentialit
|
||||
|
||||
### 1.4 Disclaimer
|
||||
|
||||
Labels are assigned based on the project maintainers' best judgment but may not guarantee the exact level of difficulty or access requirements for every contributor. Contributors should use their discretion and communicate with project maintainers if they have any doubts about their ability to address an issue or comply with any associated legal requirements.
|
||||
Labels are assigned based on the project maintainers' best judgement but may not guarantee the exact level of difficulty or access requirements for every contributor. Contributors should use their discretion and communicate with project maintainers if they have any doubts about their ability to address an issue or comply with any associated legal requirements.
|
||||
|
||||
## 2. Aspect Labels
|
||||
|
||||
|
||||
@@ -6,19 +6,7 @@ hero:
|
||||
tagline:
|
||||
This site contains all of the documentation related to NHCarrigan, its Policies, and its Projects.
|
||||
actions:
|
||||
- text: Mission Statement
|
||||
- text: Let's Go!
|
||||
link: /about/mission/
|
||||
variant: secondary
|
||||
- text: Code of Conduct
|
||||
link: /community/coc/
|
||||
variant: secondary
|
||||
- text: Contributing Guide
|
||||
link: /dev/contributing/
|
||||
variant: secondary
|
||||
- text: Software License
|
||||
link: /legal/license/
|
||||
variant: secondary
|
||||
- text: Contact Us
|
||||
link: /about/contact/
|
||||
variant: secondary
|
||||
---
|
||||
|
||||
@@ -0,0 +1,715 @@
|
||||
---
|
||||
title: Acceptable Use Policy
|
||||
---
|
||||
|
||||
**DEFINING ACCEPTABLE AND PROHIBITED USAGE OF OUR SERVICES AND PLATFORMS**
|
||||
|
||||
## 1. INTRODUCTION AND SCOPE
|
||||
|
||||
### 1.1 Policy Purpose
|
||||
|
||||
This Acceptable Use Policy ("AUP") establishes comprehensive guidelines for the appropriate use of all services, applications, and platforms provided by nhcarrigan ("we," "us," "our," or "the Company"). This AUP supplements our Terms of Service and other applicable policies to provide detailed guidance on acceptable and prohibited usage patterns.
|
||||
|
||||
### 1.2 Scope of Application
|
||||
|
||||
This AUP applies to all users of our Services, including:
|
||||
|
||||
**(a)** All websites, web applications, and online platforms operated by nhcarrigan;
|
||||
|
||||
**(b)** Application Programming Interfaces (APIs) and related development tools;
|
||||
|
||||
**(c)** Community forums, chat platforms, and interactive services;
|
||||
|
||||
**(d)** Mobile applications and desktop software;
|
||||
|
||||
**(e)** Support services, documentation, and auxiliary platforms;
|
||||
|
||||
**(f)** Any other services, platforms, or tools provided by nhcarrigan.
|
||||
|
||||
### 1.3 Integration with Other Policies
|
||||
|
||||
This AUP operates in conjunction with our comprehensive policy framework:
|
||||
|
||||
**(a)** Our Terms of Service, which establish the fundamental legal relationship;
|
||||
|
||||
**(b)** Our Community Code of Conduct, which governs community interactions;
|
||||
|
||||
**(c)** Our Privacy Policy, which governs data collection and processing;
|
||||
|
||||
**(d)** Our Service Level Agreement and Warranty Disclaimer, which define service expectations and warranties;
|
||||
|
||||
**(e)** Our Content and Moderation Policy, which establishes detailed content standards and moderation procedures;
|
||||
|
||||
**(f)** Our Limitation of Liability and Indemnification Policy, which governs all liability and risk allocation matters;
|
||||
|
||||
**(g)** Our Export Control and Sanctions Compliance Policy, which governs international trade compliance;
|
||||
|
||||
**(h)** Our API Terms and Conditions, which govern developer and API services;
|
||||
|
||||
**(i)** Any additional service-specific terms or conditions that may apply.
|
||||
|
||||
Where conflicts arise between policies, the most restrictive terms shall apply to ensure maximum protection for all users and our organisation.
|
||||
|
||||
### 1.4 Acceptance and Compliance
|
||||
|
||||
By accessing or using any of our Services, you acknowledge that you have read, understood, and agree to comply with this AUP. Continued use of the Services constitutes ongoing acceptance of these terms and any modifications we may make.
|
||||
|
||||
## 2. GENERAL ACCEPTABLE USE PRINCIPLES
|
||||
|
||||
### 2.1 Fundamental Usage Principles
|
||||
|
||||
All use of our Services must be consistent with the following principles:
|
||||
|
||||
**(a)** **Lawful Purpose**: Services may only be used for lawful purposes in accordance with all applicable laws and regulations;
|
||||
|
||||
**(b)** **Good Faith**: Users must engage with Services and other users in good faith and with honest intent;
|
||||
|
||||
**(c)** **Respectful Interaction**: All interactions must demonstrate respect for other users, our staff, and the broader community;
|
||||
|
||||
**(d)** **Resource Responsibility**: Users must use system resources responsibly and not engage in activities that degrade performance for other users;
|
||||
|
||||
**(e)** **Security Awareness**: Users must take reasonable precautions to maintain security and report potential security issues.
|
||||
|
||||
### 2.2 Community Standards
|
||||
|
||||
Our Services are designed to foster positive, inclusive communities. All usage must:
|
||||
|
||||
**(a)** **Promote Inclusivity**: Support welcoming environments for users from diverse backgrounds;
|
||||
|
||||
**(b)** **Encourage Learning**: Facilitate educational experiences and knowledge sharing;
|
||||
|
||||
**(c)** **Support Collaboration**: Enable productive collaboration and constructive dialogue;
|
||||
|
||||
**(d)** **Maintain Quality**: Contribute to high-quality discussions and content;
|
||||
|
||||
**(e)** **Respect Boundaries**: Acknowledge and respect other users' boundaries and preferences.
|
||||
|
||||
### 2.3 Ethical Usage Requirements
|
||||
|
||||
Users are expected to:
|
||||
|
||||
**(a)** **Act with Integrity**: Conduct themselves honestly and transparently in all interactions;
|
||||
|
||||
**(b)** **Respect Privacy**: Protect the privacy and personal information of other users;
|
||||
|
||||
**(c)** **Honour Intellectual Property**: Respect copyright, trademark, and other intellectual property rights;
|
||||
|
||||
**(d)** **Avoid Harm**: Refrain from activities that could cause harm to individuals or organisations;
|
||||
|
||||
**(e)** **Take Responsibility**: Accept responsibility for the consequences of their actions and usage.
|
||||
|
||||
## 3. PROHIBITED ACTIVITIES AND CONTENT
|
||||
|
||||
### 3.1 Illegal Activities
|
||||
|
||||
Users are strictly prohibited from using our Services for:
|
||||
|
||||
**(a)** **Criminal Activity**: Any activity that violates criminal laws in any applicable jurisdiction;
|
||||
|
||||
**(b)** **Fraud and Deception**: Fraudulent schemes, identity theft, impersonation, or deceptive practices;
|
||||
|
||||
**(c)** **Money Laundering**: Any activity designed to obscure the source of illegally obtained funds;
|
||||
|
||||
**(d)** **Tax Evasion**: Activities designed to evade tax obligations or facilitate tax fraud;
|
||||
|
||||
**(e)** **Regulatory Violations**: Activities that violate financial, securities, or other regulatory requirements;
|
||||
|
||||
**(f)** **Export Control and Sanctions Violations**: Activities that violate export control laws or sanctions programmes as detailed in our Export Control and Sanctions Compliance Policy;
|
||||
|
||||
**(g)** **Drug-Related Crimes**: Sale, distribution, or promotion of illegal drugs or controlled substances;
|
||||
|
||||
**(h)** **Human Trafficking**: Any form of human trafficking or exploitation.
|
||||
|
||||
### 3.2 Abuse and Harassment
|
||||
|
||||
Our Services may not be used for:
|
||||
|
||||
**(a)** **Personal Harassment**: Targeting individuals with repeated unwanted contact or attention;
|
||||
|
||||
**(b)** **Cyberbullying**: Deliberate and repeated hostile behaviour intended to harm others;
|
||||
|
||||
**(c)** **Doxxing**: Publishing private personal information without consent;
|
||||
|
||||
**(d)** **Stalking**: Following or tracking individuals without their consent;
|
||||
|
||||
**(e)** **Threats**: Making threats of violence or other harmful actions;
|
||||
|
||||
**(f)** **Intimidation**: Using our Services to intimidate or coerce others;
|
||||
|
||||
**(g)** **Hate Speech**: Content that promotes violence or hatred based on protected characteristics;
|
||||
|
||||
**(h)** **Discrimination**: Content or behaviour that discriminates against individuals or groups.
|
||||
|
||||
### 3.3 Spam and Unsolicited Communications
|
||||
|
||||
Prohibited spam and unsolicited communication activities include:
|
||||
|
||||
**(a)** **Mass Messaging**: Sending unsolicited bulk messages or communications;
|
||||
|
||||
**(b)** **Commercial Spam**: Unsolicited advertising or promotional materials;
|
||||
|
||||
**(c)** **Phishing**: Attempts to obtain sensitive information through deceptive means;
|
||||
|
||||
**(d)** **Chain Letters**: Pyramid schemes, chain letters, or similar viral content;
|
||||
|
||||
**(e)** **Bot Networks**: Operating networks of automated accounts for spam or manipulation;
|
||||
|
||||
**(f)** **Content Flooding**: Overwhelming channels or forums with repetitive or irrelevant content;
|
||||
|
||||
**(g)** **Harvesting**: Collecting user information for unsolicited marketing or communication;
|
||||
|
||||
**(h)** **Referral Abuse**: Manipulating referral or affiliate programmes through deceptive means.
|
||||
|
||||
### 3.4 Technical Abuse and Security Violations
|
||||
|
||||
Users may not engage in:
|
||||
|
||||
**(a)** **Unauthorised Access**: Attempting to access systems, accounts, or data without proper authorisation;
|
||||
|
||||
**(b)** **System Disruption**: Activities designed to disrupt, disable, or overload our Services;
|
||||
|
||||
**(c)** **Malware Distribution**: Uploading, transmitting, or distributing malicious software;
|
||||
|
||||
**(d)** **Vulnerability Exploitation**: Exploiting security vulnerabilities for unauthorised purposes;
|
||||
|
||||
**(e)** **Denial of Service**: Launching attacks designed to make services unavailable;
|
||||
|
||||
**(f)** **Traffic Manipulation**: Artificially inflating metrics or manipulating usage statistics;
|
||||
|
||||
**(g)** **Reverse Engineering**: Unauthorised reverse engineering of our software or systems;
|
||||
|
||||
**(h)** **Circumvention**: Bypassing security measures, access controls, or usage limitations.
|
||||
|
||||
### 3.5 Intellectual Property Violations
|
||||
|
||||
Prohibited intellectual property violations include:
|
||||
|
||||
**(a)** **Copyright Infringement**: Unauthorised use, reproduction, or distribution of copyrighted material;
|
||||
|
||||
**(b)** **Trademark Misuse**: Unauthorised use of trademarks or service marks;
|
||||
|
||||
**(c)** **Patent Infringement**: Use of patented inventions without proper licensing;
|
||||
|
||||
**(d)** **Trade Secret Theft**: Misappropriation of confidential business information;
|
||||
|
||||
**(e)** **Plagiarism**: Presenting others' work as your own without proper attribution;
|
||||
|
||||
**(f)** **Licence Violations**: Using software or content in violation of licensing terms;
|
||||
|
||||
**(g)** **Counterfeit Goods**: Promotion or distribution of counterfeit products;
|
||||
|
||||
**(h)** **False Attribution**: Misrepresenting the source or ownership of intellectual property.
|
||||
|
||||
### 3.6 Harmful Content
|
||||
|
||||
**Reference to Content and Moderation Policy**: Detailed standards for prohibited content, including violent, adult, exploitative, and harmful content, are comprehensively covered in our Content and Moderation Policy, which is incorporated herein by reference.
|
||||
|
||||
Users may not upload, share, or distribute any content that violates the standards set forth in our Content and Moderation Policy.
|
||||
|
||||
## 4. SPECIFIC PLATFORM USAGE GUIDELINES
|
||||
|
||||
### 4.1 Community Platform Usage
|
||||
|
||||
When using our community forums, chat services, and interactive platforms:
|
||||
|
||||
**(a)** **Stay On Topic**: Keep discussions relevant to designated channels or forums;
|
||||
|
||||
**(b)** **Use Appropriate Channels**: Post content in appropriate sections or categories;
|
||||
|
||||
**(c)** **Respect Moderation**: Follow moderator instructions and respect community decisions;
|
||||
|
||||
**(d)** **Quality Contributions**: Contribute meaningfully to discussions rather than posting low-quality content;
|
||||
|
||||
**(e)** **Search Before Posting**: Check for existing discussions before creating new topics;
|
||||
|
||||
**(f)** **Constructive Criticism**: Provide helpful, constructive feedback rather than destructive criticism;
|
||||
|
||||
**(g)** **Citation and Attribution**: Properly cite sources and give credit when sharing others' work;
|
||||
|
||||
**(h)** **Language Standards**: Use clear, respectful language appropriate for the community context.
|
||||
|
||||
### 4.2 API and Development Tool Usage
|
||||
|
||||
When using our APIs and development tools:
|
||||
|
||||
**(a)** **Rate Limit Compliance**: Respect all rate limits and usage quotas;
|
||||
|
||||
**(b)** **Authentication**: Properly authenticate all requests and protect API credentials;
|
||||
|
||||
**(c)** **Error Handling**: Implement proper error handling and retry logic;
|
||||
|
||||
**(d)** **Caching**: Use appropriate caching to reduce unnecessary API calls;
|
||||
|
||||
**(e)** **Documentation**: Follow published API documentation and best practices;
|
||||
|
||||
**(f)** **Testing**: Use appropriate testing environments rather than production systems;
|
||||
|
||||
**(g)** **Monitoring**: Monitor usage patterns to ensure compliance with limits;
|
||||
|
||||
**(h)** **Updates**: Stay informed about API changes and update implementations accordingly.
|
||||
|
||||
### 4.3 Content Submission and Sharing
|
||||
|
||||
When submitting or sharing content through our Services:
|
||||
|
||||
**(a)** **Original Work**: Ensure you have the right to share any content you submit;
|
||||
|
||||
**(b)** **Accurate Information**: Provide accurate and truthful information;
|
||||
|
||||
**(c)** **Appropriate Categorisation**: Categorise and tag content appropriately;
|
||||
|
||||
**(d)** **Content Warnings**: Provide appropriate warnings for potentially sensitive content;
|
||||
|
||||
**(e)** **Copyright Compliance**: Ensure all shared content complies with copyright law;
|
||||
|
||||
**(f)** **Privacy Respect**: Do not share others' private information without consent;
|
||||
|
||||
**(g)** **Quality Standards**: Maintain reasonable quality standards for shared content;
|
||||
|
||||
**(h)** **Community Guidelines**: Follow any specific guidelines for content types or categories.
|
||||
|
||||
## 5. COMMERCIAL AND BUSINESS USE
|
||||
|
||||
### 5.1 Permitted Commercial Activities
|
||||
|
||||
The following commercial activities are generally permitted when conducted in accordance with applicable terms:
|
||||
|
||||
**(a)** **Educational Services**: Providing educational content, training, or consulting services;
|
||||
|
||||
**(b)** **Open Source Development**: Contributing to or maintaining open source projects;
|
||||
|
||||
**(c)** **Community Building**: Building communities around products or services;
|
||||
|
||||
**(d)** **Content Creation**: Creating educational or informational content related to our services;
|
||||
|
||||
**(e)** **Legitimate Promotion**: Reasonable promotion of products or services relevant to community interests;
|
||||
|
||||
**(f)** **Professional Services**: Offering professional services related to our platforms or community;
|
||||
|
||||
**(g)** **Event Organisation**: Organising educational or community events;
|
||||
|
||||
**(h)** **Research Activities**: Conducting legitimate research or academic studies.
|
||||
|
||||
### 5.2 Prohibited Commercial Activities
|
||||
|
||||
The following commercial activities are prohibited:
|
||||
|
||||
**(a)** **Unauthorised Reselling**: Reselling or redistributing our services without authorisation;
|
||||
|
||||
**(b)** **Competitive Services**: Using our services to develop competing products or services;
|
||||
|
||||
**(c)** **Data Harvesting**: Collecting user data for commercial exploitation;
|
||||
|
||||
**(d)** **Spam Marketing**: Using our services for unsolicited marketing or advertising;
|
||||
|
||||
**(e)** **Fraudulent Schemes**: Operating fraudulent business schemes or scams;
|
||||
|
||||
**(f)** **Pyramid Schemes**: Promoting pyramid schemes or multi-level marketing scams;
|
||||
|
||||
**(g)** **Unauthorised Monetisation**: Monetising our services without proper authorisation;
|
||||
|
||||
**(h)** **Brand Confusion**: Using our brand or trademarks in ways that create confusion.
|
||||
|
||||
### 5.3 Commercial Use Authorisation
|
||||
|
||||
For commercial activities that may require special authorisation:
|
||||
|
||||
**(a)** **Written Permission**: Obtain written permission for activities not clearly covered by standard terms;
|
||||
|
||||
**(b)** **Licensing Agreements**: Enter into appropriate licensing agreements when required;
|
||||
|
||||
**(c)** **Revenue Sharing**: Comply with any revenue sharing requirements;
|
||||
|
||||
**(d)** **Brand Guidelines**: Follow brand usage guidelines for any use of our trademarks or logos;
|
||||
|
||||
**(e)** **Commercial Terms**: Agree to any additional commercial terms that may apply;
|
||||
|
||||
**(f)** **Regular Review**: Submit to regular review of commercial usage patterns;
|
||||
|
||||
**(g)** **Reporting Requirements**: Comply with any reporting requirements for commercial usage;
|
||||
|
||||
**(h)** **Termination Rights**: Acknowledge our right to terminate commercial arrangements.
|
||||
|
||||
## 6. RESOURCE USAGE AND PERFORMANCE
|
||||
|
||||
### 6.1 Fair Use of System Resources
|
||||
|
||||
Users must:
|
||||
|
||||
**(a)** **Reasonable Usage**: Use system resources reasonably and not excessively;
|
||||
|
||||
**(b)** **Efficient Operations**: Design applications and usage patterns for efficiency;
|
||||
|
||||
**(c)** **Resource Monitoring**: Monitor resource usage to avoid exceeding reasonable limits;
|
||||
|
||||
**(d)** **Optimisation**: Optimise code and queries for performance and resource efficiency;
|
||||
|
||||
**(e)** **Caching**: Implement appropriate caching to reduce server load;
|
||||
|
||||
**(f)** **Batch Operations**: Use batch operations rather than individual requests where appropriate;
|
||||
|
||||
**(g)** **Off-Peak Usage**: Schedule resource-intensive operations during off-peak hours when possible;
|
||||
|
||||
**(h)** **Graceful Degradation**: Implement graceful degradation when resources are limited.
|
||||
|
||||
### 6.2 Prohibited Resource Usage
|
||||
|
||||
The following resource usage patterns are prohibited:
|
||||
|
||||
**(a)** **Excessive Consumption**: Using disproportionate amounts of bandwidth, storage, or processing power;
|
||||
|
||||
**(b)** **Resource Hoarding**: Claiming or reserving resources not actively being used;
|
||||
|
||||
**(c)** **Intentional Overload**: Deliberately overloading systems or services;
|
||||
|
||||
**(d)** **Mining Activities**: Using our systems for cryptocurrency mining or similar activities;
|
||||
|
||||
**(e)** **Proxy Services**: Using our services as proxies or VPNs without authorisation;
|
||||
|
||||
**(f)** **Load Testing**: Conducting load testing or stress testing without prior approval;
|
||||
|
||||
**(g)** **Automated Scraping**: Automated scraping or crawling beyond reasonable limits;
|
||||
|
||||
**(h)** **Storage Abuse**: Using storage services for inappropriate content or excessive backup purposes.
|
||||
|
||||
### 6.3 Performance Impact Mitigation
|
||||
|
||||
To minimise performance impact on other users:
|
||||
|
||||
**(a)** **Rate Limiting**: Implement client-side rate limiting to avoid overwhelming services;
|
||||
|
||||
**(b)** **Error Handling**: Implement proper error handling to avoid retry storms;
|
||||
|
||||
**(c)** **Connection Management**: Properly manage connections and avoid connection leaks;
|
||||
|
||||
**(d)** **Data Compression**: Use appropriate data compression for network transfers;
|
||||
|
||||
**(e)** **Lazy Loading**: Implement lazy loading for non-critical resources;
|
||||
|
||||
**(f)** **Progress Monitoring**: Monitor long-running operations for completion and errors;
|
||||
|
||||
**(g)** **Timeout Handling**: Implement appropriate timeouts for all operations;
|
||||
|
||||
**(h)** **Resource Cleanup**: Properly clean up resources after use.
|
||||
|
||||
## 7. DATA HANDLING AND PRIVACY
|
||||
|
||||
### 7.1 Personal Data Protection
|
||||
|
||||
Users must:
|
||||
|
||||
**(a)** **Consent Requirements**: Obtain proper consent before collecting or processing personal data;
|
||||
|
||||
**(b)** **Data Minimisation**: Collect only the minimum data necessary for stated purposes;
|
||||
|
||||
**(c)** **Purpose Limitation**: Use personal data only for the purposes for which it was collected;
|
||||
|
||||
**(d)** **Security Measures**: Implement appropriate security measures to protect personal data;
|
||||
|
||||
**(e)** **Retention Limits**: Retain personal data only for as long as necessary;
|
||||
|
||||
**(f)** **Access Rights**: Respect individuals' rights to access, correct, and delete their data;
|
||||
|
||||
**(g)** **Breach Notification**: Promptly report any suspected data breaches or security incidents;
|
||||
|
||||
**(h)** **Legal Compliance**: Comply with all applicable data protection laws and regulations.
|
||||
|
||||
### 7.2 Prohibited Data Practices
|
||||
|
||||
Users may not:
|
||||
|
||||
**(a)** **Unauthorised Collection**: Collect personal data without proper legal basis;
|
||||
|
||||
**(b)** **Data Scraping**: Scrape or harvest user data from our services;
|
||||
|
||||
**(c)** **Profile Building**: Build user profiles without explicit consent;
|
||||
|
||||
**(d)** **Data Sale**: Sell or monetise personal data obtained through our services;
|
||||
|
||||
**(e)** **Cross-Platform Tracking**: Track users across multiple platforms without consent;
|
||||
|
||||
**(f)** **Sensitive Data**: Process sensitive personal data without explicit consent and proper safeguards;
|
||||
|
||||
**(g)** **Data Sharing**: Share personal data with third parties without proper consent;
|
||||
|
||||
**(h)** **Retention Abuse**: Retain personal data longer than necessary or permitted.
|
||||
|
||||
### 7.3 Data Security Requirements
|
||||
|
||||
When handling data through our services:
|
||||
|
||||
**(a)** **Encryption**: Use appropriate encryption for data in transit and at rest;
|
||||
|
||||
**(b)** **Access Controls**: Implement proper access controls and authentication;
|
||||
|
||||
**(c)** **Audit Logging**: Maintain audit logs of data access and processing activities;
|
||||
|
||||
**(d)** **Backup Security**: Ensure backups are properly secured and encrypted;
|
||||
|
||||
**(e)** **Incident Response**: Have appropriate incident response procedures in place;
|
||||
|
||||
**(f)** **Regular Updates**: Keep systems updated with security patches;
|
||||
|
||||
**(g)** **Vulnerability Management**: Regularly assess and address security vulnerabilities;
|
||||
|
||||
**(h)** **Staff Training**: Ensure staff are trained on data security best practices.
|
||||
|
||||
## 8. ENFORCEMENT AND COMPLIANCE
|
||||
|
||||
### 8.1 Monitoring and Detection
|
||||
|
||||
We employ various methods to monitor compliance with this AUP:
|
||||
|
||||
**(a)** **Automated Monitoring**: Automated systems to detect prohibited activities;
|
||||
|
||||
**(b)** **User Reporting**: Community reporting mechanisms for policy violations;
|
||||
|
||||
**(c)** **Manual Review**: Human review of reported content and activities;
|
||||
|
||||
**(d)** **Pattern Analysis**: Analysis of usage patterns to identify potential violations;
|
||||
|
||||
**(e)** **Security Scanning**: Regular security scans to identify malicious activities;
|
||||
|
||||
**(f)** **Performance Monitoring**: Monitoring for unusual resource usage patterns;
|
||||
|
||||
**(g)** **Content Analysis**: Analysis of submitted content for policy compliance;
|
||||
|
||||
**(h)** **Behavioural Analysis**: Monitoring for suspicious or harmful behavioural patterns.
|
||||
|
||||
### 8.2 Violation Response Procedures
|
||||
|
||||
When violations are identified, we may take the following actions:
|
||||
|
||||
**(a)** **Warning**: Issue formal warnings about policy violations;
|
||||
|
||||
**(b)** **Content Removal**: Remove violating content from our services;
|
||||
|
||||
**(c)** **Account Suspension**: Temporarily suspend user accounts;
|
||||
|
||||
**(d)** **Feature Restrictions**: Restrict access to specific features or services;
|
||||
|
||||
**(e)** **Rate Limiting**: Implement additional rate limits for abusive usage;
|
||||
|
||||
**(f)** **Account Termination**: Permanently terminate user accounts for serious violations;
|
||||
|
||||
**(g)** **Legal Action**: Pursue legal remedies for serious violations or continued non-compliance;
|
||||
|
||||
**(h)** **Law Enforcement**: Report criminal activities to appropriate law enforcement agencies.
|
||||
|
||||
### 8.3 Progressive Enforcement
|
||||
|
||||
Our enforcement approach generally follows a progressive model:
|
||||
|
||||
**(a)** **First Violation**: Education and warning about policy requirements;
|
||||
|
||||
**(b)** **Second Violation**: Formal warning with specific corrective actions required;
|
||||
|
||||
**(c)** **Third Violation**: Temporary suspension with mandatory policy review;
|
||||
|
||||
**(d)** **Continued Violations**: Permanent account termination and service exclusion;
|
||||
|
||||
**(e)** **Serious Violations**: Immediate severe penalties for violations that pose significant risk;
|
||||
|
||||
**(f)** **Criminal Activity**: Immediate termination and law enforcement referral;
|
||||
|
||||
**(g)** **Security Threats**: Immediate protective measures and account restrictions;
|
||||
|
||||
**(h)** **Repeated Offenders**: Enhanced penalties for users with previous violation history.
|
||||
|
||||
### 8.4 Appeals and Review
|
||||
|
||||
Users may appeal enforcement actions through:
|
||||
|
||||
**(a)** **Appeals Process**: Formal appeals process as outlined in our Community Appeals Policy;
|
||||
|
||||
**(b)** **Evidence Submission**: Opportunity to provide evidence and explanations;
|
||||
|
||||
**(c)** **Independent Review**: Review by staff members not involved in the original decision;
|
||||
|
||||
**(d)** **Corrective Actions**: Opportunity to take corrective actions to address violations;
|
||||
|
||||
**(e)** **Account Restoration**: Possible account restoration for successfully appealed actions;
|
||||
|
||||
**(f)** **Policy Clarification**: Clarification of policy requirements and expectations;
|
||||
|
||||
**(g)** **Education Opportunities**: Additional education about policy compliance;
|
||||
|
||||
**(h)** **Ongoing Monitoring**: Enhanced monitoring for users with violation history.
|
||||
|
||||
## 9. REPORTING VIOLATIONS
|
||||
|
||||
### 9.1 Community Reporting
|
||||
|
||||
We encourage users to report policy violations through:
|
||||
|
||||
**(a)** **Report Features**: Built-in reporting features within our applications and platforms;
|
||||
|
||||
**(b)** **Email Reporting**: Direct email reports to abuse@nhcarrigan.com;
|
||||
|
||||
**(c)** **Community Moderators**: Reports to designated community moderators;
|
||||
|
||||
**(d)** **Support Channels**: Reports through general support channels with appropriate categorisation;
|
||||
|
||||
**(e)** **Anonymous Reporting**: Anonymous reporting options where technically feasible;
|
||||
|
||||
**(f)** **Urgent Reports**: Expedited reporting for urgent safety or security issues;
|
||||
|
||||
**(g)** **Documentation**: Detailed documentation of violations with supporting evidence;
|
||||
|
||||
**(h)** **Follow-up**: Follow-up communication about report status and outcomes.
|
||||
|
||||
### 9.2 What to Include in Reports
|
||||
|
||||
Effective violation reports should include:
|
||||
|
||||
**(a)** **Specific Details**: Clear description of the violating behaviour or content;
|
||||
|
||||
**(b)** **Policy Reference**: Reference to specific policy provisions that were violated;
|
||||
|
||||
**(c)** **Evidence**: Screenshots, logs, or other evidence supporting the report;
|
||||
|
||||
**(d)** **Context**: Relevant context that helps understand the violation;
|
||||
|
||||
**(e)** **Impact**: Description of harm or potential harm caused by the violation;
|
||||
|
||||
**(f)** **User Information**: Information about the violating user or account;
|
||||
|
||||
**(g)** **Time and Date**: When the violation occurred;
|
||||
|
||||
**(h)** **Contact Information**: Your contact information for follow-up questions.
|
||||
|
||||
### 9.3 Reporter Protection
|
||||
|
||||
We are committed to protecting users who report violations:
|
||||
|
||||
**(a)** **Confidentiality**: Reporter information is kept confidential to the extent possible;
|
||||
|
||||
**(b)** **No Retaliation**: We prohibit retaliation against users who make good-faith reports;
|
||||
|
||||
**(c)** **Anonymous Options**: Anonymous reporting options where technically feasible;
|
||||
|
||||
**(d)** **Privacy Protection**: Reporter identity is not disclosed to alleged violators;
|
||||
|
||||
**(e)** **Support Services**: Support for users who experience harassment for reporting violations;
|
||||
|
||||
**(f)** **Legal Protection**: Legal support for reporters facing retaliation;
|
||||
|
||||
**(g)** **Community Support**: Community support for users who report serious violations;
|
||||
|
||||
**(h)** **Safe Environment**: Commitment to maintaining safe environments for reporting violations.
|
||||
|
||||
## 10. POLICY UPDATES AND MODIFICATIONS
|
||||
|
||||
### 10.1 Right to Modify
|
||||
|
||||
We reserve the right to modify this AUP at any time to:
|
||||
|
||||
**(a)** **Address New Risks**: Respond to emerging security threats or abuse patterns;
|
||||
|
||||
**(b)** **Legal Compliance**: Ensure compliance with changing laws and regulations;
|
||||
|
||||
**(c)** **Service Evolution**: Reflect changes in our services and technology;
|
||||
|
||||
**(d)** **Community Feedback**: Incorporate feedback from users and community members;
|
||||
|
||||
**(e)** **Best Practices**: Align with evolving industry best practices;
|
||||
|
||||
**(f)** **Clarification**: Clarify ambiguous provisions based on enforcement experience;
|
||||
|
||||
**(g)** **Coverage Expansion**: Expand coverage to address previously unaddressed issues;
|
||||
|
||||
**(h)** **Effectiveness**: Improve the effectiveness of policy enforcement.
|
||||
|
||||
### 10.2 Notification of Changes
|
||||
|
||||
Material changes to this AUP will be communicated through:
|
||||
|
||||
**(a)** **Website Notice**: Prominent notice on our primary website;
|
||||
|
||||
**(b)** **Email Notification**: Direct notification to registered users where contact information is available;
|
||||
|
||||
**(c)** **In-Service Notifications**: Notifications within our applications and platforms;
|
||||
|
||||
**(d)** **Community Announcements**: Announcements in community forums and channels;
|
||||
|
||||
**(e)** **Policy Updates Page**: Dedicated page documenting policy changes and their rationale;
|
||||
|
||||
**(f)** **Version History**: Maintained version history of policy changes;
|
||||
|
||||
**(g)** **Effective Date Notice**: Clear indication of when changes become effective;
|
||||
|
||||
**(h)** **Transition Periods**: Reasonable transition periods for compliance with new requirements.
|
||||
|
||||
### 10.3 User Response to Changes
|
||||
|
||||
Following notification of policy changes:
|
||||
|
||||
**(a)** **Review Period**: Users have reasonable time to review changes before they take effect;
|
||||
|
||||
**(b)** **Continued Use**: Continued use of services constitutes acceptance of modified terms;
|
||||
|
||||
**(c)** **Opt-Out Rights**: Users may discontinue service use if they disagree with changes;
|
||||
|
||||
**(d)** **Feedback Opportunities**: Opportunities to provide feedback about proposed changes;
|
||||
|
||||
**(e)** **Clarification Requests**: Users may request clarification about policy changes;
|
||||
|
||||
**(f)** **Compliance Timeline**: Reasonable timeline for bringing existing usage into compliance;
|
||||
|
||||
**(g)** **Support Resources**: Additional support resources to help understand and comply with changes;
|
||||
|
||||
**(h)** **Grandfathering**: Consideration of grandfathering provisions for existing legitimate usage.
|
||||
|
||||
## 11. CONTACT INFORMATION AND SUPPORT
|
||||
|
||||
### 11.1 Policy Questions and Clarifications
|
||||
|
||||
For questions about this AUP:
|
||||
|
||||
**Email:** aup@nhcarrigan.com
|
||||
|
||||
**Subject Line:** AUP Inquiry - [Brief Description]
|
||||
|
||||
**Response Time:** Within 3 business days for policy clarification requests
|
||||
|
||||
### 11.2 Violation Reporting
|
||||
|
||||
To report policy violations:
|
||||
|
||||
**Email:** abuse@nhcarrigan.com
|
||||
|
||||
**Subject Line:** Policy Violation Report - [Service/Platform]
|
||||
|
||||
**Response Time:** Within 24 hours for urgent safety issues, 48 hours for standard reports
|
||||
|
||||
### 11.3 Appeals and Disputes
|
||||
|
||||
For appeals related to AUP enforcement:
|
||||
|
||||
**Email:** appeals@nhcarrigan.com
|
||||
|
||||
**Subject Line:** AUP Appeal - [Account/Case Reference]
|
||||
|
||||
**Process:** Follow our Community Appeals Policy procedures
|
||||
|
||||
### 11.4 Technical Support
|
||||
|
||||
For technical issues related to policy compliance:
|
||||
|
||||
**Email:** support@nhcarrigan.com
|
||||
|
||||
**Community Forum:** https://forum.nhcarrigan.com
|
||||
|
||||
**Response Time:** Within 48 hours for technical support requests
|
||||
|
||||
**Document Version:** 1.0
|
||||
|
||||
**Last Updated:** 15 September 2025
|
||||
|
||||
**Effective Date:** 15 September 2025
|
||||
|
||||
**Next Review Date:** 15 September 2026
|
||||
|
||||
---
|
||||
|
||||
*This Acceptable Use Policy establishes comprehensive guidelines for appropriate use of our services. By using our Services, you agree to comply with these usage standards and acknowledge that violations may result in service restrictions or termination. For questions about acceptable use or to report violations, please contact us at aup@nhcarrigan.com.*
|
||||
@@ -0,0 +1,456 @@
|
||||
---
|
||||
title: Community Growth Policy
|
||||
---
|
||||
|
||||
**ETHICAL COMMUNITY GROWTH GUIDELINES AND FRAMEWORK**
|
||||
|
||||
## 1. POLICY OVERVIEW AND COMMITMENT
|
||||
|
||||
### 1.1 Growth Philosophy and Values
|
||||
|
||||
This Community Growth Policy establishes ethical guidelines for how community members can contribute to sustainable, values-aligned community growth. Our approach prioritizes quality relationships over quantity metrics, emphasizing authentic connection, mutual support, and alignment with our core values of social justice, inclusivity, and community empowerment.
|
||||
|
||||
### 1.2 Core Growth Principles
|
||||
|
||||
**Values-Driven Growth:**
|
||||
- **Quality Over Quantity**: Focus on meaningful connections rather than numerical growth
|
||||
- **Authentic Engagement**: Genuine interest in community values and participation
|
||||
- **Mutual Benefit**: Growth that benefits both new and existing community members
|
||||
- **Sustainable Practices**: Growth approaches that support long-term community health
|
||||
- **Inclusive Representation**: Prioritizing diversity and representation in growth efforts
|
||||
|
||||
**Anti-Exploitation Stance:**
|
||||
- **No Predatory Recruitment**: Reject targeting vulnerable individuals for growth purposes
|
||||
- **Transparent Intentions**: Honest communication about community expectations and culture
|
||||
- **Consent-Based Engagement**: Respect for individual choice in community participation
|
||||
- **Boundary Respect**: Recognition of personal and cultural boundaries in outreach efforts
|
||||
- **Community Autonomy**: Support for community self-determination and organic growth
|
||||
|
||||
### 1.3 Integration with Community Values
|
||||
|
||||
**Social Justice Alignment:**
|
||||
- **Anti-Oppression Focus**: Growth efforts that actively support marginalized communities
|
||||
- **Accessibility Prioritization**: Ensuring growth includes people with diverse abilities and needs
|
||||
- **Economic Justice**: Growth that doesn't exclude people based on economic circumstances
|
||||
- **Environmental Responsibility**: Sustainable growth practices that minimize environmental impact
|
||||
- **Democratic Participation**: Growth that strengthens rather than dilutes community democracy
|
||||
|
||||
## 2. INDIVIDUAL MEMBER GROWTH CONTRIBUTIONS
|
||||
|
||||
### 2.1 Personal Network Outreach
|
||||
|
||||
#### 2.1.1 Authentic Relationship Building
|
||||
|
||||
**Effective Outreach Approaches:**
|
||||
- **Share Personal Experiences**: Talk about what the community means to you personally
|
||||
- **Highlight Value Alignment**: Focus on how community values align with friends' interests
|
||||
- **Demonstrate Impact**: Share concrete examples of positive community impact
|
||||
- **Invite Participation**: Invite engagement rather than demanding commitment
|
||||
- **Respect Decisions**: Accept and respect when people aren't interested
|
||||
|
||||
**Relationship-Centred Approach:**
|
||||
- **Know Your Audience**: Understand what aspects of the community might appeal to specific individuals
|
||||
- **Personal Connection**: Build on existing relationships and shared values
|
||||
- **Gradual Introduction**: Allow people to learn about the community at their own pace
|
||||
- **Support Integration**: Help new members find their place and feel welcome
|
||||
- **Long-Term Perspective**: Focus on sustainable relationships rather than quick conversions
|
||||
|
||||
#### 2.1.2 Community Representation
|
||||
|
||||
**Positive Community Representation:**
|
||||
- **Authentic Engagement**: Represent the community accurately and honestly
|
||||
- **Values Demonstration**: Model community values in your interactions
|
||||
- **Inclusive Language**: Use language that welcomes diverse participation
|
||||
- **Cultural Competency**: Represent the community's commitment to cultural responsiveness
|
||||
- **Accessible Communication**: Ensure your communication is accessible to diverse audiences
|
||||
|
||||
**Avoiding Harmful Practices:**
|
||||
- **No Pressure Tactics**: Avoid high-pressure recruitment or manipulation
|
||||
- **Respect Boundaries**: Don't persist when someone expresses disinterest
|
||||
- **Honest Communication**: Don't misrepresent community culture or expectations
|
||||
- **No Exploitation**: Don't target people in vulnerable situations for recruitment purposes
|
||||
- **Privacy Respect**: Don't share private information about community members or discussions
|
||||
|
||||
### 2.2 Content Creation and Sharing
|
||||
|
||||
#### 2.2.1 Values-Aligned Content
|
||||
|
||||
**Effective Content Strategies:**
|
||||
- **Educational Resources**: Create content that educates about issues the community cares about
|
||||
- **Community Stories**: Share positive stories about community impact and member experiences
|
||||
- **Resource Compilation**: Curate helpful resources that align with community values
|
||||
- **Skill Sharing**: Share knowledge and skills that benefit broader communities
|
||||
- **Advocacy Content**: Create content that supports social justice and community values
|
||||
|
||||
**Platform-Specific Approaches:**
|
||||
- **Discord**: Share invites thoughtfully with context about what people can expect
|
||||
- **Reddit**: Participate authentically in relevant subreddits while mentioning community when appropriate
|
||||
- **Bluesky/Twitter**: Share community content and values-aligned information with appropriate hashtags
|
||||
- **LinkedIn**: Professional content that demonstrates community values in professional contexts
|
||||
- **GitHub**: Technical contributions and documentation that showcase community technical work
|
||||
- **YouTube**: Educational or informational content that represents community values
|
||||
|
||||
#### 2.2.2 Ethical Content Practices
|
||||
|
||||
**Content Quality Standards:**
|
||||
- **Accuracy**: Ensure all content is accurate and well-researched
|
||||
- **Accessibility**: Create content that is accessible to diverse audiences
|
||||
- **Cultural Sensitivity**: Content that is respectful of diverse cultural perspectives
|
||||
- **Privacy Protection**: Respect privacy of community members in content creation
|
||||
- **Value Alignment**: All content should align with and represent community values
|
||||
|
||||
**Avoiding Problematic Content:**
|
||||
- **No Misleading Information**: Don't misrepresent community culture or membership benefits
|
||||
- **Avoid Exclusive Language**: Don't create content that excludes or marginalizes potential members
|
||||
- **No Exploitation**: Don't exploit community participation for personal gain
|
||||
- **Respect Boundaries**: Don't share private community discussions or member information
|
||||
- **Quality Control**: Don't create low-quality content that reflects poorly on the community
|
||||
|
||||
### 2.3 Event Participation and Hosting
|
||||
|
||||
#### 2.3.1 Community Event Involvement
|
||||
|
||||
**Effective Event Participation:**
|
||||
- **Active Engagement**: Participate meaningfully in community events and activities
|
||||
- **Inclusive Facilitation**: Help create welcoming environments for new participants
|
||||
- **Skill Sharing**: Contribute your skills and knowledge to community events
|
||||
- **Accessibility Support**: Help ensure events are accessible to diverse participants
|
||||
- **Follow-Up Engagement**: Connect with new participants after events to support integration
|
||||
|
||||
**Event Hosting and Organization:**
|
||||
- **Values Integration**: Ensure all events reflect and support community values
|
||||
- **Accessibility Planning**: Plan events that are accessible to people with diverse needs
|
||||
- **Inclusive Environment**: Create environments where diverse participants feel welcome
|
||||
- **Educational Component**: Include educational elements that support community growth
|
||||
- **Community Benefit**: Focus on events that benefit both community and broader society
|
||||
|
||||
#### 2.3.2 External Event Representation
|
||||
|
||||
**Community Representation at External Events:**
|
||||
- **Conference Participation**: Represent the community at relevant conferences and gatherings
|
||||
- **Workshop Facilitation**: Offer workshops that showcase community values and approach
|
||||
- **Panel Participation**: Participate in panels that advance community values and visibility
|
||||
- **Networking Events**: Network authentically while representing community values
|
||||
- **Educational Presentations**: Present about community work and impact
|
||||
|
||||
**Best Practices for External Representation:**
|
||||
- **Prepared Materials**: Have materials ready that accurately represent the community
|
||||
- **Value Alignment**: Ensure representation aligns with community values and messaging
|
||||
- **Inclusive Invitation**: Invite diverse participation rather than targeting specific demographics
|
||||
- **Follow-Up Systems**: Have systems in place to follow up with interested individuals
|
||||
- **Community Coordination**: Coordinate with community leadership about external representation
|
||||
|
||||
## 3. ORGANIZATIONAL GROWTH STRATEGIES
|
||||
|
||||
### 3.1 Partnership Development
|
||||
|
||||
#### 3.1.1 Values-Aligned Partnerships
|
||||
|
||||
**Strategic Partnership Criteria:**
|
||||
- **Shared Values**: Partner organizations must share core social justice values
|
||||
- **Complementary Mission**: Partnerships should enhance rather than compromise community mission
|
||||
- **Mutual Benefit**: Partnerships should benefit all involved parties
|
||||
- **Community Input**: Community members should have input on significant partnership decisions
|
||||
- **Ethical Practices**: Partner organizations must demonstrate ethical practices and accountability
|
||||
|
||||
**Partnership Development Process:**
|
||||
- **Due Diligence**: Thorough research on potential partner organizations and their practices
|
||||
- **Community Discussion**: Open community discussion about proposed partnerships
|
||||
- **Trial Collaboration**: Start with small collaborative projects before formal partnerships
|
||||
- **Regular Evaluation**: Ongoing evaluation of partnership effectiveness and alignment
|
||||
- **Exit Strategies**: Clear processes for ending partnerships that no longer serve community values
|
||||
|
||||
#### 3.1.2 Cross-Platform Collaboration
|
||||
|
||||
**Multi-Platform Growth Strategies:**
|
||||
- **Discord Integration**: Leverage Discord community for growth across other platforms
|
||||
- **Reddit Community Building**: Build authentic presence in relevant Reddit communities
|
||||
- **Social Media Coordination**: Coordinated presence across Bluesky, Twitter, and LinkedIn
|
||||
- **GitHub Collaboration**: Technical collaboration that demonstrates community values
|
||||
- **Gaming Community Integration**: Authentic participation in gaming communities like Guild Wars 2
|
||||
|
||||
**Platform-Specific Best Practices:**
|
||||
- **Platform Culture Respect**: Understand and respect the culture of each platform
|
||||
- **Authentic Participation**: Participate genuinely rather than just promoting community
|
||||
- **Value Demonstration**: Demonstrate community values through platform participation
|
||||
- **Community Building**: Focus on building authentic communities rather than just followers
|
||||
- **Cross-Pollination**: Encourage organic connections between platform communities
|
||||
|
||||
### 3.2 Targeted Outreach and Recruitment
|
||||
|
||||
#### 3.2.1 Diversity-Centred Recruitment
|
||||
|
||||
**Priority Communities:**
|
||||
- **Marginalized Identities**: Prioritize outreach to communities that are underrepresented in tech and social justice spaces
|
||||
- **Geographic Diversity**: Seek geographic diversity while respecting cultural differences
|
||||
- **Economic Accessibility**: Ensure growth includes people from diverse economic backgrounds
|
||||
- **Accessibility Needs**: Actively recruit people with disabilities and diverse accessibility needs
|
||||
- **Age Diversity**: Welcome participation across age groups and generational perspectives
|
||||
|
||||
**Culturally Responsive Outreach:**
|
||||
- **Cultural Competency**: Develop cultural competency for outreach to diverse communities
|
||||
- **Language Accessibility**: Provide materials in multiple languages when possible
|
||||
- **Cultural Sensitivity**: Respect cultural differences in communication and participation styles
|
||||
- **Community Liaisons**: Work with community members who have connections to underrepresented communities
|
||||
- **Safe Space Creation**: Ensure outreach creates genuinely safe spaces for marginalized individuals
|
||||
|
||||
#### 3.2.2 Interest-Based Community Building
|
||||
|
||||
**Skill and Interest Alignment:**
|
||||
- **Technical Communities**: Outreach to technical communities interested in ethical technology
|
||||
- **Social Justice Organizations**: Connection with organizations working on related social justice issues
|
||||
- **Gaming Communities**: Authentic participation in gaming communities with shared values
|
||||
- **Educational Institutions**: Outreach to educational communities interested in community building
|
||||
- **Professional Networks**: Engagement with professional networks focused on ethical practices
|
||||
|
||||
**Community Need Identification:**
|
||||
- **Gap Analysis**: Identify gaps in community representation and expertise
|
||||
- **Skill Mapping**: Map community needs to potential recruitment priorities
|
||||
- **Interest Surveys**: Survey community members about areas where growth would be beneficial
|
||||
- **Capacity Assessment**: Assess community capacity for integrating new members effectively
|
||||
- **Resource Planning**: Ensure adequate resources for supporting community growth
|
||||
|
||||
### 3.3 Brand Development and Messaging
|
||||
|
||||
#### 3.3.1 Community Identity and Values Communication
|
||||
|
||||
**Brand Messaging Principles:**
|
||||
- **Authenticity**: All messaging should authentically represent community culture and values
|
||||
- **Accessibility**: Communication should be accessible to diverse audiences
|
||||
- **Inclusivity**: Messaging should welcome diverse participation and representation
|
||||
- **Impact Focus**: Emphasize concrete community impact and social justice work
|
||||
- **Community Voice**: Brand should reflect diverse community voices rather than single perspectives
|
||||
|
||||
**Consistent Messaging Across Platforms:**
|
||||
- **Core Values**: Consistent communication of core values across all platforms
|
||||
- **Community Culture**: Accurate representation of community culture and expectations
|
||||
- **Impact Stories**: Consistent sharing of community impact and member stories
|
||||
- **Accessibility Information**: Clear information about community accessibility and inclusion efforts
|
||||
- **Participation Options**: Clear information about different ways to participate and contribute
|
||||
|
||||
#### 3.3.2 Marketing Ethics and Transparency
|
||||
|
||||
**Ethical Marketing Practices:**
|
||||
- **Honest Representation**: Never misrepresent community culture, benefits, or expectations
|
||||
- **Transparent Communication**: Be clear about community structures, expectations, and limitations
|
||||
- **Consent-Based Marketing**: Respect privacy and obtain consent for marketing communications
|
||||
- **Cultural Sensitivity**: Ensure marketing is culturally sensitive and appropriate
|
||||
- **Accessibility Compliance**: Ensure all marketing materials meet accessibility standards
|
||||
|
||||
**Avoiding Problematic Practices:**
|
||||
- **No False Promises**: Don't promise benefits or outcomes that cannot be guaranteed
|
||||
- **No Exploitation**: Don't exploit personal stories or community member experiences without consent
|
||||
- **No Pressure Tactics**: Avoid high-pressure marketing or manipulation techniques
|
||||
- **No Exclusive Claims**: Don't claim to be the only or best option for community or social justice work
|
||||
- **No Privacy Violations**: Never use private member information for marketing purposes without explicit consent
|
||||
|
||||
## 4. COMMUNITY INTEGRATION AND SUPPORT
|
||||
|
||||
### 4.1 New Member Onboarding
|
||||
|
||||
#### 4.1.1 Welcoming and Orientation Process
|
||||
|
||||
**Comprehensive Onboarding:**
|
||||
- **Welcome Systems**: Systematic welcome processes for new members across all platforms
|
||||
- **Orientation Resources**: Clear orientation materials that explain community culture and expectations
|
||||
- **Mentor Assignment**: Connection with experienced community members for guidance and support
|
||||
- **Platform Training**: Assistance with navigating different community platforms and tools
|
||||
- **Value Integration**: Education about community values and how they guide participation
|
||||
|
||||
**Accessibility-Focused Integration:**
|
||||
- **Accommodation Assessment**: Assessment of accessibility needs and accommodation provision
|
||||
- **Multiple Participation Options**: Information about different ways to participate based on capacity and interest
|
||||
- **Communication Preferences**: Respect for different communication styles and preferences
|
||||
- **Flexible Engagement**: Recognition that engagement levels and styles vary among community members
|
||||
- **Support Systems**: Connection to appropriate support systems and resources
|
||||
|
||||
#### 4.1.2 Community Culture Integration
|
||||
|
||||
**Cultural Assimilation Support:**
|
||||
- **Community Norms**: Education about community norms, expectations, and culture
|
||||
- **Conflict Resolution**: Training on community conflict resolution and communication approaches
|
||||
- **Value Application**: Practical guidance on applying community values in daily participation
|
||||
- **Relationship Building**: Facilitation of relationship building with established community members
|
||||
- **Feedback Systems**: Systems for new members to provide feedback on their integration experience
|
||||
|
||||
**Ongoing Support Systems:**
|
||||
- **Check-In Processes**: Regular check-ins with new members during their first months
|
||||
- **Issue Resolution**: Clear processes for addressing problems or concerns during integration
|
||||
- **Participation Encouragement**: Encouragement and support for active community participation
|
||||
- **Leadership Development**: Pathways for new members to develop leadership skills and take on responsibilities
|
||||
- **Community Investment**: Support for new members to develop investment in community success
|
||||
|
||||
### 4.2 Retention and Engagement
|
||||
|
||||
#### 4.2.1 Sustainable Participation
|
||||
|
||||
**Long-Term Engagement Strategies:**
|
||||
- **Meaningful Participation**: Opportunities for community members to contribute meaningfully
|
||||
- **Personal Growth**: Support for personal growth and development within the community
|
||||
- **Leadership Development**: Pathways for community members to develop and exercise leadership
|
||||
- **Skill Building**: Opportunities to build skills that benefit both individuals and community
|
||||
- **Impact Visibility**: Clear communication about community impact and member contributions
|
||||
|
||||
**Preventing Burnout and Over-Engagement:**
|
||||
- **Boundary Support**: Support for community members to maintain healthy boundaries
|
||||
- **Capacity Recognition**: Recognition that participation capacity varies and changes over time
|
||||
- **Rest and Recovery**: Normalization of breaks and reduced engagement periods
|
||||
- **Sustainable Volunteerism**: Sustainable approaches to volunteer engagement and responsibility
|
||||
- **Well-Being Priority**: Prioritization of member well-being over community productivity
|
||||
|
||||
#### 4.2.2 Community Evolution and Adaptation
|
||||
|
||||
**Growth-Responsive Community Development:**
|
||||
- **Culture Preservation**: Maintaining community culture and values while accommodating growth
|
||||
- **Structure Adaptation**: Adapting community structures to serve larger and more diverse membership
|
||||
- **Democracy Protection**: Ensuring growth doesn't undermine democratic participation and decision-making
|
||||
- **Quality Maintenance**: Maintaining community quality and values during periods of rapid growth
|
||||
- **Change Management**: Effective management of changes that come with community growth
|
||||
|
||||
**Member Voice and Participation:**
|
||||
- **Democratic Processes**: Maintaining democratic processes for community decision-making
|
||||
- **Feedback Integration**: Regular integration of member feedback into community evolution
|
||||
- **Representation**: Ensuring diverse member representation in community leadership and decision-making
|
||||
- **Conflict Resolution**: Effective conflict resolution processes that scale with community growth
|
||||
- **Community Self-Determination**: Support for community self-determination and autonomous development
|
||||
|
||||
## 5. SUSTAINABILITY AND IMPACT MEASUREMENT
|
||||
|
||||
### 5.1 Growth Sustainability
|
||||
|
||||
#### 5.1.1 Resource Management and Planning
|
||||
|
||||
**Capacity Planning:**
|
||||
- **Resource Assessment**: Regular assessment of community capacity to support new members
|
||||
- **Infrastructure Scaling**: Scaling community infrastructure to accommodate growth
|
||||
- **Support System Expansion**: Expanding support systems to serve larger membership
|
||||
- **Leadership Development**: Developing additional community leadership to support growth
|
||||
- **Quality Maintenance**: Ensuring growth doesn't compromise community quality or values
|
||||
|
||||
**Environmental and Social Sustainability:**
|
||||
- **Environmental Impact**: Consideration of environmental impact of community growth
|
||||
- **Social Impact**: Measurement of social impact and community benefit
|
||||
- **Economic Sustainability**: Sustainable economic approaches to community operations
|
||||
- **Cultural Sustainability**: Preservation of community culture and values during growth
|
||||
- **Member Well-Being**: Prioritization of member well-being in growth planning
|
||||
|
||||
#### 5.1.2 Growth Rate Management
|
||||
|
||||
**Sustainable Growth Pacing:**
|
||||
- **Organic Growth Priority**: Prioritization of organic growth over rapid expansion
|
||||
- **Integration Capacity**: Growth that matches community capacity to integrate new members effectively
|
||||
- **Quality Maintenance**: Growth pacing that maintains community quality and member experience
|
||||
- **Resource Alignment**: Growth that aligns with available resources and support capacity
|
||||
- **Community Input**: Community input on appropriate growth rates and targets
|
||||
|
||||
### 5.2 Impact Assessment and Measurement
|
||||
|
||||
#### 5.2.1 Community Health Metrics
|
||||
|
||||
**Quantitative Measures:**
|
||||
- **Member Engagement**: Measurement of member engagement and participation across platforms
|
||||
- **Retention Rates**: Analysis of member retention and reasons for leaving
|
||||
- **Diversity Metrics**: Measurement of community diversity across relevant dimensions
|
||||
- **Accessibility Participation**: Assessment of participation by community members with accessibility needs
|
||||
- **Geographic Distribution**: Analysis of geographic diversity and global participation
|
||||
|
||||
**Qualitative Assessment:**
|
||||
- **Member Satisfaction**: Regular surveys and feedback collection on member experience
|
||||
- **Community Culture**: Assessment of community culture health and values alignment
|
||||
- **Impact Stories**: Collection and analysis of member stories about community impact
|
||||
- **Conflict Resolution**: Analysis of conflict resolution effectiveness and community harmony
|
||||
- **Values Integration**: Assessment of how well community values are integrated in daily practice
|
||||
|
||||
#### 5.2.2 External Impact Measurement
|
||||
|
||||
**Social Justice Impact:**
|
||||
- **Advocacy Effectiveness**: Measurement of community advocacy and social justice impact
|
||||
- **Policy Influence**: Assessment of community influence on relevant policies and practices
|
||||
- **Education and Awareness**: Measurement of community educational impact and awareness raising
|
||||
- **Resource Provision**: Assessment of resources provided to members and broader communities
|
||||
- **Partnership Impact**: Evaluation of impact through partnerships and collaborations
|
||||
|
||||
**Community Contribution:**
|
||||
- **Open Source Contributions**: Measurement of community contributions to open source and public goods
|
||||
- **Knowledge Sharing**: Assessment of community knowledge sharing and educational contributions
|
||||
- **Innovation Development**: Measurement of community innovation and technological contributions
|
||||
- **Cultural Impact**: Assessment of community cultural impact and representation
|
||||
- **Movement Building**: Evaluation of community contribution to broader social justice movements
|
||||
|
||||
## 6. ACCOUNTABILITY AND CONTINUOUS IMPROVEMENT
|
||||
|
||||
### 6.1 Growth Practice Evaluation
|
||||
|
||||
#### 6.1.1 Regular Assessment and Review
|
||||
|
||||
**Growth Strategy Review:**
|
||||
- **Quarterly Assessments**: Regular quarterly review of growth strategies and effectiveness
|
||||
- **Community Feedback**: Integration of community feedback into growth practice evaluation
|
||||
- **Impact Analysis**: Analysis of growth impact on community culture and member experience
|
||||
- **Resource Effectiveness**: Assessment of resource allocation effectiveness for growth activities
|
||||
- **Value Alignment**: Regular evaluation of growth practice alignment with community values
|
||||
|
||||
**Adaptation and Improvement:**
|
||||
- **Strategy Modification**: Modification of growth strategies based on evaluation results
|
||||
- **Best Practice Development**: Development of best practices based on successful growth approaches
|
||||
- **Problem Resolution**: Address problems and challenges identified in growth practices
|
||||
- **Innovation Integration**: Integration of innovative approaches to community growth
|
||||
- **Learning Documentation**: Documentation of lessons learned for future growth planning
|
||||
|
||||
#### 6.1.2 Community Accountability
|
||||
|
||||
**Transparent Reporting:**
|
||||
- **Growth Reports**: Regular reports to community on growth activities and results
|
||||
- **Resource Allocation**: Transparent reporting on resource allocation for growth activities
|
||||
- **Challenge Communication**: Honest communication about growth challenges and setbacks
|
||||
- **Success Celebration**: Recognition and celebration of successful growth initiatives
|
||||
- **Member Recognition**: Recognition of community members who contribute to ethical growth
|
||||
|
||||
**Democratic Oversight:**
|
||||
- **Community Input**: Regular community input on growth strategies and priorities
|
||||
- **Democratic Decision-Making**: Democratic decision-making about significant growth initiatives
|
||||
- **Accountability Mechanisms**: Clear accountability mechanisms for growth-related decisions
|
||||
- **Conflict Resolution**: Processes for resolving conflicts related to growth practices
|
||||
- **Value Enforcement**: Enforcement of community values in all growth activities
|
||||
|
||||
### 6.2 Continuous Learning and Innovation
|
||||
|
||||
#### 6.2.1 Best Practice Development
|
||||
|
||||
**Internal Learning:**
|
||||
- **Experience Documentation**: Documentation of growth experiences and lessons learned
|
||||
- **Success Analysis**: Analysis of successful growth approaches and their replication
|
||||
- **Challenge Resolution**: Development of approaches to common growth challenges
|
||||
- **Member Insight**: Integration of member insights and perspectives into growth practices
|
||||
- **Cultural Evolution**: Understanding of how community culture evolves with growth
|
||||
|
||||
**External Learning:**
|
||||
- **Community Research**: Research into best practices from other ethical communities
|
||||
- **Academic Integration**: Integration of relevant academic research on community building
|
||||
- **Movement Learning**: Learning from broader social justice and community building movements
|
||||
- **Technology Integration**: Appropriate integration of new technologies for community growth
|
||||
- **Innovation Adoption**: Adoption of innovative approaches to ethical community building
|
||||
|
||||
#### 6.2.2 Future Planning and Vision
|
||||
|
||||
**Long-Term Vision Development:**
|
||||
- **Community Vision**: Development of long-term vision for community growth and impact
|
||||
- **Strategic Planning**: Strategic planning for sustainable community development
|
||||
- **Impact Goals**: Setting and working toward long-term social impact goals
|
||||
- **Innovation Integration**: Planning for integration of emerging technologies and approaches
|
||||
- **Movement Contribution**: Planning for community contribution to broader social justice movements
|
||||
|
||||
**Adaptive Planning:**
|
||||
- **Scenario Planning**: Planning for different potential future scenarios and community needs
|
||||
- **Flexibility Maintenance**: Maintaining flexibility to adapt to changing circumstances and opportunities
|
||||
- **Crisis Preparedness**: Planning for potential crises and their impact on community growth
|
||||
- **Opportunity Readiness**: Preparation to take advantage of opportunities for positive growth
|
||||
- **Values Consistency**: Ensuring all future planning maintains consistency with community values
|
||||
|
||||
---
|
||||
|
||||
*This Community Growth Policy establishes ethical guidelines for sustainable, values-aligned community growth. It works in conjunction with our Community Support Policy, Crisis and Mental Health Management Policy, and staff training materials to ensure holistic community development. All growth activities should prioritize quality relationships, authentic engagement, and alignment with social justice values over numerical metrics or rapid expansion.*
|
||||
|
||||
**Document Version**: 1.0
|
||||
**Last Updated**: 25 September 2025
|
||||
**Next Review Date**: 25 March 2026
|
||||
@@ -0,0 +1,560 @@
|
||||
---
|
||||
title: Community Support Policy
|
||||
---
|
||||
|
||||
**COMMUNITY SUPPORT FRAMEWORK AND GUIDELINES**
|
||||
|
||||
## 1. POLICY OVERVIEW AND PURPOSE
|
||||
|
||||
### 1.1 Policy Statement
|
||||
|
||||
This Community Support Policy establishes the framework for how community members can both seek and provide support within our community ecosystem. This policy is designed to create a safe, inclusive, and mutually supportive environment that honours our values of social justice, accessibility, and community empowerment while maintaining appropriate boundaries and safety standards.
|
||||
|
||||
### 1.2 Integration with Community Values
|
||||
|
||||
**Core Principles:**
|
||||
- **Mutual Support**: Community members support each other through shared experiences and knowledge
|
||||
- **Trauma-Informed Approach**: Recognition that many community members may have experienced trauma
|
||||
- **Inclusive Access**: Support is available to all community members regardless of identity, ability, or circumstances
|
||||
- **Boundary Respect**: Clear boundaries between peer support and professional services
|
||||
- **Safety First**: Protection of vulnerable community members and support providers
|
||||
- **Cultural Responsiveness**: Respect for diverse cultural approaches to support and healing
|
||||
|
||||
### 1.3 Scope and Application
|
||||
|
||||
This policy applies to all forms of support exchange within our community platforms, including:
|
||||
- Discord channels and direct messages
|
||||
- Forums and discussion boards
|
||||
- Reddit community spaces
|
||||
- Social media interactions
|
||||
- GitHub collaborative spaces
|
||||
- Guild Wars 2 guild interactions
|
||||
- LinkedIn professional networking
|
||||
- Any other community-operated platforms
|
||||
|
||||
## 2. SEEKING SUPPORT WITHIN THE COMMUNITY
|
||||
|
||||
### 2.1 Types of Community Support Available
|
||||
|
||||
#### 2.1.1 Peer Support Categories
|
||||
|
||||
**Emotional and Social Support:**
|
||||
- Listening and empathy from community members with shared experiences
|
||||
- Connection with others who understand similar challenges
|
||||
- Celebration of achievements and milestones
|
||||
- Social interaction and friendship building
|
||||
- Community during difficult times
|
||||
|
||||
**Informational and Resource Support:**
|
||||
- Sharing of knowledge, resources, and information
|
||||
- Guidance on community platforms and tools
|
||||
- Technical assistance and troubleshooting
|
||||
- Educational support and learning opportunities
|
||||
- Resource referrals and recommendations
|
||||
|
||||
**Technical Product Support:**
|
||||
- Assistance with community-developed software and tools
|
||||
- Bug reporting and troubleshooting for community applications
|
||||
- Feature requests and enhancement suggestions
|
||||
- Documentation clarification and improvement
|
||||
- API usage guidance and integration support
|
||||
- Open source contribution guidance and code review
|
||||
|
||||
**Practical Support:**
|
||||
- Assistance with community projects and initiatives
|
||||
- Collaborative problem-solving on shared challenges
|
||||
- Skill sharing and mentorship opportunities
|
||||
- Accessibility assistance and accommodation support
|
||||
- Platform-specific guidance and orientation
|
||||
|
||||
#### 2.1.2 Specialized Support Areas
|
||||
|
||||
**Identity-Based Support:**
|
||||
- Support groups for specific identities and experiences
|
||||
- Culturally responsive support for marginalized communities
|
||||
- LGBTQ+ affirming support and resources
|
||||
- Neurodiversity-affirming spaces and assistance
|
||||
- Support for survivors of various forms of trauma
|
||||
|
||||
**Professional and Educational Support:**
|
||||
- Career development guidance and networking
|
||||
- Educational resource sharing and study groups
|
||||
- Professional skill development and mentorship
|
||||
- Open source contribution guidance
|
||||
- Technical learning and development support
|
||||
|
||||
**Technical Product and Development Support:**
|
||||
- Community software and application troubleshooting
|
||||
- Development environment setup and configuration
|
||||
- Code review and programming mentorship
|
||||
- API documentation and implementation guidance
|
||||
- Bug triage and feature development collaboration
|
||||
|
||||
**Technical Product and Development Support:**
|
||||
- Community software and application troubleshooting
|
||||
- Development environment setup and configuration
|
||||
- Code review and programming mentorship
|
||||
- API documentation and implementation guidance
|
||||
- Bug triage and feature development collaboration
|
||||
|
||||
### 2.2 How to Seek Support
|
||||
|
||||
#### 2.2.1 Identifying Appropriate Support Channels
|
||||
|
||||
**Platform-Specific Guidelines:**
|
||||
- **Discord**: Use designated support channels (#general-support, #tech-help) or reach out to trusted community members
|
||||
- **Forums**: Create posts in appropriate categories with clear, descriptive titles
|
||||
- **Reddit**: Utilize community-specific support threads and appropriate flair
|
||||
- **GitHub**: Use issue templates for bug reports, feature requests, and technical support
|
||||
- **Social Media**: Engage appropriately with community hashtags and threads
|
||||
|
||||
**Support Request Best Practices:**
|
||||
- **Be Specific**: Clearly describe what type of support you're seeking (emotional, technical, informational, etc.)
|
||||
- **Provide Context**: Include relevant details, error messages, or screenshots for technical issues
|
||||
- **Respect Boundaries**: Understand that community members are volunteers with limited capacity
|
||||
- **Use Appropriate Channels**: Choose the right platform and channel for your specific need
|
||||
- **Be Patient**: Allow time for community members to respond and engage
|
||||
- **Show Appreciation**: Acknowledge and thank those who provide support
|
||||
- **Follow Up**: Update the community on resolution or continued needs when appropriate
|
||||
|
||||
#### 2.2.2 Technical Support Specific Guidelines
|
||||
|
||||
**For Product and Development Issues:**
|
||||
- **Include System Information**: Provide relevant system details (OS, browser version, device type)
|
||||
- **Reproduce the Issue**: Document steps to reproduce the problem consistently
|
||||
- **Check Documentation First**: Review available documentation and FAQs before requesting help
|
||||
- **Provide Error Messages**: Include complete error messages and stack traces when available
|
||||
- **Share Code Snippets**: For integration issues, provide relevant code snippets (sanitized of sensitive data)
|
||||
- **Version Information**: Specify which version of the product or API you're using
|
||||
- **Expected vs Actual**: Clearly describe what you expected to happen versus what actually occurred
|
||||
|
||||
**Best Practices for Technical Support Requests:**
|
||||
- **Use Appropriate Templates**: Follow issue templates or forum formats when available
|
||||
- **Search Existing Issues**: Check if your issue has already been reported or resolved
|
||||
- **One Issue Per Request**: Keep support requests focused on a single problem
|
||||
- **Provide Screenshots**: Include screenshots or screen recordings when they help illustrate the issue
|
||||
- **Test Environment**: Specify if you're using development, staging, or production environments
|
||||
- **Recent Changes**: Note any recent changes to your setup that might be related to the issue
|
||||
|
||||
#### 2.2.3 Emergency and Crisis Support
|
||||
|
||||
**Important Limitations:**
|
||||
- Community members are **NOT** mental health professionals
|
||||
- Peer support does **NOT** replace professional mental health services
|
||||
- For mental health emergencies, contact professional crisis services immediately
|
||||
- Community support is supplemental to, not a replacement for, professional care
|
||||
|
||||
**Crisis Resource Integration:**
|
||||
- Immediate connection to crisis hotlines and professional services
|
||||
- Clear escalation procedures for serious concerns
|
||||
- Staff notification protocols for safety concerns
|
||||
- Integration with our Crisis and Mental Health Management Policy
|
||||
- Resource databases for professional services and emergency support
|
||||
|
||||
### 2.3 Receiving Support Effectively
|
||||
|
||||
#### 2.3.1 Engagement Guidelines
|
||||
|
||||
**Active Participation:**
|
||||
- **Communicate Clearly**: Share what you need and what would be helpful
|
||||
- **Be Open to Different Perspectives**: Community members bring diverse experiences and viewpoints
|
||||
- **Respect Advice Boundaries**: Understand the difference between peer support and professional advice
|
||||
- **Engage Authentically**: Be genuine while maintaining appropriate privacy boundaries
|
||||
- **Follow Through**: Let supporters know how their assistance worked out when appropriate
|
||||
|
||||
**Privacy and Safety:**
|
||||
- **Share Appropriately**: Only share what you're comfortable having known by community members
|
||||
- **Maintain Boundaries**: You are not obligated to share personal details or follow all advice
|
||||
- **Report Concerns**: If support interactions become inappropriate, contact staff immediately
|
||||
- **Protect Others' Privacy**: Respect the privacy of others who may be mentioned in your support requests
|
||||
|
||||
#### 2.3.2 Managing Multiple Support Sources
|
||||
|
||||
**Coordination Strategies:**
|
||||
- **Professional Services First**: Prioritize professional mental health, medical, or legal services when needed
|
||||
- **Community Support as Supplement**: Use community support to complement, not replace, professional services
|
||||
- **Avoid Overwhelming Supporters**: Be mindful of the capacity and boundaries of community volunteers
|
||||
- **Update Supporters**: Let community supporters know when situations change or resolve
|
||||
|
||||
## 3. PROVIDING SUPPORT TO COMMUNITY MEMBERS
|
||||
|
||||
### 3.1 Peer Support Responsibilities and Boundaries
|
||||
|
||||
#### 3.1.1 Role Definition and Limitations
|
||||
|
||||
**What Peer Support IS:**
|
||||
- Sharing personal experiences and what has worked for you
|
||||
- Listening with empathy and without judgement
|
||||
- Providing resources and information from your own knowledge
|
||||
- Offering practical assistance within your capacity and expertise
|
||||
- Being present and available when you can be
|
||||
- Connecting people with others who might have relevant experience
|
||||
- Providing technical assistance with community products and tools
|
||||
- Helping troubleshoot software issues and bugs
|
||||
- Sharing knowledge about APIs, documentation, and development practices
|
||||
|
||||
**What Peer Support is NOT:**
|
||||
- Professional counselling, therapy, or mental health treatment
|
||||
- Medical advice or diagnosis of any kind
|
||||
- Legal advice or representation
|
||||
- Financial advice or monetary assistance commitments
|
||||
- Crisis intervention or emergency response services
|
||||
- Solutions to complex problems requiring professional expertise
|
||||
|
||||
#### 3.1.2 Professional Boundary Maintenance
|
||||
|
||||
**Clear Communication About Limitations:**
|
||||
- Always clarify that you are not a professional service provider
|
||||
- Acknowledge when questions or needs exceed peer support scope
|
||||
- Redirect to appropriate professional services when necessary
|
||||
- Be honest about your own knowledge limitations and experience boundaries
|
||||
- Avoid giving advice outside your areas of experience or expertise
|
||||
|
||||
### 3.2 Best Practices for Providing Support
|
||||
|
||||
#### 3.2.1 Effective Support Techniques
|
||||
|
||||
**Active Listening and Empathy:**
|
||||
- **Listen First**: Focus on understanding before trying to solve or advise
|
||||
- **Validate Experiences**: Acknowledge the person's feelings and experiences as valid
|
||||
- **Ask Questions**: Clarify what type of support the person is seeking
|
||||
- **Reflect Understanding**: Demonstrate that you understand what they're sharing
|
||||
- **Avoid Minimizing**: Don't downplay or dismiss concerns, even if they seem minor to you
|
||||
|
||||
**Resource Sharing and Information:**
|
||||
- **Share Relevant Experience**: Offer insights from your own similar experiences when appropriate
|
||||
- **Provide Resources**: Share helpful resources, websites, books, or tools you know about
|
||||
- **Make Connections**: Introduce people to others who might have relevant experience or expertise
|
||||
- **Follow Up**: Check in when appropriate to see how things are going
|
||||
- **Maintain Confidentiality**: Respect privacy and don't share personal details with others
|
||||
|
||||
#### 3.2.3 Technical Support Best Practices
|
||||
|
||||
**Troubleshooting Methodology:**
|
||||
- **Systematic Approach**: Work through problems systematically rather than jumping to conclusions
|
||||
- **Reproduce First**: Attempt to reproduce the issue yourself when possible
|
||||
- **Check Documentation**: Verify your understanding against official documentation
|
||||
- **Test Solutions**: Test suggested solutions in safe environments before recommending
|
||||
- **Know Your Limits**: Recognize when issues exceed your technical knowledge
|
||||
- **Escalate Appropriately**: Direct complex technical issues to maintainers or core developers
|
||||
|
||||
**Code and Integration Support:**
|
||||
- **Code Review Guidelines**: Provide constructive feedback on code snippets and implementations
|
||||
- **Security Awareness**: Be mindful of security implications in code suggestions
|
||||
- **Best Practice Sharing**: Share established best practices and coding standards
|
||||
- **Testing Recommendations**: Suggest appropriate testing approaches for implementations
|
||||
- **Performance Considerations**: Consider performance implications of suggested solutions
|
||||
- **Documentation Updates**: Help improve documentation when gaps are identified
|
||||
|
||||
**API and Product Support:**
|
||||
- **Version Compatibility**: Help users understand version requirements and compatibility
|
||||
- **Rate Limiting**: Educate users about API rate limits and best practices
|
||||
- **Authentication**: Assist with proper authentication and authorization setup
|
||||
- **Error Handling**: Help implement proper error handling and retry logic
|
||||
- **Integration Patterns**: Share common integration patterns and examples
|
||||
- **Deprecation Awareness**: Keep users informed about deprecated features and migration paths
|
||||
|
||||
#### 3.2.4 Cultural and Trauma-Informed Support
|
||||
|
||||
**Cultural Responsiveness:**
|
||||
- **Respect Differences**: Acknowledge that cultural backgrounds shape experiences and coping strategies
|
||||
- **Ask, Don't Assume**: Learn about individual preferences rather than making cultural assumptions
|
||||
- **Honour Different Approaches**: Respect that there are many valid ways to cope and heal
|
||||
- **Learn Continuously**: Be open to learning about experiences different from your own
|
||||
- **Address Your Limitations**: Acknowledge when cultural differences are outside your experience
|
||||
|
||||
**Trauma-Informed Approach:**
|
||||
- **Assume Possibility of Trauma**: Recognize that many people have experienced trauma
|
||||
- **Prioritize Safety**: Create interactions that feel safe and non-threatening
|
||||
- **Offer Choice and Control**: Let people make their own decisions about sharing and participation
|
||||
- **Emphasize Collaboration**: Work with people rather than directing or controlling their experience
|
||||
- **Build Trust**: Be reliable, consistent, and honest in your interactions
|
||||
|
||||
### 3.3 Support Provider Self-Care and Sustainability
|
||||
|
||||
#### 3.3.1 Managing Your Own Capacity
|
||||
|
||||
**Setting Healthy Boundaries:**
|
||||
- **Know Your Limits**: Be realistic about your time, energy, and emotional capacity
|
||||
- **Communicate Availability**: Be clear about when and how you're available to provide support
|
||||
- **Practice Saying No**: It's okay to decline support requests when you're not available or able
|
||||
- **Take Breaks**: Regular breaks from support provision are healthy and necessary
|
||||
- **Seek Your Own Support**: Support providers need support too - don't hesitate to seek it
|
||||
|
||||
**Preventing Burnout:**
|
||||
- **Distribute Support Load**: Encourage multiple people to provide support rather than taking everything on yourself
|
||||
- **Recognize Warning Signs**: Know the signs of emotional exhaustion and burnout
|
||||
- **Practice Self-Care**: Maintain your own well-being through whatever practices work for you
|
||||
- **Professional Support**: Seek professional support for your own challenges when needed
|
||||
- **Community Among Supporters**: Connect with other support providers for mutual support
|
||||
|
||||
#### 3.3.2 Handling Difficult Support Situations
|
||||
|
||||
**When to Escalate to Staff:**
|
||||
- **Safety Concerns**: Any indication of immediate danger to self or others
|
||||
- **Harassment or Abuse**: Inappropriate behavior during support interactions
|
||||
- **Professional Service Needs**: Situations clearly requiring professional intervention
|
||||
- **Boundary Violations**: When support requests become inappropriate or overwhelming
|
||||
- **Community Policy Violations**: Any behavior that violates community standards
|
||||
|
||||
**Managing Challenging Interactions:**
|
||||
- **Stay Calm**: Maintain composure even when interactions become difficult
|
||||
- **Redirect Appropriately**: Guide people to more appropriate resources when needed
|
||||
- **Document Concerns**: Keep records of concerning interactions for staff review
|
||||
- **Seek Consultation**: Ask staff or experienced community members for guidance when unsure
|
||||
- **Protect Yourself**: Prioritize your own safety and well-being in all interactions
|
||||
|
||||
## 4. PLATFORM-SPECIFIC SUPPORT GUIDELINES
|
||||
|
||||
### 4.1 Discord Support Protocols
|
||||
|
||||
#### 4.1.1 Channel Organization and Usage
|
||||
|
||||
**Designated Support Channels:**
|
||||
- **#support**: General questions and peer support requests
|
||||
- **#support-ticket**: Technical assistance and troubleshooting
|
||||
- **#accessibility**: Accessibility-related assistance and resources
|
||||
- **Identity-specific channels**: Support spaces for specific communities and identities
|
||||
|
||||
**Direct Message Guidelines:**
|
||||
- **Respect Consent**: Always ask before moving support to direct messages
|
||||
- **Maintain Documentation**: Keep records of concerning interactions for staff review
|
||||
- **Escalation Protocols**: Know when and how to involve Discord moderators and staff
|
||||
- **Privacy Protection**: Respect confidentiality while ensuring safety
|
||||
|
||||
#### 4.1.2 Discord-Specific Safety Measures
|
||||
|
||||
**Moderation Integration:**
|
||||
- **Staff Notification**: Clear processes for alerting staff to concerning situations
|
||||
- **Emergency Protocols**: Immediate escalation procedures for crisis situations
|
||||
- **Evidence Preservation**: Proper documentation of problematic interactions
|
||||
- **Community Protection**: Mechanisms for protecting vulnerable community members
|
||||
|
||||
### 4.2 Forum and Reddit Support
|
||||
|
||||
#### 4.2.1 Public Support Best Practices
|
||||
|
||||
**Post Guidelines:**
|
||||
- **Descriptive Titles**: Clear titles that indicate the type of support needed
|
||||
- **Appropriate Categorization**: Use correct flairs and categories for support requests
|
||||
- **Privacy Considerations**: Share only what you're comfortable being public
|
||||
- **Follow-Up Responsibility**: Update threads when situations resolve or change
|
||||
|
||||
**Response Guidelines:**
|
||||
- **Constructive Contributions**: Ensure responses are helpful and supportive
|
||||
- **Avoid Speculation**: Don't make assumptions or diagnose situations
|
||||
- **Resource Sharing**: Provide links to helpful resources and information
|
||||
- **Respectful Disagreement**: Handle differing perspectives constructively
|
||||
|
||||
#### 4.2.2 Community Upvoting and Visibility
|
||||
|
||||
**Helpful Content Promotion:**
|
||||
- **Upvote Helpful Responses**: Use voting systems to promote good support
|
||||
- **Share Valuable Resources**: Promote posts that provide helpful information
|
||||
- **Community Curation**: Help ensure quality support content is visible
|
||||
- **Constructive Feedback**: Provide feedback that improves support quality
|
||||
|
||||
### 4.3 Professional Platform Support (LinkedIn, GitHub)
|
||||
|
||||
#### 4.3.1 Professional Context Considerations
|
||||
|
||||
**LinkedIn Support:**
|
||||
- **Professional Boundaries**: Maintain appropriate professional boundaries
|
||||
- **Career Development**: Focus on career-related support and networking
|
||||
- **Skill Sharing**: Professional skill development and knowledge sharing
|
||||
- **Networking Ethics**: Responsible networking and professional relationship building
|
||||
|
||||
**GitHub Collaboration:**
|
||||
- **Technical Support**: Code-related assistance and collaboration
|
||||
- **Bug Reports and Issues**: Help with creating detailed bug reports and issue descriptions
|
||||
- **Pull Request Review**: Collaborative code review and improvement suggestions
|
||||
- **Open Source Contribution**: Guidance on contributing to projects
|
||||
- **Documentation Support**: Help with technical documentation and resources
|
||||
- **Learning Facilitation**: Supporting technical learning and development
|
||||
- **API Integration**: Assistance with integrating community APIs and services
|
||||
|
||||
#### 4.3.2 Code-Specific Technical Support
|
||||
|
||||
**Issue Management:**
|
||||
- **Issue Templates**: Use and help others use appropriate issue templates
|
||||
- **Label Usage**: Apply appropriate labels to categorize issues effectively
|
||||
- **Milestone Tracking**: Help track issues against project milestones and releases
|
||||
- **Duplicate Detection**: Identify and link duplicate issues to reduce fragmentation
|
||||
- **Triage Assistance**: Help maintainers triage and prioritize issues
|
||||
- **Resolution Documentation**: Document solutions and workarounds in issue comments
|
||||
|
||||
**Code Collaboration:**
|
||||
- **Fork and Branch Strategy**: Guide contributors through proper fork and branch workflows
|
||||
- **Commit Message Standards**: Help maintain consistent commit message formatting
|
||||
- **Code Style Compliance**: Assist with code style and linting requirements
|
||||
- **Testing Requirements**: Guide contributors through testing requirements and procedures
|
||||
- **CI/CD Pipeline**: Help troubleshoot continuous integration and deployment issues
|
||||
- **Release Process**: Support community members through release and deployment procedures
|
||||
|
||||
**Documentation and Knowledge Sharing:**
|
||||
- **README Improvements**: Help improve project README files and getting started guides
|
||||
- **Code Comments**: Encourage and assist with proper code documentation
|
||||
- **Wiki Maintenance**: Contribute to and maintain project wikis and knowledge bases
|
||||
- **Tutorial Creation**: Support creation of tutorials and learning materials
|
||||
- **FAQ Updates**: Help maintain and update frequently asked questions
|
||||
- **Example Code**: Provide and maintain example implementations and use cases
|
||||
|
||||
## 5. SAFETY AND RISK MANAGEMENT
|
||||
|
||||
### 5.1 Identifying and Managing Risk
|
||||
|
||||
#### 5.1.1 Risk Assessment for Support Situations
|
||||
|
||||
**High-Risk Indicators:**
|
||||
- **Immediate Safety Concerns**: Threats of self-harm or harm to others
|
||||
- **Crisis Situations**: Mental health crises requiring professional intervention
|
||||
- **Harassment or Abuse**: Reports of harassment, abuse, or exploitation
|
||||
- **Boundary Violations**: Repeated violations of support boundaries
|
||||
- **Professional Service Needs**: Situations requiring legal, medical, or mental health professionals
|
||||
- **Security Vulnerabilities**: Reports of security issues requiring immediate attention
|
||||
- **System Compromise**: Indications of compromised accounts or systems
|
||||
- **Data Breach Concerns**: Potential data security or privacy violations
|
||||
|
||||
**Escalation Protocols:**
|
||||
- **Immediate Staff Notification**: Contact staff immediately for high-risk situations
|
||||
- **Documentation Requirements**: Proper documentation of concerning interactions
|
||||
- **Resource Provision**: Connection to appropriate professional services
|
||||
- **Follow-Up Procedures**: Ongoing monitoring and support coordination
|
||||
- **Community Protection**: Measures to protect vulnerable community members
|
||||
|
||||
#### 5.1.3 Technical Support Risk Management
|
||||
|
||||
**Security-Related Support Risks:**
|
||||
- **Credential Exposure**: Prevent sharing of passwords, API keys, or other sensitive credentials in support channels
|
||||
- **Code Injection**: Be cautious of code suggestions that could introduce security vulnerabilities
|
||||
- **Malicious Code**: Screen for and prevent sharing of potentially malicious code or links
|
||||
- **Social Engineering**: Recognize and prevent social engineering attempts disguised as support requests
|
||||
- **Phishing Prevention**: Help community members identify and avoid phishing attempts
|
||||
|
||||
**Technical Support Safety Protocols:**
|
||||
- **Sandbox Testing**: Encourage testing of solutions in safe, isolated environments
|
||||
- **Backup Reminders**: Always recommend backups before making significant changes
|
||||
- **Production Warnings**: Clearly identify when suggestions should not be used in production
|
||||
- **Version Control**: Encourage use of version control for tracking changes
|
||||
- **Rollback Plans**: Help users understand how to reverse changes if needed
|
||||
- **Documentation Requirements**: Ensure critical changes are properly documented
|
||||
|
||||
#### 5.1.2 Community Safety Measures
|
||||
|
||||
**Protective Policies:**
|
||||
- **Harassment Prevention**: Clear policies preventing exploitation of vulnerable community members
|
||||
- **Privacy Protection**: Safeguarding personal information shared in support contexts
|
||||
- **Boundary Enforcement**: Enforcement of healthy boundaries between supporters and those seeking support
|
||||
- **Staff Oversight**: Regular staff monitoring and oversight of support interactions
|
||||
- **Community Feedback**: Mechanisms for reporting concerning support interactions
|
||||
|
||||
### 5.2 Crisis Intervention and Professional Referral
|
||||
|
||||
#### 5.2.1 Crisis Recognition and Response
|
||||
|
||||
**Crisis Identification:**
|
||||
- **Warning Signs**: Recognition of signs indicating professional intervention needs
|
||||
- **Risk Assessment**: Quick assessment of immediate safety concerns
|
||||
- **Appropriate Response**: Immediate connection to professional crisis services
|
||||
- **Staff Coordination**: Coordination with community staff for ongoing support
|
||||
- **Documentation**: Proper documentation for professional service providers
|
||||
|
||||
**Professional Service Integration:**
|
||||
- **Resource Databases**: Comprehensive databases of professional services
|
||||
- **Referral Processes**: Clear processes for connecting people to professional help
|
||||
- **Ongoing Coordination**: Coordination between community support and professional services
|
||||
- **Privacy Compliance**: Respect for privacy while ensuring safety
|
||||
- **Follow-Up Support**: Continued community support alongside professional services
|
||||
|
||||
#### 5.2.2 Legal and Ethical Obligations
|
||||
|
||||
**Mandatory Reporting:**
|
||||
- **Legal Requirements**: Compliance with local laws regarding mandatory reporting
|
||||
- **Child Protection**: Special procedures for situations involving minors
|
||||
- **Elder Abuse**: Protocols for elder abuse and exploitation situations
|
||||
- **Immediate Danger**: Procedures when someone is in immediate physical danger
|
||||
- **Law Enforcement Coordination**: Appropriate coordination with law enforcement when required
|
||||
|
||||
**Ethical Considerations:**
|
||||
- **Informed Consent**: Clear communication about limitations of community support
|
||||
- **Confidentiality Boundaries**: Understanding of when confidentiality must be broken
|
||||
- **Professional Scope**: Clear boundaries about what community members can and cannot provide
|
||||
- **Cultural Sensitivity**: Respect for cultural differences in approach to crisis and support
|
||||
- **Community Values**: Alignment of all crisis response with community values and principles
|
||||
|
||||
## 6. QUALITY ASSURANCE AND CONTINUOUS IMPROVEMENT
|
||||
|
||||
### 6.1 Support Quality Standards
|
||||
|
||||
#### 6.1.1 Effective Support Characteristics
|
||||
|
||||
**Quality Indicators:**
|
||||
- **Respectful Interaction**: All support interactions demonstrate respect and dignity
|
||||
- **Appropriate Boundaries**: Clear maintenance of peer support boundaries
|
||||
- **Resource Accuracy**: Accurate and helpful resource sharing
|
||||
- **Cultural Responsiveness**: Appropriate consideration of cultural differences
|
||||
- **Safety Awareness**: Recognition and appropriate handling of safety concerns
|
||||
- **Technical Accuracy**: Technically sound advice and solutions
|
||||
- **Security Consciousness**: Awareness of security implications in technical recommendations
|
||||
- **Documentation Quality**: Clear, accurate, and helpful technical documentation
|
||||
|
||||
**Feedback and Evaluation:**
|
||||
- **Community Feedback**: Regular feedback collection from support recipients
|
||||
- **Peer Evaluation**: Peer feedback among support providers
|
||||
- **Staff Review**: Regular staff review of support quality and safety
|
||||
- **Continuous Improvement**: Ongoing improvement of support practices and resources
|
||||
- **Training Updates**: Regular updates to support training and resources
|
||||
|
||||
#### 6.1.2 Resource Maintenance and Updates
|
||||
|
||||
**Resource Quality Assurance:**
|
||||
- **Regular Review**: Periodic review of shared resources for accuracy and relevance
|
||||
- **Community Input**: Community input on resource effectiveness and needs
|
||||
- **Professional Consultation**: Professional review of resource recommendations when appropriate
|
||||
- **Accessibility Assessment**: Regular assessment of resource accessibility
|
||||
- **Cultural Appropriateness**: Ongoing evaluation of cultural appropriateness of resources
|
||||
|
||||
### 6.2 Community Learning and Development
|
||||
|
||||
#### 6.2.1 Skill Building and Education
|
||||
|
||||
**Support Skills Development:**
|
||||
- **Peer Education**: Educational opportunities for improving support skills
|
||||
- **Cultural Competency**: Ongoing learning about cultural responsiveness
|
||||
- **Trauma-Informed Approaches**: Education about trauma-informed support practices
|
||||
- **Boundary Management**: Training on maintaining healthy support boundaries
|
||||
- **Crisis Recognition**: Education about recognizing crisis situations
|
||||
- **Technical Competency**: Ongoing learning about products, APIs, and technical systems
|
||||
- **Security Awareness**: Education about security best practices and threat recognition
|
||||
- **Code Review Skills**: Training on effective and constructive code review practices
|
||||
|
||||
**Resource Development:**
|
||||
- **Community-Generated Resources**: Support for community members creating helpful resources
|
||||
- **Best Practice Documentation**: Documentation of effective support practices
|
||||
- **Learning Opportunities**: Educational opportunities related to community support
|
||||
- **Skill Sharing**: Opportunities for community members to share relevant skills and knowledge
|
||||
- **Professional Development**: Support for community members pursuing relevant professional development
|
||||
|
||||
#### 6.2.2 Innovation and Improvement
|
||||
|
||||
**Support System Evolution:**
|
||||
- **New Approach Development**: Innovation in peer support approaches and methods
|
||||
- **Technology Integration**: Appropriate use of technology to improve support access and quality
|
||||
- **Community Needs Assessment**: Regular assessment of community support needs
|
||||
- **Best Practice Research**: Research into effective peer support practices
|
||||
- **Community Adaptation**: Adaptation of support approaches based on community feedback and needs
|
||||
|
||||
**Partnership and Collaboration:**
|
||||
- **Professional Service Partnerships**: Appropriate partnerships with professional service providers
|
||||
- **Community Organization Collaboration**: Collaboration with other community organizations
|
||||
- **Resource Sharing Networks**: Participation in resource sharing networks
|
||||
- **Best Practice Communities**: Participation in communities focused on peer support best practices
|
||||
- **Research Participation**: Appropriate participation in research on effective community support
|
||||
|
||||
---
|
||||
|
||||
*This Community Support Policy is designed to create a safe, supportive, and sustainable framework for mutual aid within our community. This policy works in conjunction with our Crisis and Mental Health Management Policy, Community Code of Conduct, and staff training materials to ensure comprehensive community support. For questions about this policy or to report concerns about support interactions, please contact community staff through established channels.*
|
||||
|
||||
**Document Version**: 1.0
|
||||
**Last Updated**: 25 September 2025
|
||||
**Next Review Date**: 25 March 2026
|
||||
@@ -0,0 +1,979 @@
|
||||
---
|
||||
title: Content and Moderation Policy
|
||||
---
|
||||
|
||||
**ESTABLISHING STANDARDS FOR CONTENT AND MODERATION PRACTICES ACROSS ALL PLATFORMS**
|
||||
|
||||
## 1. INTRODUCTION AND SCOPE
|
||||
|
||||
### 1.1 Policy Purpose and Objectives
|
||||
|
||||
This Content and Moderation Policy ("Policy") establishes comprehensive standards for content creation, sharing, and moderation across all services, platforms, and applications operated by nhcarrigan ("we," "us," "our," or "the Company"). This Policy aims to maintain safe, inclusive, and productive environments whilst balancing free expression with community safety and legal compliance.
|
||||
|
||||
### 1.2 Scope of Application
|
||||
|
||||
This Policy applies to all content and user interactions across:
|
||||
|
||||
**(a)** Community forums, discussion boards, and chat platforms;
|
||||
|
||||
**(b)** User-generated content features in applications and websites;
|
||||
|
||||
**(c)** Comment systems, feedback mechanisms, and review platforms;
|
||||
|
||||
**(d)** Social media integrations and sharing features;
|
||||
|
||||
**(e)** Developer communities, documentation wikis, and collaboration tools;
|
||||
|
||||
**(f)** Support channels, help desks, and customer service interactions;
|
||||
|
||||
**(g)** Event platforms, livestreams, and interactive presentations;
|
||||
|
||||
**(h)** Any other platforms or services that facilitate user content or communication.
|
||||
|
||||
### 1.3 Integration with Other Policies
|
||||
|
||||
This Policy operates in conjunction with our comprehensive policy framework:
|
||||
|
||||
**(a)** Our Terms of Service, which establish the fundamental legal relationship;
|
||||
|
||||
**(b)** Our Community Code of Conduct, which establishes behavioural expectations;
|
||||
|
||||
**(c)** Our Acceptable Use Policy, which defines prohibited activities and usage patterns;
|
||||
|
||||
**(d)** Our Privacy Policy, which governs data collection and processing in moderation activities;
|
||||
|
||||
**(e)** Our Limitation of Liability and Indemnification Policy, which governs all liability and risk allocation matters;
|
||||
|
||||
**(f)** Our Service Level Agreement and Warranty Disclaimer, which define service expectations;
|
||||
|
||||
**(g)** Our Export Control and Sanctions Compliance Policy, which governs international compliance;
|
||||
|
||||
**(h)** Our API Terms and Conditions, which govern developer services;
|
||||
|
||||
**(i)** Our Appeals Policy, which provides procedures for challenging moderation decisions;
|
||||
|
||||
**(j)** Platform-specific community guidelines and rules where applicable.
|
||||
|
||||
### 1.4 Definitions and Terminology
|
||||
|
||||
For the purposes of this Policy:
|
||||
|
||||
**(a)** "Content" includes text, images, videos, audio, code, links, and any other user-submitted material;
|
||||
|
||||
**(b)** "Moderation" encompasses all activities related to reviewing, approving, removing, or restricting content;
|
||||
|
||||
**(c)** "Community Standards" refer to the collective expectations and norms for acceptable behaviour;
|
||||
|
||||
**(d)** "Harmful Content" means content that violates our policies or applicable laws;
|
||||
|
||||
**(e)** "Moderators" include staff members, volunteers, and automated systems involved in content review;
|
||||
|
||||
**(f)** "Users" include all individuals who create, share, or interact with content on our platforms.
|
||||
|
||||
## 2. CONTENT STANDARDS AND GUIDELINES
|
||||
|
||||
### 2.1 Acceptable Content Principles
|
||||
|
||||
All content on our platforms must adhere to the following principles:
|
||||
|
||||
**(a)** **Lawful Content**: Content must comply with all applicable laws and regulations in relevant jurisdictions;
|
||||
|
||||
**(b)** **Respectful Communication**: Content should demonstrate respect for other users and promote constructive dialogue;
|
||||
|
||||
**(c)** **Truthful Information**: Content should be accurate and not deliberately misleading or deceptive;
|
||||
|
||||
**(d)** **Contextual Appropriateness**: Content should be appropriate for the platform, audience, and community context;
|
||||
|
||||
**(e)** **Constructive Purpose**: Content should contribute positively to discussions and community objectives;
|
||||
|
||||
**(f)** **Intellectual Property Respect**: Content must respect copyright, trademark, and other intellectual property rights;
|
||||
|
||||
**(g)** **Privacy Protection**: Content should not violate others' privacy or share personal information without consent;
|
||||
|
||||
**(h)** **Community Benefit**: Content should benefit the broader community and support our platform objectives.
|
||||
|
||||
### 2.2 Encouraged Content Types
|
||||
|
||||
We particularly welcome and encourage:
|
||||
|
||||
**(a)** **Educational Content**: Tutorials, guides, explanations, and learning resources;
|
||||
|
||||
**(b)** **Constructive Feedback**: Helpful feedback, suggestions, and collaborative improvements;
|
||||
|
||||
**(c)** **Technical Discussions**: Professional discussions about technology, development, and best practices;
|
||||
|
||||
**(d)** **Community Support**: Content that helps other users solve problems or learn new skills;
|
||||
|
||||
**(e)** **Original Contributions**: Original research, insights, and creative contributions;
|
||||
|
||||
**(f)** **Inclusive Content**: Content that welcomes and includes users from diverse backgrounds;
|
||||
|
||||
**(g)** **Solution-Oriented**: Content focused on solving problems and providing practical solutions;
|
||||
|
||||
**(h)** **Well-Documented**: Content that provides clear documentation, examples, and references.
|
||||
|
||||
### 2.3 Content Quality Standards
|
||||
|
||||
Quality content on our platforms should demonstrate:
|
||||
|
||||
**(a)** **Clarity and Coherence**: Clear, well-structured communication that is easy to understand;
|
||||
|
||||
**(b)** **Relevance**: Content that is relevant to the platform, community, or discussion topic;
|
||||
|
||||
**(c)** **Completeness**: Sufficient detail and information to be useful and actionable;
|
||||
|
||||
**(d)** **Accuracy**: Factually correct information with appropriate sources and citations;
|
||||
|
||||
**(e)** **Professional Tone**: Appropriate tone and language for the platform and audience;
|
||||
|
||||
**(f)** **Proper Attribution**: Proper citation and attribution of sources, references, and borrowed content;
|
||||
|
||||
**(g)** **Updated Information**: Current and up-to-date information, with updates when circumstances change;
|
||||
|
||||
**(h)** **Accessible Format**: Content formatted for accessibility and ease of consumption.
|
||||
|
||||
### 2.4 Platform-Specific Guidelines
|
||||
|
||||
Different platforms may have additional specific guidelines:
|
||||
|
||||
**(a)** **Technical Forums**: Focus on technical accuracy, code quality, and professional discourse;
|
||||
|
||||
**(b)** **Community Spaces**: Emphasis on inclusive communication and community building;
|
||||
|
||||
**(c)** **Support Channels**: Priority on helpful, solution-oriented responses;
|
||||
|
||||
**(d)** **Educational Platforms**: Focus on pedagogical value and learning outcomes;
|
||||
|
||||
**(e)** **Collaboration Tools**: Emphasis on productive collaboration and professional communication;
|
||||
|
||||
**(f)** **Social Features**: Balance between personal expression and community standards;
|
||||
|
||||
**(g)** **Developer Resources**: Technical accuracy, completeness, and practical applicability;
|
||||
|
||||
**(h)** **Public-Facing Content**: Higher standards for content that represents our community publicly.
|
||||
|
||||
## 3. PROHIBITED CONTENT CATEGORIES
|
||||
|
||||
### 3.1 Illegal and Harmful Content
|
||||
|
||||
The following types of content are strictly prohibited:
|
||||
|
||||
**(a)** **Illegal Activities**: Content promoting, facilitating, or describing illegal activities;
|
||||
|
||||
**(b)** **Violence and Threats**: Content containing threats, promoting violence, or glorifying harmful acts;
|
||||
|
||||
**(c)** **Hate Speech**: Content that promotes hatred or discrimination based on protected characteristics;
|
||||
|
||||
**(d)** **Harassment and Bullying**: Content designed to harass, intimidate, or bully individuals or groups;
|
||||
|
||||
**(e)** **Self-Harm**: Content that promotes, encourages, or provides instructions for self-harm or suicide;
|
||||
|
||||
**(f)** **Exploitation**: Content involving the exploitation of individuals, particularly minors;
|
||||
|
||||
**(g)** **Terrorism**: Content that promotes, supports, or facilitates terrorist activities;
|
||||
|
||||
**(h)** **Human Trafficking**: Content related to human trafficking or modern slavery.
|
||||
|
||||
### 3.2 Inappropriate and Offensive Content
|
||||
|
||||
Content that violates community standards includes:
|
||||
|
||||
**(a)** **Adult Content**: Sexually explicit material, nudity, or adult content inappropriate for general audiences;
|
||||
|
||||
**(b)** **Graphic Violence**: Excessively graphic or disturbing violent content;
|
||||
|
||||
**(c)** **Offensive Language**: Excessive profanity, slurs, or offensive language targeting individuals or groups;
|
||||
|
||||
**(d)** **Disturbing Content**: Content designed to shock, disturb, or cause distress to viewers;
|
||||
|
||||
**(e)** **Inappropriate Imagery**: Images that violate community standards or platform guidelines;
|
||||
|
||||
**(f)** **Cultural Insensitivity**: Content that demonstrates insensitivity to cultural, religious, or ethnic differences;
|
||||
|
||||
**(g)** **Discriminatory Content**: Content that discriminates against individuals or groups;
|
||||
|
||||
**(h)** **Degrading Content**: Content that degrades or dehumanises individuals or groups.
|
||||
|
||||
### 3.3 Spam and Low-Quality Content
|
||||
|
||||
Prohibited spam and low-quality content includes:
|
||||
|
||||
**(a)** **Repetitive Posting**: Excessive repetition of the same or similar content across platforms;
|
||||
|
||||
**(b)** **Off-Topic Content**: Content that is irrelevant to the platform, community, or discussion;
|
||||
|
||||
**(c)** **Commercial Spam**: Unsolicited advertising, promotional content, or commercial messages;
|
||||
|
||||
**(d)** **Link Spam**: Excessive or inappropriate sharing of links, especially to unrelated content;
|
||||
|
||||
**(e)** **Copy-Paste Content**: Wholesale copying of content without attribution or added value;
|
||||
|
||||
**(f)** **Clickbait**: Misleading headlines or descriptions designed primarily to generate clicks;
|
||||
|
||||
**(g)** **Empty Content**: Posts with little or no substantive content or value;
|
||||
|
||||
**(h)** **Bot-Generated Content**: Automated content that doesn't add value to discussions.
|
||||
|
||||
### 3.4 Intellectual Property Violations
|
||||
|
||||
Content that violates intellectual property rights includes:
|
||||
|
||||
**(a)** **Copyright Infringement**: Unauthorised use, reproduction, or distribution of copyrighted material;
|
||||
|
||||
**(b)** **Trademark Violations**: Unauthorised use of trademarks, service marks, or brand identities;
|
||||
|
||||
**(c)** **Patent Infringement**: Sharing of content that infringes on patent rights;
|
||||
|
||||
**(d)** **Trade Secret Disclosure**: Unauthorised disclosure of confidential business information;
|
||||
|
||||
**(e)** **Plagiarism**: Presenting others' work as one's own without proper attribution;
|
||||
|
||||
**(f)** **Licence Violations**: Using content in ways that violate licensing terms;
|
||||
|
||||
**(g)** **Counterfeiting**: Promoting or distributing counterfeit goods or services;
|
||||
|
||||
**(h)** **False Attribution**: Misrepresenting the ownership or source of intellectual property.
|
||||
|
||||
### 3.5 Misinformation and Deceptive Content
|
||||
|
||||
Prohibited misinformation and deceptive practices include:
|
||||
|
||||
**(a)** **Deliberate Misinformation**: Intentionally false or misleading information;
|
||||
|
||||
**(b)** **Conspiracy Theories**: Harmful conspiracy theories that could cause real-world harm;
|
||||
|
||||
**(c)** **Medical Misinformation**: False medical advice or information that could endanger health;
|
||||
|
||||
**(d)** **Financial Scams**: Fraudulent financial advice, investment schemes, or get-rich-quick scams;
|
||||
|
||||
**(e)** **Identity Deception**: Impersonating others or creating false identities;
|
||||
|
||||
**(f)** **Fake Reviews**: False reviews, testimonials, or ratings;
|
||||
|
||||
**(g)** **Manipulated Media**: Deepfakes, doctored images, or manipulated audio/video content;
|
||||
|
||||
**(h)** **Phishing Content**: Content designed to steal personal information or credentials.
|
||||
|
||||
## 4. MODERATION APPROACH AND METHODOLOGY
|
||||
|
||||
### 4.1 Multi-Layered Moderation System
|
||||
|
||||
Our moderation approach employs multiple layers:
|
||||
|
||||
**(a)** **Automated Detection**: AI and machine learning systems for initial content screening;
|
||||
|
||||
**(b)** **Community Reporting**: User reporting mechanisms for identifying problematic content;
|
||||
|
||||
**(c)** **Human Review**: Human moderators for nuanced content assessment;
|
||||
|
||||
**(d)** **Expert Review**: Subject matter experts for specialised or complex content;
|
||||
|
||||
**(e)** **Appeal Process**: Structured appeals process for moderation decisions;
|
||||
|
||||
**(f)** **Continuous Improvement**: Regular assessment and improvement of moderation processes;
|
||||
|
||||
**(g)** **Training and Development**: Ongoing training for moderation staff and systems;
|
||||
|
||||
**(h)** **Quality Assurance**: Quality assurance processes for moderation consistency and accuracy.
|
||||
|
||||
### 4.2 Proactive and Reactive Moderation
|
||||
|
||||
We employ both proactive and reactive moderation strategies:
|
||||
|
||||
**Proactive Moderation:**
|
||||
|
||||
**(a)** **Pre-Publication Review**: Review of content before it becomes publicly visible;
|
||||
|
||||
**(b)** **Automated Screening**: Automated systems that flag potentially problematic content;
|
||||
|
||||
**(c)** **Pattern Recognition**: Identification of emerging harmful trends or behaviours;
|
||||
|
||||
**(d)** **Risk Assessment**: Assessment of content that may pose risks to community safety;
|
||||
|
||||
**Reactive Moderation:**
|
||||
|
||||
**(a)** **User Reports**: Response to user reports of problematic content;
|
||||
|
||||
**(b)** **Post-Publication Review**: Review of content after it has been published;
|
||||
|
||||
**(c)** **Escalation Handling**: Management of escalated moderation cases;
|
||||
|
||||
**(d)** **Incident Response**: Response to significant content-related incidents.
|
||||
|
||||
### 4.3 Context-Sensitive Moderation
|
||||
|
||||
Our moderation decisions consider:
|
||||
|
||||
**(a)** **Platform Context**: Different standards for different types of platforms and communities;
|
||||
|
||||
**(b)** **Audience Considerations**: Age appropriateness and audience expectations;
|
||||
|
||||
**(c)** **Cultural Context**: Cultural sensitivity and regional considerations;
|
||||
|
||||
**(d)** **Historical Context**: Historical context and evolving social norms;
|
||||
|
||||
**(e)** **Intent Assessment**: Evaluation of user intent behind content creation;
|
||||
|
||||
**(f)** **Impact Evaluation**: Assessment of potential harm or community impact;
|
||||
|
||||
**(g)** **Precedent Consideration**: Consistency with previous moderation decisions;
|
||||
|
||||
**(h)** **Legal Requirements**: Compliance with applicable legal requirements in different jurisdictions.
|
||||
|
||||
### 4.4 Moderation Decision Framework
|
||||
|
||||
Moderation decisions follow a structured framework:
|
||||
|
||||
**(a)** **Policy Review**: Assessment against all applicable policies and guidelines;
|
||||
|
||||
**(b)** **Context Analysis**: Consideration of context, intent, and potential impact;
|
||||
|
||||
**(c)** **Severity Assessment**: Evaluation of the severity of policy violations;
|
||||
|
||||
**(d)** **Proportionate Response**: Selection of appropriate and proportionate enforcement actions;
|
||||
|
||||
**(e)** **Consistency Check**: Verification of consistency with similar cases;
|
||||
|
||||
**(f)** **Documentation**: Comprehensive documentation of decisions and rationale;
|
||||
|
||||
**(g)** **Review Process**: Internal review process for significant decisions;
|
||||
|
||||
**(h)** **Communication**: Clear communication of decisions and expectations to users.
|
||||
|
||||
## 5. ENFORCEMENT ACTIONS AND CONSEQUENCES
|
||||
|
||||
### 5.1 Range of Enforcement Actions
|
||||
|
||||
We may take the following enforcement actions for policy violations:
|
||||
|
||||
**(a)** **Content Warning**: Adding warning labels to content that may be sensitive or controversial;
|
||||
|
||||
**(b)** **Content Removal**: Removing content that violates our policies;
|
||||
|
||||
**(c)** **Visibility Reduction**: Reducing the visibility or reach of problematic content;
|
||||
|
||||
**(d)** **Edit Requirements**: Requiring users to edit content to bring it into compliance;
|
||||
|
||||
**(e)** **User Warning**: Issuing formal warnings to users about policy violations;
|
||||
|
||||
**(f)** **Temporary Restrictions**: Temporarily restricting user privileges or access to features;
|
||||
|
||||
**(g)** **Account Suspension**: Temporarily suspending user accounts;
|
||||
|
||||
**(h)** **Account Termination**: Permanently terminating user accounts for serious or repeated violations.
|
||||
|
||||
### 5.2 Progressive Enforcement Approach
|
||||
|
||||
Our enforcement generally follows a progressive approach:
|
||||
|
||||
**First Violation:**
|
||||
**(a)** Educational response with policy clarification;
|
||||
**(b)** Content removal or editing requirements;
|
||||
**(c)** Informal guidance on community expectations;
|
||||
|
||||
**Second Violation:**
|
||||
**(a)** Formal warning with specific improvement expectations;
|
||||
**(b)** Temporary restrictions on posting or participation;
|
||||
**(c)** Required acknowledgement of policy understanding;
|
||||
|
||||
**Subsequent Violations:**
|
||||
**(a)** Escalating temporary suspensions;
|
||||
**(b)** Loss of specific privileges or features;
|
||||
**(c)** Enhanced monitoring of future content;
|
||||
|
||||
**Serious or Repeated Violations:**
|
||||
**(a)** Permanent account suspension or termination;
|
||||
**(b)** Removal from community platforms;
|
||||
**(c)** Potential legal action for serious violations.
|
||||
|
||||
### 5.3 Immediate Action Circumstances
|
||||
|
||||
Immediate severe enforcement may be applied for:
|
||||
|
||||
**(a)** **Safety Threats**: Content that poses immediate threats to user safety;
|
||||
|
||||
**(b)** **Legal Violations**: Content that clearly violates applicable laws;
|
||||
|
||||
**(c)** **Severe Harassment**: Serious harassment or abuse of other users;
|
||||
|
||||
**(d)** **Doxxing**: Sharing of private personal information without consent;
|
||||
|
||||
**(e)** **Impersonation**: Impersonating others or creating deceptive identities;
|
||||
|
||||
**(f)** **Security Threats**: Content that poses security risks to our platforms or users;
|
||||
|
||||
**(g)** **Criminal Activity**: Content related to criminal activity or illegal behaviour;
|
||||
|
||||
**(h)** **Terms of Service Violations**: Serious violations of fundamental terms of service.
|
||||
|
||||
### 5.4 Account Status and Restrictions
|
||||
|
||||
Account restrictions may include:
|
||||
|
||||
**(a)** **Posting Limitations**: Restrictions on frequency or type of content posting;
|
||||
|
||||
**(b)** **Feature Access**: Limited access to specific platform features or capabilities;
|
||||
|
||||
**(c)** **Visibility Restrictions**: Reduced visibility of user content or profile;
|
||||
|
||||
**(d)** **Community Participation**: Restrictions on participation in community features;
|
||||
|
||||
**(e)** **Moderation Queue**: Requirement for content pre-approval before publication;
|
||||
|
||||
**(f)** **Enhanced Monitoring**: Increased scrutiny of user content and behaviour;
|
||||
|
||||
**(g)** **Probationary Status**: Temporary probationary status with enhanced oversight;
|
||||
|
||||
**(h)** **Appeal Restrictions**: Limitations on the number or frequency of appeals.
|
||||
|
||||
## 6. COMMUNITY REPORTING AND PARTICIPATION
|
||||
|
||||
### 6.1 Community Reporting Mechanisms
|
||||
|
||||
We provide multiple ways for community members to report problematic content:
|
||||
|
||||
**(a)** **Built-in Report Features**: Report buttons and forms integrated into all content areas;
|
||||
|
||||
**(b)** **Email Reporting**: Dedicated email addresses for reporting different types of violations;
|
||||
|
||||
**(c)** **Community Moderators**: Designated community moderators for specific platforms or topics;
|
||||
|
||||
**(d)** **Anonymous Reporting**: Options for anonymous reporting where technically feasible;
|
||||
|
||||
**(e)** **Urgent Reports**: Express reporting channels for urgent safety concerns;
|
||||
|
||||
**(f)** **Detailed Reports**: Comprehensive reporting forms for complex violations;
|
||||
|
||||
**(g)** **Follow-up Systems**: Systems for following up on report status and outcomes;
|
||||
|
||||
**(h)** **Batch Reporting**: Mechanisms for reporting multiple related violations efficiently.
|
||||
|
||||
### 6.2 What to Include in Reports
|
||||
|
||||
Effective reports should include:
|
||||
|
||||
**(a)** **Specific Content**: Clear identification of the problematic content or behaviour;
|
||||
|
||||
**(b)** **Policy Violation**: Explanation of which policies or guidelines are being violated;
|
||||
|
||||
**(c)** **Evidence**: Screenshots, links, or other evidence supporting the report;
|
||||
|
||||
**(d)** **Context**: Relevant context that helps understand the situation;
|
||||
|
||||
**(e)** **Impact Description**: Explanation of how the content affects you or the community;
|
||||
|
||||
**(f)** **User Information**: Information about the user(s) involved in the violation;
|
||||
|
||||
**(g)** **Timestamp**: When the violation occurred or was discovered;
|
||||
|
||||
**(h)** **Contact Information**: Your contact information for follow-up questions (where desired).
|
||||
|
||||
### 6.3 Community Moderation Programme
|
||||
|
||||
We may establish community moderation programmes that include:
|
||||
|
||||
**(a)** **Volunteer Moderators**: Community volunteers who help with content moderation;
|
||||
|
||||
**(b)** **Trusted Users**: Experienced users with enhanced reporting or flagging capabilities;
|
||||
|
||||
**(c)** **Subject Matter Experts**: Experts in specific domains who assist with technical content review;
|
||||
|
||||
**(d)** **Community Leaders**: Recognised community leaders who help set standards and resolve disputes;
|
||||
|
||||
**(e)** **Moderation Training**: Training programmes for community moderators;
|
||||
|
||||
**(f)** **Recognition Systems**: Recognition and appreciation systems for community moderators;
|
||||
|
||||
**(g)** **Support Resources**: Resources and support for community moderation activities;
|
||||
|
||||
**(h)** **Feedback Mechanisms**: Regular feedback and improvement processes for community moderation.
|
||||
|
||||
### 6.4 Reporter Protection and Support
|
||||
|
||||
We are committed to protecting community members who report violations:
|
||||
|
||||
**(a)** **Confidentiality**: Reporter information is kept confidential to the extent possible;
|
||||
|
||||
**(b)** **Anti-Retaliation**: Strict prohibition against retaliation for good-faith reports;
|
||||
|
||||
**(c)** **Anonymous Options**: Anonymous reporting capabilities where technically feasible;
|
||||
|
||||
**(d)** **Identity Protection**: Reporter identity is not disclosed to reported users;
|
||||
|
||||
**(e)** **Support Services**: Support for users who face consequences for reporting violations;
|
||||
|
||||
**(f)** **Legal Protection**: Legal support for reporters facing retaliation or harassment;
|
||||
|
||||
**(g)** **Community Support**: Community support systems for users who report serious violations;
|
||||
|
||||
**(h)** **Safe Environment**: Commitment to maintaining safe environments for reporting activities.
|
||||
|
||||
## 7. APPEALS AND REVIEW PROCESS
|
||||
|
||||
### 7.1 Right to Appeal
|
||||
|
||||
Users have the right to appeal moderation decisions including:
|
||||
|
||||
**(a)** **Content Removal**: Appeals for removed or restricted content;
|
||||
|
||||
**(b)** **Account Actions**: Appeals for account suspensions, restrictions, or terminations;
|
||||
|
||||
**(c)** **Warning Actions**: Appeals for formal warnings or policy violation notices;
|
||||
|
||||
**(d)** **Feature Restrictions**: Appeals for restrictions on specific platform features;
|
||||
|
||||
**(e)** **Community Actions**: Appeals for community-specific moderation decisions;
|
||||
|
||||
**(f)** **Automated Decisions**: Appeals for decisions made by automated moderation systems;
|
||||
|
||||
**(g)** **Reporting Decisions**: Appeals for decisions not to take action on reports;
|
||||
|
||||
**(h)** **Policy Interpretations**: Appeals regarding interpretation of policy provisions.
|
||||
|
||||
### 7.2 Appeals Process
|
||||
|
||||
The appeals process includes the following steps:
|
||||
|
||||
**(a)** **Initial Submission**: Submit appeal through designated channels with supporting information;
|
||||
|
||||
**(b)** **Acknowledgement**: Receive acknowledgement of appeal receipt within specified timeframe;
|
||||
|
||||
**(c)** **Review Assignment**: Assignment of appeal to appropriate review team or individual;
|
||||
|
||||
**(d)** **Evidence Review**: Comprehensive review of original decision and new evidence;
|
||||
|
||||
**(e)** **Independent Assessment**: Assessment by reviewers not involved in original decision;
|
||||
|
||||
**(f)** **Decision Communication**: Clear communication of appeal decision and rationale;
|
||||
|
||||
**(g)** **Implementation**: Implementation of any changes resulting from successful appeals;
|
||||
|
||||
**(h)** **Follow-up**: Follow-up to ensure proper implementation and user satisfaction.
|
||||
|
||||
### 7.3 Appeal Requirements and Information
|
||||
|
||||
Effective appeals should include:
|
||||
|
||||
**(a)** **Original Decision**: Reference to the original moderation decision being appealed;
|
||||
|
||||
**(b)** **Grounds for Appeal**: Clear explanation of why the decision should be reconsidered;
|
||||
|
||||
**(c)** **New Evidence**: Any new evidence or information relevant to the appeal;
|
||||
|
||||
**(d)** **Policy Interpretation**: Explanation of how policies should be interpreted differently;
|
||||
|
||||
**(e)** **Context Clarification**: Additional context that may not have been considered initially;
|
||||
|
||||
**(f)** **Impact Statement**: Explanation of how the decision affects the user or community;
|
||||
|
||||
**(g)** **Requested Outcome**: Clear statement of what outcome the user is seeking;
|
||||
|
||||
**(h)** **Supporting Documentation**: Any supporting documentation, screenshots, or references.
|
||||
|
||||
### 7.4 Appeal Outcomes and Implementation
|
||||
|
||||
Appeal decisions may result in:
|
||||
|
||||
**(a)** **Decision Upheld**: Original decision is confirmed as correct and proportionate;
|
||||
|
||||
**(b)** **Decision Reversed**: Original decision is overturned and actions are reversed;
|
||||
|
||||
**(c)** **Modified Action**: Original action is modified to be more appropriate or proportionate;
|
||||
|
||||
**(d)** **Alternative Resolution**: Alternative resolution that addresses concerns while maintaining standards;
|
||||
|
||||
**(e)** **Policy Clarification**: Clarification of policy interpretation for future application;
|
||||
|
||||
**(f)** **Additional Review**: Assignment for additional review by higher-level reviewers;
|
||||
|
||||
**(g)** **Mediation**: Referral to mediation or alternative dispute resolution processes;
|
||||
|
||||
**(h)** **Systemic Changes**: Implementation of systemic changes to prevent similar issues.
|
||||
|
||||
## 8. TRANSPARENCY AND ACCOUNTABILITY
|
||||
|
||||
### 8.1 Transparency Reporting
|
||||
|
||||
We are committed to transparency in our moderation practices through:
|
||||
|
||||
**(a)** **Moderation Reports**: Regular reports on moderation activities and statistics;
|
||||
|
||||
**(b)** **Policy Enforcement Data**: Data on policy violations and enforcement actions;
|
||||
|
||||
**(c)** **Appeal Statistics**: Information about appeals processes and outcomes;
|
||||
|
||||
**(d)** **Trend Analysis**: Analysis of content trends and emerging moderation challenges;
|
||||
|
||||
**(e)** **Process Documentation**: Public documentation of our moderation processes and procedures;
|
||||
|
||||
**(f)** **Decision Examples**: Anonymised examples of moderation decisions and rationale;
|
||||
|
||||
**(g)** **Policy Updates**: Regular updates about changes to content policies and standards;
|
||||
|
||||
**(h)** **Community Feedback**: Reports on community feedback and input on moderation practices.
|
||||
|
||||
### 8.2 Accountability Mechanisms
|
||||
|
||||
We maintain accountability through:
|
||||
|
||||
**(a)** **Internal Audits**: Regular internal audits of moderation decisions and processes;
|
||||
|
||||
**(b)** **External Review**: Periodic external review of moderation practices and policies;
|
||||
|
||||
**(c)** **Quality Assurance**: Quality assurance programmes for moderation consistency;
|
||||
|
||||
**(d)** **Training Programmes**: Regular training and development for moderation staff;
|
||||
|
||||
**(e)** **Feedback Systems**: Systems for collecting and acting on feedback about moderation;
|
||||
|
||||
**(f)** **Performance Metrics**: Key performance indicators for moderation quality and consistency;
|
||||
|
||||
**(g)** **Continuous Improvement**: Ongoing improvement processes based on data and feedback;
|
||||
|
||||
**(h)** **Stakeholder Engagement**: Engagement with community stakeholders on moderation practices.
|
||||
|
||||
### 8.3 Community Input and Participation
|
||||
|
||||
We seek community input through:
|
||||
|
||||
**(a)** **Policy Consultations**: Community consultations on significant policy changes;
|
||||
|
||||
**(b)** **Feedback Mechanisms**: Regular feedback collection on moderation practices;
|
||||
|
||||
**(c)** **Community Surveys**: Surveys to understand community perspectives on content standards;
|
||||
|
||||
**(d)** **Focus Groups**: Focus groups with diverse community representatives;
|
||||
|
||||
**(e)** **Public Discussions**: Public discussions about moderation challenges and solutions;
|
||||
|
||||
**(f)** **Advisory Groups**: Community advisory groups for content and moderation policy;
|
||||
|
||||
**(g)** **User Research**: Research to understand user experiences with moderation;
|
||||
|
||||
**(h)** **Co-Creation Processes**: Collaborative development of community standards and guidelines.
|
||||
|
||||
### 8.4 External Accountability
|
||||
|
||||
We engage in external accountability through:
|
||||
|
||||
**(a)** **Industry Standards**: Adherence to industry standards for content moderation;
|
||||
|
||||
**(b)** **Best Practice Sharing**: Participation in industry initiatives to share best practices;
|
||||
|
||||
**(c)** **Academic Collaboration**: Collaboration with academic researchers on moderation effectiveness;
|
||||
|
||||
**(d)** **Regulatory Compliance**: Compliance with applicable regulatory requirements;
|
||||
|
||||
**(e)** **Third-Party Audits**: Periodic third-party audits of moderation practices;
|
||||
|
||||
**(f)** **Certification Programmes**: Participation in relevant certification programmes;
|
||||
|
||||
**(g)** **Professional Standards**: Adherence to professional standards for content moderation;
|
||||
|
||||
**(h)** **Stakeholder Engagement**: Engagement with external stakeholders and advocacy groups.
|
||||
|
||||
## 9. SPECIAL CONSIDERATIONS AND CONTEXTS
|
||||
|
||||
### 9.1 Cultural and Regional Sensitivity
|
||||
|
||||
Our moderation practices consider:
|
||||
|
||||
**(a)** **Cultural Differences**: Recognition of cultural differences in communication styles and norms;
|
||||
|
||||
**(b)** **Regional Variations**: Adaptation to regional legal and social requirements;
|
||||
|
||||
**(c)** **Language Considerations**: Understanding of language nuances and translation challenges;
|
||||
|
||||
**(d)** **Religious Sensitivity**: Respect for diverse religious perspectives and practices;
|
||||
|
||||
**(e)** **Historical Context**: Consideration of historical contexts that may affect interpretation;
|
||||
|
||||
**(f)** **Local Laws**: Compliance with local laws and regulations in different jurisdictions;
|
||||
|
||||
**(g)** **Community Norms**: Recognition of established community norms and traditions;
|
||||
|
||||
**(h)** **Inclusive Practices**: Promotion of inclusive practices that welcome diverse perspectives.
|
||||
|
||||
### 9.2 Vulnerable Populations
|
||||
|
||||
We provide enhanced protections for:
|
||||
|
||||
**(a)** **Minors**: Additional safeguards for content involving or targeting minors;
|
||||
|
||||
**(b)** **Marginalised Groups**: Enhanced protection for marginalised and vulnerable communities;
|
||||
|
||||
**(c)** **Mental Health**: Consideration of mental health impacts in moderation decisions;
|
||||
|
||||
**(d)** **Crisis Situations**: Special procedures for users in crisis or distress;
|
||||
|
||||
**(e)** **Harassment Targets**: Additional support for users who are frequent targets of harassment;
|
||||
|
||||
**(f)** **New Users**: Extra guidance and support for new users learning community norms;
|
||||
|
||||
**(g)** **Language Barriers**: Accommodation for users with language barriers or disabilities;
|
||||
|
||||
**(h)** **Digital Literacy**: Support for users with varying levels of digital literacy.
|
||||
|
||||
### 9.3 Crisis and Emergency Response
|
||||
|
||||
During crises or emergencies, we may:
|
||||
|
||||
**(a)** **Expedited Review**: Implement expedited review processes for urgent content;
|
||||
|
||||
**(b)** **Enhanced Monitoring**: Increase monitoring for harmful or dangerous content;
|
||||
|
||||
**(c)** **Crisis Resources**: Provide links to crisis resources and support services;
|
||||
|
||||
**(d)** **Emergency Contacts**: Facilitate contact with emergency services when appropriate;
|
||||
|
||||
**(e)** **Misinformation Control**: Take enhanced action against harmful misinformation during crises;
|
||||
|
||||
**(f)** **Coordinated Response**: Coordinate with relevant authorities and organisations;
|
||||
|
||||
**(g)** **Resource Allocation**: Reallocate moderation resources to address crisis-related content;
|
||||
|
||||
**(h)** **Post-Crisis Review**: Conduct post-crisis reviews to improve future emergency responses.
|
||||
|
||||
### 9.4 Emerging Technologies and Trends
|
||||
|
||||
We adapt our moderation practices to address:
|
||||
|
||||
**(a)** **New Content Types**: Evolution of policies to address new types of content and media;
|
||||
|
||||
**(b)** **Emerging Platforms**: Adaptation of standards for new platforms and technologies;
|
||||
|
||||
**(c)** **AI-Generated Content**: Special considerations for AI-generated text, images, and media;
|
||||
|
||||
**(d)** **Deepfakes and Manipulation**: Enhanced detection and response to manipulated media;
|
||||
|
||||
**(e)** **Virtual Reality**: Moderation considerations for immersive and virtual environments;
|
||||
|
||||
**(f)** **Blockchain Content**: Considerations for content stored on blockchain platforms;
|
||||
|
||||
**(g)** **IoT Communications**: Moderation of communications through Internet of Things devices;
|
||||
|
||||
**(h)** **Augmented Reality**: Content moderation in augmented reality applications and overlays.
|
||||
|
||||
## 10. TRAINING AND DEVELOPMENT
|
||||
|
||||
### 10.1 Moderator Training Programmes
|
||||
|
||||
Our moderation training includes:
|
||||
|
||||
**(a)** **Policy Education**: Comprehensive training on all content policies and guidelines;
|
||||
|
||||
**(b)** **Decision-Making Skills**: Training on consistent and fair decision-making processes;
|
||||
|
||||
**(c)** **Cultural Competency**: Training on cultural sensitivity and diverse perspectives;
|
||||
|
||||
**(d)** **Mental Health Awareness**: Training on recognising and responding to mental health issues;
|
||||
|
||||
**(e)** **Legal Requirements**: Education on relevant legal requirements and compliance;
|
||||
|
||||
**(f)** **Technology Tools**: Training on moderation tools and systems;
|
||||
|
||||
**(g)** **Communication Skills**: Training on effective communication with users about moderation decisions;
|
||||
|
||||
**(h)** **Continuous Education**: Ongoing education and professional development opportunities.
|
||||
|
||||
### 10.2 Quality Assurance and Consistency
|
||||
|
||||
We maintain quality through:
|
||||
|
||||
**(a)** **Calibration Sessions**: Regular calibration sessions to ensure consistent decision-making;
|
||||
|
||||
**(b)** **Performance Monitoring**: Monitoring of moderator performance and decision quality;
|
||||
|
||||
**(c)** **Feedback Systems**: Systems for providing feedback to moderators on their decisions;
|
||||
|
||||
**(d)** **Peer Review**: Peer review processes for complex or sensitive moderation decisions;
|
||||
|
||||
**(e)** **Case Studies**: Development and use of case studies for training and calibration;
|
||||
|
||||
**(f)** **Best Practices Documentation**: Documentation and sharing of best practices;
|
||||
|
||||
**(g)** **Regular Assessment**: Regular assessment of moderation quality and consistency;
|
||||
|
||||
**(h)** **Improvement Planning**: Systematic planning for continuous improvement in moderation quality.
|
||||
|
||||
### 10.3 Technology and Tools Training
|
||||
|
||||
Training on moderation technology includes:
|
||||
|
||||
**(a)** **Automated Systems**: Understanding and working with automated moderation systems;
|
||||
|
||||
**(b)** **Detection Tools**: Use of tools for detecting prohibited content and behaviours;
|
||||
|
||||
**(c)** **Analytics Platforms**: Understanding analytics and data for moderation insights;
|
||||
|
||||
**(d)** **Reporting Systems**: Effective use of reporting and case management systems;
|
||||
|
||||
**(e)** **Communication Tools**: Use of tools for communicating with users about moderation decisions;
|
||||
|
||||
**(f)** **Appeal Systems**: Understanding and managing appeals processes and systems;
|
||||
|
||||
**(g)** **Documentation Systems**: Proper documentation of moderation decisions and rationale;
|
||||
|
||||
**(h)** **Integration Tools**: Understanding integration between different moderation tools and platforms.
|
||||
|
||||
### 10.4 Wellbeing and Support
|
||||
|
||||
We provide support for moderation staff including:
|
||||
|
||||
**(a)** **Mental Health Resources**: Access to mental health resources and counselling services;
|
||||
|
||||
**(b)** **Workload Management**: Appropriate workload management and rotation schedules;
|
||||
|
||||
**(c)** **Peer Support**: Peer support networks and discussion groups for moderation staff;
|
||||
|
||||
**(d)** **Professional Development**: Opportunities for professional development and career advancement;
|
||||
|
||||
**(e)** **Work-Life Balance**: Support for maintaining healthy work-life balance;
|
||||
|
||||
**(f)** **Trauma-Informed Care**: Training and support for dealing with traumatic content;
|
||||
|
||||
**(g)** **Regular Check-ins**: Regular check-ins and support meetings with management;
|
||||
|
||||
**(h)** **Recognition Programmes**: Recognition and appreciation programmes for moderation staff.
|
||||
|
||||
## 11. POLICY EVOLUTION AND UPDATES
|
||||
|
||||
### 11.1 Continuous Policy Development
|
||||
|
||||
Our content policies evolve through:
|
||||
|
||||
**(a)** **Community Feedback**: Regular incorporation of community feedback and suggestions;
|
||||
|
||||
**(b)** **Data Analysis**: Analysis of moderation data and trends to identify policy gaps;
|
||||
|
||||
**(c)** **Legal Developments**: Updates in response to changing legal requirements;
|
||||
|
||||
**(d)** **Industry Standards**: Alignment with evolving industry standards and best practices;
|
||||
|
||||
**(e)** **Research Insights**: Incorporation of academic and industry research on content moderation;
|
||||
|
||||
**(f)** **Case Law**: Consideration of relevant legal precedents and decisions;
|
||||
|
||||
**(g)** **Technology Changes**: Adaptation to new technologies and platforms;
|
||||
|
||||
**(h)** **Social Evolution**: Response to changing social norms and expectations.
|
||||
|
||||
### 11.2 Policy Update Process
|
||||
|
||||
Policy updates follow a structured process:
|
||||
|
||||
**(a)** **Issue Identification**: Identification of areas needing policy clarification or development;
|
||||
|
||||
**(b)** **Research and Analysis**: Comprehensive research and analysis of proposed changes;
|
||||
|
||||
**(c)** **Stakeholder Consultation**: Consultation with relevant stakeholders and community members;
|
||||
|
||||
**(d)** **Draft Development**: Development of draft policy language and implementation plans;
|
||||
|
||||
**(e)** **Public Comment**: Public comment periods for significant policy changes;
|
||||
|
||||
**(f)** **Review and Revision**: Review and revision based on feedback and consultation;
|
||||
|
||||
**(g)** **Implementation Planning**: Planning for policy implementation and training;
|
||||
|
||||
**(h)** **Monitoring and Evaluation**: Ongoing monitoring and evaluation of policy effectiveness.
|
||||
|
||||
### 11.3 Communication of Changes
|
||||
|
||||
Policy changes are communicated through:
|
||||
|
||||
**(a)** **Advance Notice**: Advance notice of significant policy changes with implementation timelines;
|
||||
|
||||
**(b)** **Change Documentation**: Detailed documentation of what changes and why;
|
||||
|
||||
**(c)** **Impact Assessment**: Assessment of how changes will affect different user groups;
|
||||
|
||||
**(d)** **Training Materials**: Updated training materials for moderators and community leaders;
|
||||
|
||||
**(e)** **Community Education**: Educational materials to help users understand new policies;
|
||||
|
||||
**(f)** **FAQ Updates**: Updates to frequently asked questions and help resources;
|
||||
|
||||
**(g)** **Version Control**: Clear version control and historical tracking of policy changes;
|
||||
|
||||
**(h)** **Feedback Channels**: Channels for feedback on policy changes and implementation.
|
||||
|
||||
### 11.4 Emergency Policy Updates
|
||||
|
||||
In emergency situations, we may:
|
||||
|
||||
**(a)** **Immediate Implementation**: Implement policy changes immediately to address urgent risks;
|
||||
|
||||
**(b)** **Temporary Measures**: Implement temporary policy measures pending full review;
|
||||
|
||||
**(c)** **Crisis Communication**: Provide immediate communication about emergency policy changes;
|
||||
|
||||
**(d)** **Expedited Review**: Use expedited review processes for emergency policy development;
|
||||
|
||||
**(e)** **Post-Implementation Review**: Conduct thorough reviews of emergency policy changes;
|
||||
|
||||
**(f)** **Stakeholder Notification**: Notify key stakeholders of emergency policy implementations;
|
||||
|
||||
**(g)** **Adjustment Procedures**: Procedures for adjusting emergency policies based on outcomes;
|
||||
|
||||
**(h)** **Documentation**: Comprehensive documentation of emergency policy decisions and rationale.
|
||||
|
||||
## 12. CONTACT INFORMATION AND SUPPORT
|
||||
|
||||
### 12.1 Content Policy Questions
|
||||
|
||||
For questions about our content policies:
|
||||
|
||||
**Email:** content-policy@nhcarrigan.com
|
||||
|
||||
**Subject Line:** Content Policy Inquiry - [Brief Description]
|
||||
|
||||
**Response Time:** Within 3 business days for policy clarification requests
|
||||
|
||||
### 12.2 Content Reporting
|
||||
|
||||
To report problematic content:
|
||||
|
||||
**Email:** moderation@nhcarrigan.com
|
||||
|
||||
**Subject Line:** Content Report - [Platform/Type]
|
||||
|
||||
**Emergency Reports:** For urgent safety concerns, use subject line "URGENT - Content Report"
|
||||
|
||||
**Response Time:** Within 24 hours for urgent reports, 48 hours for standard reports
|
||||
|
||||
### 12.3 Moderation Appeals
|
||||
|
||||
For appeals of moderation decisions:
|
||||
|
||||
**Email:** appeals@nhcarrigan.com
|
||||
|
||||
**Subject Line:** Moderation Appeal - [Account/Case Reference]
|
||||
|
||||
**Process:** Follow detailed appeals process outlined in our Community Appeals Policy
|
||||
|
||||
**Response Time:** Within 5 business days for appeal reviews
|
||||
|
||||
### 12.4 Community Support
|
||||
|
||||
For general community support and guidance:
|
||||
|
||||
**Email:** community@nhcarrigan.com
|
||||
|
||||
**Community Forum:** https://forum.nhcarrigan.com/community-support
|
||||
|
||||
**Response Time:** Within 48 hours for community support requests
|
||||
|
||||
**Live Chat:** Available during business hours for immediate assistance
|
||||
|
||||
**Document Version:** 1.0
|
||||
|
||||
**Last Updated:** 15 September 2025
|
||||
|
||||
**Effective Date:** 15 September 2025
|
||||
|
||||
**Next Review Date:** 15 March 2026
|
||||
|
||||
---
|
||||
|
||||
*This Content and Moderation Policy establishes our commitment to maintaining safe, inclusive, and productive communities. By participating in our platforms, you agree to abide by these content standards and acknowledge our moderation practices. For questions about content policies or to report violations, please contact us at moderation@nhcarrigan.com.*
|
||||
@@ -0,0 +1,797 @@
|
||||
---
|
||||
title: Crisis and Mental Health Management Policy
|
||||
---
|
||||
|
||||
**CRISIS INTERVENTION AND MENTAL HEALTH RESPONSE PROTOCOLS**
|
||||
|
||||
## 1. INTRODUCTION AND SCOPE
|
||||
|
||||
### 1.1 Policy Purpose and Objectives
|
||||
|
||||
This Crisis and Mental Health Management Policy ("Policy") establishes comprehensive protocols for identifying, responding to, and managing mental health crises and related situations across all services, platforms, and applications operated by nhcarrigan ("we," "us," "our," or "the Company"). This Policy aims to provide appropriate support whilst maintaining clear boundaries regarding our capabilities and legal obligations.
|
||||
|
||||
### 1.2 Important Disclaimers and Limitations
|
||||
|
||||
**CRITICAL NOTICE:**
|
||||
|
||||
**(a)** We are not mental health professionals, licensed therapists, counsellors, or medical practitioners;
|
||||
|
||||
**(b)** Our services do not constitute medical advice, psychological counselling, or mental health treatment;
|
||||
|
||||
**(c)** We cannot provide crisis intervention services or emergency mental health care;
|
||||
|
||||
**(d)** We are not equipped to handle acute mental health emergencies or immediate safety threats;
|
||||
|
||||
**(e)** Our responses are limited to basic support, resource provision, and appropriate referrals.
|
||||
|
||||
### 1.3 Scope of Application
|
||||
|
||||
This Policy applies to:
|
||||
|
||||
**(a)** All staff members, volunteers, and community moderators;
|
||||
|
||||
**(b)** All platforms, services, and communication channels we operate;
|
||||
|
||||
**(c)** All users who may experience or express mental health concerns;
|
||||
|
||||
**(d)** All situations involving potential self-harm, suicidal ideation, or mental health crises;
|
||||
|
||||
**(e)** Both direct communications and public posts indicating mental distress;
|
||||
|
||||
**(f)** Emergency reporting obligations and legal compliance requirements.
|
||||
|
||||
### 1.4 Integration with Other Policies
|
||||
|
||||
This Policy operates in conjunction with:
|
||||
|
||||
**(a)** Our Content and Moderation Policy, which governs harmful content including self-harm materials;
|
||||
|
||||
**(b)** Our Privacy Policy, which governs confidentiality and information sharing;
|
||||
|
||||
**(c)** Our Terms of Service, which establish fundamental service limitations;
|
||||
|
||||
**(d)** Our Limitation of Liability Policy, which governs risk allocation;
|
||||
|
||||
**(e)** Our Community Code of Conduct, which establishes behavioural expectations;
|
||||
|
||||
**(f)** Applicable legal reporting requirements and mandatory disclosure obligations.
|
||||
|
||||
## 2. RECOGNITION AND IDENTIFICATION
|
||||
|
||||
### 2.1 Crisis Indicators
|
||||
|
||||
We train our team to recognise potential mental health crisis indicators including:
|
||||
|
||||
**(a)** **Direct Statements:** Explicit statements about self-harm, suicide, or wanting to die;
|
||||
|
||||
**(b)** **Indirect References:** Veiled references to ending one's life or being better off dead;
|
||||
|
||||
**(c)** **Giving Away Possessions:** References to distributing belongings or "final" arrangements;
|
||||
|
||||
**(d)** **Hopelessness:** Expressions of overwhelming hopelessness or despair;
|
||||
|
||||
**(e)** **Isolation Behaviour:** Statements about withdrawing from friends, family, or activities;
|
||||
|
||||
**(f)** **Substance References:** References to substance abuse as coping or escape;
|
||||
|
||||
**(g)** **Crisis Language:** Use of crisis-specific language or terminology;
|
||||
|
||||
**(h)** **Sudden Behavioural Changes:** Dramatic changes in communication patterns or behaviour.
|
||||
|
||||
### 2.2 Risk Assessment Levels
|
||||
|
||||
We categorise potential situations into three risk levels:
|
||||
|
||||
**HIGH RISK - Immediate Danger:**
|
||||
**(a)** Explicit statements of imminent self-harm or suicide plans;
|
||||
**(b)** Specific methods or timelines mentioned;
|
||||
**(c)** Access to means of self-harm explicitly stated;
|
||||
**(d)** Expressions of immediate intent with specific plans;
|
||||
|
||||
**MEDIUM RISK - Concerning Behaviour:**
|
||||
**(a)** General statements about wanting to die or self-harm;
|
||||
**(b)** Expressions of hopelessness without specific plans;
|
||||
**(c)** References to past self-harm or suicidal behaviour;
|
||||
**(d)** Concerning behavioural changes or isolation;
|
||||
|
||||
**LOW RISK - General Distress:**
|
||||
**(a)** General expressions of sadness or mental health struggles;
|
||||
**(b)** Requests for mental health resources or support;
|
||||
**(c)** Discussions about mental health challenges without crisis indicators;
|
||||
**(d)** Seeking community support for mental health issues.
|
||||
|
||||
### 2.3 False Positives and Context Consideration
|
||||
|
||||
Our team is trained to consider:
|
||||
|
||||
**(a)** **Cultural Context:** Different cultural expressions of distress or metaphorical language;
|
||||
|
||||
**(b)** **Creative Expression:** Artistic or literary expressions that may reference dark themes;
|
||||
|
||||
**(c)** **Educational Content:** Discussions about mental health for educational purposes;
|
||||
|
||||
**(d)** **Support Seeking:** Genuine requests for resources or community support;
|
||||
|
||||
**(e)** **Historical References:** References to past experiences without current risk;
|
||||
|
||||
**(f)** **Advocacy Work:** Mental health advocacy or awareness activities;
|
||||
|
||||
**(g)** **Academic Research:** Research or educational discussions about mental health topics;
|
||||
|
||||
**(h)** **Professional Discussions:** Professional or clinical discussions about mental health.
|
||||
|
||||
## 3. IMMEDIATE RESPONSE PROTOCOLS
|
||||
|
||||
### 3.1 High-Risk Situation Response
|
||||
|
||||
For HIGH RISK situations involving imminent danger:
|
||||
|
||||
**IMMEDIATE ACTIONS (Within 15 minutes):**
|
||||
|
||||
**(a)** **Escalate Immediately:** Notify senior staff and designated crisis response team;
|
||||
|
||||
**(b)** **Document Everything:** Screenshot and preserve all relevant communications;
|
||||
|
||||
**(c)** **DO NOT Provide Counselling:** Avoid attempting therapeutic intervention;
|
||||
|
||||
**(d)** **Encourage Professional Help:** Direct user to immediate emergency services;
|
||||
|
||||
**(e)** **Provide Crisis Resources:** Share emergency contact information immediately;
|
||||
|
||||
**(f)** **Monitor Continuously:** Keep situation under active monitoring;
|
||||
|
||||
**(g)** **Prepare for Reporting:** Gather information needed for potential emergency reporting;
|
||||
|
||||
**(h)** **Maintain Confidentiality:** Limit information sharing to essential personnel only.
|
||||
|
||||
### 3.2 Medium-Risk Situation Response
|
||||
|
||||
For MEDIUM RISK situations involving concerning behaviour:
|
||||
|
||||
**WITHIN 30 MINUTES:**
|
||||
|
||||
**(a)** **Acknowledge Concern:** Respond with empathy while maintaining boundaries;
|
||||
|
||||
**(b)** **Avoid Diagnosis:** Do not attempt to diagnose or provide medical advice;
|
||||
|
||||
**(c)** **Provide Resources:** Share mental health resources and support information;
|
||||
|
||||
**(d)** **Encourage Professional Support:** Suggest contacting mental health professionals;
|
||||
|
||||
**(e)** **Document Interaction:** Record the situation and response provided;
|
||||
|
||||
**(f)** **Follow-Up Protocol:** Establish appropriate follow-up procedures;
|
||||
|
||||
**(g)** **Team Notification:** Inform relevant team members of the situation;
|
||||
|
||||
**(h)** **Monitor for Escalation:** Watch for signs of increasing risk level.
|
||||
|
||||
### 3.3 Low-Risk Situation Response
|
||||
|
||||
For LOW RISK situations involving general mental health concerns:
|
||||
|
||||
**WITHIN 2 HOURS:**
|
||||
|
||||
**(a)** **Supportive Response:** Provide empathetic, supportive communication;
|
||||
|
||||
**(b)** **Resource Sharing:** Share appropriate mental health resources and information;
|
||||
|
||||
**(c)** **Community Support:** Connect user with supportive community members where appropriate;
|
||||
|
||||
**(d)** **Professional Referral:** Suggest appropriate professional mental health support;
|
||||
|
||||
**(e)** **Document Briefly:** Make basic record of interaction and resources provided;
|
||||
|
||||
**(f)** **Respect Boundaries:** Maintain appropriate boundaries and avoid overreach;
|
||||
|
||||
**(g)** **Encourage Self-Care:** Promote healthy coping strategies and self-care;
|
||||
|
||||
**(h)** **Available Support:** Make clear what ongoing support we can and cannot provide.
|
||||
|
||||
### 3.4 Response Templates and Guidelines
|
||||
|
||||
**APPROPRIATE RESPONSES:**
|
||||
|
||||
**(a)** "We're concerned about what you've shared. Please contact emergency services immediately if you're in immediate danger."
|
||||
|
||||
**(b)** "While we can't provide professional counselling, we want you to know there are people who can help."
|
||||
|
||||
**(c)** "Here are some mental health resources that might be helpful for you."
|
||||
|
||||
**(d)** "We care about your wellbeing, but we're not qualified to provide mental health support."
|
||||
|
||||
**INAPPROPRIATE RESPONSES:**
|
||||
|
||||
**(a)** Attempting to provide therapy or counselling;
|
||||
|
||||
**(b)** Making diagnoses or medical recommendations;
|
||||
|
||||
**(c)** Minimising or dismissing expressed concerns;
|
||||
|
||||
**(d)** Providing specific medical or therapeutic advice;
|
||||
|
||||
**(e)** Making promises about outcomes or recovery;
|
||||
|
||||
**(f)** Sharing personal experiences as advice;
|
||||
|
||||
**(g)** Attempting crisis intervention beyond our capabilities;
|
||||
|
||||
**(h)** Providing false reassurances about serious situations.
|
||||
|
||||
## 4. EMERGENCY REPORTING AND LEGAL OBLIGATIONS
|
||||
|
||||
### 4.1 Mandatory Reporting Requirements
|
||||
|
||||
We are legally obligated to report to appropriate authorities when:
|
||||
|
||||
**(a)** **Imminent Danger:** We have reasonable belief that someone is in immediate danger of self-harm;
|
||||
|
||||
**(b)** **Specific Threats:** Specific, credible threats of self-harm or suicide are communicated;
|
||||
|
||||
**(c)** **Child Safety:** Situations involving minors at risk of harm;
|
||||
|
||||
**(d)** **Legal Requirements:** When required by applicable laws in relevant jurisdictions;
|
||||
|
||||
**(e)** **Court Orders:** When compelled by valid legal process;
|
||||
|
||||
**(f)** **Public Safety:** When broader public safety concerns are present;
|
||||
|
||||
**(g)** **Professional Obligations:** When professional duties require disclosure;
|
||||
|
||||
**(h)** **Emergency Circumstances:** When emergency services intervention may be necessary.
|
||||
|
||||
### 4.2 Information Sharing Protocols
|
||||
|
||||
When reporting is necessary:
|
||||
|
||||
**(a)** **Minimum Necessary:** Share only information necessary for safety purposes;
|
||||
|
||||
**(b)** **Relevant Authorities:** Contact appropriate local emergency services or mental health crisis teams;
|
||||
|
||||
**(c)** **Documentation:** Maintain detailed records of all reporting decisions and actions;
|
||||
|
||||
**(d)** **User Notification:** Inform users when reporting will occur, except when doing so would increase danger;
|
||||
|
||||
**(e)** **Legal Consultation:** Consult legal counsel when reporting obligations are unclear;
|
||||
|
||||
**(f)** **Follow-Up:** Follow up on reports to ensure appropriate action was taken;
|
||||
|
||||
**(g)** **Privacy Protection:** Maintain confidentiality to the maximum extent possible;
|
||||
|
||||
**(h)** **Professional Standards:** Follow all applicable professional and legal standards.
|
||||
|
||||
### 4.3 Jurisdictional Considerations
|
||||
|
||||
Our reporting obligations vary by jurisdiction and may include:
|
||||
|
||||
**(a)** **United States:** Varies by state; may include duty to warn or report;
|
||||
|
||||
**(b)** **European Union:** GDPR Article 6(1)(d) processing for vital interests;
|
||||
|
||||
**(c)** **Canada:** Provincial mental health legislation requirements;
|
||||
|
||||
**(d)** **Australia:** State-based mental health act obligations;
|
||||
|
||||
**(e)** **United Kingdom:** Mental Health Act and Care Act duties;
|
||||
|
||||
**(f)** **Other Jurisdictions:** Local mental health and emergency reporting laws;
|
||||
|
||||
**(g)** **International Users:** Applicable laws where user is located;
|
||||
|
||||
**(h)** **Treaty Obligations:** International agreements on emergency assistance.
|
||||
|
||||
### 4.4 Emergency Contact Protocols
|
||||
|
||||
For immediate emergencies, we maintain:
|
||||
|
||||
**(a)** **Emergency Services:** Direct contact information for emergency services in major jurisdictions;
|
||||
|
||||
**(b)** **Crisis Hotlines:** Comprehensive list of mental health crisis lines globally;
|
||||
|
||||
**(c)** **Professional Networks:** Contacts with mental health professionals for consultation;
|
||||
|
||||
**(d)** **Legal Counsel:** Access to legal advice on reporting obligations;
|
||||
|
||||
**(e)** **Local Authorities:** Contact information for relevant local authorities;
|
||||
|
||||
**(f)** **User Location Services:** Methods for determining user location when necessary for emergency response;
|
||||
|
||||
**(g)** **Translation Services:** Access to translation services for non-English communications;
|
||||
|
||||
**(h)** **24/7 Availability:** Round-the-clock access to emergency response capabilities.
|
||||
|
||||
## 5. RESOURCES AND REFERRALS
|
||||
|
||||
### 5.1 Crisis Resources Database
|
||||
|
||||
We maintain an up-to-date database of:
|
||||
|
||||
**IMMEDIATE CRISIS RESOURCES:**
|
||||
|
||||
**(a)** **National Suicide Prevention Lifeline (US):** 988 or 1-800-273-8255;
|
||||
|
||||
**(b)** **Crisis Text Line (US):** Text HOME to 741741;
|
||||
|
||||
**(c)** **Samaritans (UK):** 116 123;
|
||||
|
||||
**(d)** **Lifeline (Australia):** 13 11 14;
|
||||
|
||||
**(e)** **Talk Suicide Canada:** 1-833-456-4566;
|
||||
|
||||
**(f)** **International Association for Suicide Prevention:** Global resources directory;
|
||||
|
||||
**(g)** **Emergency Services:** 911 (US), 999 (UK), 112 (EU), 000 (Australia);
|
||||
|
||||
**(h)** **Local Crisis Centers:** Regional crisis intervention centres.
|
||||
|
||||
**ONGOING SUPPORT RESOURCES:**
|
||||
|
||||
**(a)** **BetterHelp:** Online therapy platform;
|
||||
|
||||
**(b)** **Psychology Today:** Mental health professional directory;
|
||||
|
||||
**(c)** **National Alliance on Mental Illness (NAMI):** Support groups and resources;
|
||||
|
||||
**(d)** **Crisis Intervention Team (CIT):** Law enforcement crisis response;
|
||||
|
||||
**(e)** **Peer Support Networks:** Peer-led mental health support groups;
|
||||
|
||||
**(f)** **Community Mental Health Centers:** Local community-based services;
|
||||
|
||||
**(g)** **University Counselling Centers:** For students and academic community;
|
||||
|
||||
**(h)** **Employee Assistance Programs:** Workplace mental health resources.
|
||||
|
||||
### 5.2 Specialised Resources
|
||||
|
||||
**DEMOGRAPHIC-SPECIFIC RESOURCES:**
|
||||
|
||||
**(a)** **Youth Resources:** Teen-specific crisis lines and support services;
|
||||
|
||||
**(b)** **LGBTQ+ Support:** The Trevor Project and similar organisations;
|
||||
|
||||
**(c)** **Veterans Support:** VA Crisis Line and veteran-specific services;
|
||||
|
||||
**(d)** **Cultural Resources:** Culturally-specific mental health organisations;
|
||||
|
||||
**(e)** **Language-Specific:** Resources available in multiple languages;
|
||||
|
||||
**(f)** **Religious Support:** Faith-based counselling and support services;
|
||||
|
||||
**(g)** **Professional Support:** Resources for healthcare workers and first responders;
|
||||
|
||||
**(h)** **Accessibility Resources:** Services for individuals with disabilities.
|
||||
|
||||
### 5.3 Resource Quality Assurance
|
||||
|
||||
All resources in our database are:
|
||||
|
||||
**(a)** **Professionally Vetted:** Reviewed for credibility and professional standards;
|
||||
|
||||
**(b)** **Regularly Updated:** Information verified and updated at least quarterly;
|
||||
|
||||
**(c)** **Accessibility Checked:** Assessed for accessibility and availability;
|
||||
|
||||
**(d)** **Culturally Appropriate:** Evaluated for cultural sensitivity and relevance;
|
||||
|
||||
**(e)** **Evidence-Based:** Based on established mental health best practices;
|
||||
|
||||
**(f)** **User-Tested:** Feedback incorporated from users who have accessed services;
|
||||
|
||||
**(g)** **Professionally Recommended:** Endorsed by mental health professionals;
|
||||
|
||||
**(h)** **Quality Monitored:** Ongoing monitoring of service quality and availability.
|
||||
|
||||
### 5.4 Resource Presentation Guidelines
|
||||
|
||||
When providing resources:
|
||||
|
||||
**(a)** **Clear Presentation:** Present information clearly and accessibly;
|
||||
|
||||
**(b)** **Multiple Options:** Provide several options to accommodate different needs;
|
||||
|
||||
**(c)** **Immediate vs. Ongoing:** Distinguish between crisis and ongoing support resources;
|
||||
|
||||
**(d)** **Local Relevance:** Prioritise geographically relevant resources when known;
|
||||
|
||||
**(e)** **No Recommendations:** Avoid recommending specific providers over others;
|
||||
|
||||
**(f)** **Qualification Clarity:** Clearly state our limitations in evaluating services;
|
||||
|
||||
**(g)** **User Choice:** Emphasise user autonomy in choosing appropriate support;
|
||||
|
||||
**(h)** **Follow-Up Information:** Provide information about what to expect from services.
|
||||
|
||||
## 6. TEAM TRAINING AND PREPAREDNESS
|
||||
|
||||
### 6.1 Mandatory Training Requirements
|
||||
|
||||
All team members receive training on:
|
||||
|
||||
**(a)** **Crisis Recognition:** Identifying signs of mental health crises;
|
||||
|
||||
**(b)** **Response Protocols:** Appropriate responses for different risk levels;
|
||||
|
||||
**(c)** **Legal Obligations:** Understanding reporting requirements and legal duties;
|
||||
|
||||
**(d)** **Resource Knowledge:** Familiarity with available mental health resources;
|
||||
|
||||
**(e)** **Boundary Setting:** Maintaining appropriate professional boundaries;
|
||||
|
||||
**(f)** **Documentation Standards:** Proper documentation of crisis situations;
|
||||
|
||||
**(g)** **Communication Skills:** Effective, empathetic communication techniques;
|
||||
|
||||
**(h)** **Self-Care Practices:** Managing the emotional impact of crisis work.
|
||||
|
||||
### 6.2 Specialised Training for Response Team
|
||||
|
||||
Designated crisis response team members receive additional training in:
|
||||
|
||||
**(a)** **Advanced Risk Assessment:** More sophisticated risk evaluation techniques;
|
||||
|
||||
**(b)** **De-escalation Techniques:** Basic de-escalation without providing therapy;
|
||||
|
||||
**(c)** **Legal Consultation:** When and how to consult legal counsel;
|
||||
|
||||
**(d)** **Emergency Coordination:** Coordinating with emergency services and authorities;
|
||||
|
||||
**(e)** **Cross-Cultural Competency:** Understanding cultural factors in crisis expression;
|
||||
|
||||
**(f)** **Technology Tools:** Using platform features for crisis response;
|
||||
|
||||
**(g)** **Incident Management:** Managing complex crisis situations;
|
||||
|
||||
**(h)** **Trauma-Informed Approaches:** Understanding trauma impacts on communication.
|
||||
|
||||
### 6.3 Ongoing Education and Updates
|
||||
|
||||
Our training programme includes:
|
||||
|
||||
**(a)** **Regular Updates:** Quarterly updates on policies and procedures;
|
||||
|
||||
**(b)** **Case Study Reviews:** Learning from anonymised real situations;
|
||||
|
||||
**(c)** **Guest Experts:** Presentations from mental health professionals;
|
||||
|
||||
**(d)** **Legal Updates:** Updates on changing legal requirements;
|
||||
|
||||
**(e)** **Technology Training:** Training on new tools and platform features;
|
||||
|
||||
**(f)** **Community Feedback:** Incorporating community input into training;
|
||||
|
||||
**(g)** **Industry Best Practices:** Learning from mental health and crisis intervention fields;
|
||||
|
||||
**(h)** **Performance Review:** Regular assessment of crisis response effectiveness.
|
||||
|
||||
### 6.4 Support for Team Members
|
||||
|
||||
We provide support for team members including:
|
||||
|
||||
**(a)** **Debriefing Sessions:** Regular debriefing after crisis situations;
|
||||
|
||||
**(b)** **Counselling Access:** Access to professional counselling services;
|
||||
|
||||
**(c)** **Peer Support:** Peer support networks for team members;
|
||||
|
||||
**(d)** **Workload Management:** Appropriate workload distribution and rotation;
|
||||
|
||||
**(e)** **Mental Health Days:** Paid mental health days and wellness support;
|
||||
|
||||
**(f)** **Professional Development:** Opportunities for relevant professional development;
|
||||
|
||||
**(g)** **Recognition Programmes:** Recognition for effective crisis response;
|
||||
|
||||
**(h)** **Exit Support:** Support for team members who need to step back from crisis work.
|
||||
|
||||
## 7. DOCUMENTATION AND RECORD KEEPING
|
||||
|
||||
### 7.1 Documentation Requirements
|
||||
|
||||
All crisis situations must be documented with:
|
||||
|
||||
**(a)** **Incident Details:** Date, time, platform, and nature of crisis indication;
|
||||
|
||||
**(b)** **Risk Assessment:** Initial and ongoing risk level assessments;
|
||||
|
||||
**(c)** **Response Actions:** All actions taken and resources provided;
|
||||
|
||||
**(d)** **Personnel Involved:** Team members involved in response;
|
||||
|
||||
**(e)** **User Communications:** Relevant communications with user (sanitised for privacy);
|
||||
|
||||
**(f)** **External Contacts:** Any contacts made with emergency services or authorities;
|
||||
|
||||
**(g)** **Follow-Up Actions:** Ongoing monitoring and follow-up actions;
|
||||
|
||||
**(h)** **Resolution Status:** Current status and any resolution achieved.
|
||||
|
||||
### 7.2 Privacy and Confidentiality
|
||||
|
||||
Crisis documentation must balance thorough record-keeping with privacy:
|
||||
|
||||
**(a)** **Need-to-Know Basis:** Access limited to personnel with legitimate need;
|
||||
|
||||
**(b)** **Anonymisation:** Personal identifiers removed where possible;
|
||||
|
||||
**(c)** **Secure Storage:** All records stored in secure, encrypted systems;
|
||||
|
||||
**(d)** **Retention Limits:** Records retained only as long as necessary;
|
||||
|
||||
**(e)** **User Rights:** Users maintain rights over their personal information;
|
||||
|
||||
**(f)** **Legal Privilege:** Attorney-client privilege maintained where applicable;
|
||||
|
||||
**(g)** **Disclosure Logging:** All disclosures logged and justified;
|
||||
|
||||
**(h)** **Regular Review:** Regular review of documentation practices for privacy compliance.
|
||||
|
||||
### 7.3 Reporting and Analysis
|
||||
|
||||
We conduct regular analysis of crisis situations to:
|
||||
|
||||
**(a)** **Identify Trends:** Recognise patterns in crisis presentations;
|
||||
|
||||
**(b)** **Improve Responses:** Enhance response protocols based on outcomes;
|
||||
|
||||
**(c)** **Resource Evaluation:** Assess effectiveness of provided resources;
|
||||
|
||||
**(d)** **Training Needs:** Identify additional training requirements;
|
||||
|
||||
**(e)** **Policy Updates:** Update policies based on practical experience;
|
||||
|
||||
**(f)** **Risk Mitigation:** Implement preventive measures where appropriate;
|
||||
|
||||
**(g)** **Community Impact:** Understand impact on community wellbeing;
|
||||
|
||||
**(h)** **Legal Compliance:** Ensure ongoing compliance with legal obligations.
|
||||
|
||||
### 7.4 Quality Assurance
|
||||
|
||||
Our documentation system includes:
|
||||
|
||||
**(a)** **Regular Audits:** Periodic audits of documentation quality and completeness;
|
||||
|
||||
**(b)** **Accuracy Checks:** Verification of information accuracy and completeness;
|
||||
|
||||
**(c)** **Template Updates:** Regular updates to documentation templates;
|
||||
|
||||
**(d)** **Training Integration:** Integration of documentation training into team education;
|
||||
|
||||
**(e)** **System Improvements:** Ongoing improvements to documentation systems;
|
||||
|
||||
**(f)** **Error Correction:** Procedures for correcting documentation errors;
|
||||
|
||||
**(g)** **Backup Systems:** Redundant storage and backup procedures;
|
||||
|
||||
**(h)** **Access Monitoring:** Monitoring and logging of record access.
|
||||
|
||||
## 8. COMMUNITY EDUCATION AND PREVENTION
|
||||
|
||||
### 8.1 Mental Health Awareness
|
||||
|
||||
We promote mental health awareness through:
|
||||
|
||||
**(a)** **Educational Content:** Regular content about mental health resources and awareness;
|
||||
|
||||
**(b)** **Resource Sharing:** Proactive sharing of mental health resources and information;
|
||||
|
||||
**(c)** **De-stigmatisation:** Efforts to reduce stigma around mental health discussions;
|
||||
|
||||
**(d)** **Community Events:** Mental health awareness events and campaigns;
|
||||
|
||||
**(e)** **Expert Partnerships:** Collaboration with mental health organisations;
|
||||
|
||||
**(f)** **Peer Support:** Facilitating peer support networks within our community;
|
||||
|
||||
**(g)** **Self-Care Promotion:** Encouraging healthy coping strategies and self-care;
|
||||
|
||||
**(h)** **Crisis Prevention:** Educational content about recognising crisis warning signs.
|
||||
|
||||
### 8.2 Community Guidelines for Mental Health Discussions
|
||||
|
||||
Our community guidelines establish:
|
||||
|
||||
**(a)** **Respectful Discussion:** Standards for respectful mental health conversations;
|
||||
|
||||
**(b)** **No Diagnosis:** Prohibition on attempting to diagnose community members;
|
||||
|
||||
**(c)** **Professional Referral:** Encouragement to seek professional help when appropriate;
|
||||
|
||||
**(d)** **Privacy Respect:** Respect for individuals' privacy regarding mental health;
|
||||
|
||||
**(e)** **Support Boundaries:** Appropriate boundaries for peer support;
|
||||
|
||||
**(f)** **Crisis Recognition:** Guidelines for recognising and responding to crisis situations;
|
||||
|
||||
**(g)** **Resource Sharing:** Appropriate ways to share mental health resources;
|
||||
|
||||
**(h)** **Harmful Content:** Prohibition on content that could harm vulnerable individuals.
|
||||
|
||||
### 8.3 Proactive Support Measures
|
||||
|
||||
We implement proactive measures including:
|
||||
|
||||
**(a)** **Wellness Checks:** Voluntary wellness check-ins for community members;
|
||||
|
||||
**(b)** **Support Groups:** Facilitated support groups for various mental health topics;
|
||||
|
||||
**(c)** **Mentorship Programmes:** Peer mentorship programmes with mental health awareness;
|
||||
|
||||
**(d)** **Crisis Resources Visibility:** Prominent display of crisis resources on all platforms;
|
||||
|
||||
**(e)** **Regular Reminders:** Regular reminders about available support and resources;
|
||||
|
||||
**(f)** **Inclusive Environment:** Creating inclusive environments that support mental wellbeing;
|
||||
|
||||
**(g)** **Stress Reduction:** Platform features and policies that reduce unnecessary stress;
|
||||
|
||||
**(h)** **Community Connection:** Features that promote healthy community connection.
|
||||
|
||||
### 8.4 Partnership Development
|
||||
|
||||
We develop partnerships with:
|
||||
|
||||
**(a)** **Mental Health Organisations:** Local and national mental health organisations;
|
||||
|
||||
**(b)** **Crisis Centers:** Crisis intervention centres and hotlines;
|
||||
|
||||
**(c)** **Educational Institutions:** Schools and universities with mental health programmes;
|
||||
|
||||
**(d)** **Healthcare Systems:** Healthcare systems with mental health services;
|
||||
|
||||
**(e)** **Professional Associations:** Mental health professional associations;
|
||||
|
||||
**(f)** **Research Institutions:** Academic institutions researching mental health;
|
||||
|
||||
**(g)** **Advocacy Groups:** Mental health advocacy and awareness groups;
|
||||
|
||||
**(h)** **Technology Partners:** Technology companies with mental health focus.
|
||||
|
||||
## 9. LEGAL COMPLIANCE AND LIABILITY
|
||||
|
||||
### 9.1 Limitation of Liability
|
||||
|
||||
**IMPORTANT LEGAL DISCLAIMERS:**
|
||||
|
||||
**(a)** We provide information and resources but not professional mental health services;
|
||||
|
||||
**(b)** We cannot guarantee the effectiveness of any resources or referrals provided;
|
||||
|
||||
**(c)** We are not liable for outcomes resulting from mental health crises;
|
||||
|
||||
**(d)** Our response capabilities are limited and should not be relied upon for emergency intervention;
|
||||
|
||||
**(e)** Users must seek appropriate professional help for mental health concerns;
|
||||
|
||||
**(f)** We disclaim liability for third-party resources and services;
|
||||
|
||||
**(g)** Emergency services should be contacted directly for immediate crises;
|
||||
|
||||
**(h)** This policy does not create professional therapeutic relationships.
|
||||
|
||||
### 9.2 Duty of Care Limitations
|
||||
|
||||
Our duty of care is limited to:
|
||||
|
||||
**(a)** **Reasonable Response:** Responding reasonably within our capabilities;
|
||||
|
||||
**(b)** **Resource Provision:** Providing appropriate resource information;
|
||||
|
||||
**(c)** **Professional Referral:** Referring to appropriate professional services;
|
||||
|
||||
**(d)** **Legal Compliance:** Meeting applicable legal reporting requirements;
|
||||
|
||||
**(e)** **Documentation:** Maintaining appropriate records of interventions;
|
||||
|
||||
**(f)** **Training Maintenance:** Ensuring team members are appropriately trained;
|
||||
|
||||
**(g)** **Policy Adherence:** Following established crisis response protocols;
|
||||
|
||||
**(h)** **Continuous Improvement:** Regular review and improvement of procedures.
|
||||
|
||||
### 9.3 Professional Boundaries
|
||||
|
||||
We maintain clear boundaries by:
|
||||
|
||||
**(a)** **No Diagnosis:** Never providing diagnoses or professional assessments;
|
||||
|
||||
**(b)** **No Treatment:** Not providing therapy, counselling, or medical treatment;
|
||||
|
||||
**(c)** **No Medical Advice:** Avoiding medical recommendations or medication advice;
|
||||
|
||||
**(d)** **Referral Only:** Limiting our role to information and referral;
|
||||
|
||||
**(e)** **Clear Communication:** Clearly communicating our limitations to users;
|
||||
|
||||
**(f)** **Professional Consultation:** Consulting professionals when appropriate;
|
||||
|
||||
**(g)** **Documentation of Limits:** Documenting the limitations of our interventions;
|
||||
|
||||
**(h)** **Ethical Standards:** Adhering to ethical standards for non-professional support.
|
||||
|
||||
### 9.4 Legal Consultation Framework
|
||||
|
||||
We maintain legal consultation capabilities for:
|
||||
|
||||
**(a)** **Reporting Decisions:** When reporting obligations are unclear;
|
||||
|
||||
**(b)** **Jurisdictional Questions:** Complex cross-jurisdictional situations;
|
||||
|
||||
**(c)** **Privacy Concerns:** Balancing privacy with safety obligations;
|
||||
|
||||
**(d)** **Liability Questions:** Understanding liability exposure and mitigation;
|
||||
|
||||
**(e)** **Policy Development:** Legal review of policy changes and updates;
|
||||
|
||||
**(f)** **Complex Cases:** Unusual or complex crisis situations;
|
||||
|
||||
**(g)** **Regulatory Compliance:** Ensuring compliance with changing regulations;
|
||||
|
||||
**(h)** **Risk Assessment:** Legal assessment of institutional risks.
|
||||
|
||||
## 10. CONTACT INFORMATION AND RESOURCES
|
||||
|
||||
### 10.1 Internal Crisis Response Team
|
||||
|
||||
**Crisis Response Team:** crisis-response@nhcarrigan.com
|
||||
|
||||
**Senior Leadership:** leadership@nhcarrigan.com (for escalation)
|
||||
|
||||
**Legal Counsel:** legal@nhcarrigan.com (for legal consultation)
|
||||
|
||||
**24/7 Emergency Escalation:** Available through designated emergency contact procedures
|
||||
|
||||
### 10.2 External Emergency Resources
|
||||
|
||||
**IMMEDIATE CRISIS RESOURCES:**
|
||||
|
||||
**(a)** **National Suicide Prevention Lifeline (US):** 988
|
||||
|
||||
**(b)** **Crisis Text Line (US):** Text HOME to 741741
|
||||
|
||||
**(c)** **Samaritans (UK):** 116 123
|
||||
|
||||
**(d)** **Lifeline (Australia):** 13 11 14
|
||||
|
||||
**(e)** **Crisis Services Canada:** 1-833-456-4566
|
||||
|
||||
**(f)** **Emergency Services:** 911 (US), 999 (UK), 112 (EU), 000 (Australia)
|
||||
|
||||
### 10.3 Professional Mental Health Resources
|
||||
|
||||
**(a)** **Psychology Today:** https://www.psychologytoday.com
|
||||
|
||||
**(b)** **BetterHelp:** https://www.betterhelp.com
|
||||
|
||||
**(c)** **National Alliance on Mental Illness:** https://www.nami.org
|
||||
|
||||
**(d)** **Mental Health America:** https://www.mhanational.org
|
||||
|
||||
**(e)** **International Association for Suicide Prevention:** https://www.iasp.info
|
||||
|
||||
### 10.4 Community Support and Information
|
||||
|
||||
**Community Support:** community@nhcarrigan.com
|
||||
|
||||
**General Information:** info@nhcarrigan.com
|
||||
|
||||
**Resource Updates:** To report outdated resources or suggest additions
|
||||
|
||||
**Policy Feedback:** feedback@nhcarrigan.com
|
||||
|
||||
---
|
||||
|
||||
**Document Version:** 1.0
|
||||
|
||||
**Last Updated:** 25 September 2025
|
||||
|
||||
**Effective Date:** 25 September 2025
|
||||
|
||||
**Next Review Date:** 25 March 2026
|
||||
|
||||
---
|
||||
|
||||
*This Crisis and Mental Health Management Policy establishes our commitment to supporting community wellbeing whilst maintaining clear professional boundaries. We are not mental health professionals and cannot provide therapeutic services. If you or someone you know is in crisis, please contact emergency services or professional crisis intervention services immediately.*
|
||||
|
||||
**IF YOU ARE IN IMMEDIATE DANGER, CONTACT EMERGENCY SERVICES: 911 (US), 999 (UK), 112 (EU), 000 (Australia)**
|
||||
+683
-87
@@ -2,120 +2,716 @@
|
||||
title: DMCA and Intellectual Property Compliance Policy
|
||||
---
|
||||
|
||||
## 1. General Principles
|
||||
**PROTECTING CREATIVE RIGHTS WHILST FOSTERING INNOVATION**
|
||||
|
||||
- Respect for intellectual property rights is fundamental to our community's ethos and operations.
|
||||
- All community members, including users, contributors, and administrators, are expected to comply with applicable copyright laws, trademark regulations, and licensing terms.
|
||||
- This policy aims to protect the rights of content creators while fostering an environment of innovation and knowledge sharing.
|
||||
- Ignorance of the law or this policy is not considered a valid excuse for non-compliance.
|
||||
## 1. POLICY OVERVIEW AND PRINCIPLES
|
||||
|
||||
## 2. Sharing Copyrighted Material
|
||||
### 1.1 Fundamental Principles
|
||||
|
||||
- Do not share copyrighted material without explicit permission from the copyright holder or a valid license.
|
||||
- When sharing is permitted, always include proper attribution and adhere to any specified terms of use.
|
||||
- Linking to legitimately published content is generally acceptable, but copying and pasting substantial portions is discouraged unless explicitly allowed by the copyright holder.
|
||||
- Be aware that even user-generated content on social media platforms may be copyrighted.
|
||||
- When in doubt about the copyright status of material, err on the side of caution and seek permission or clarification.
|
||||
This Digital Millennium Copyright Act and Intellectual Property Compliance Policy ("Policy") is founded upon the following core principles:
|
||||
|
||||
## 3. Fair Use and Educational Purposes
|
||||
**(a)** Respect for intellectual property rights is essential to our community's values and operations;
|
||||
|
||||
- Limited use of copyrighted material for commentary, criticism, news reporting, teaching, scholarship, or research may be permissible under fair use doctrines.
|
||||
- When relying on fair use, clearly indicate the source and purpose of the use.
|
||||
- Fair use is determined on a case-by-case basis, considering factors such as:
|
||||
- The purpose and character of the use (commercial vs. non-profit educational)
|
||||
- The nature of the copyrighted work
|
||||
- The amount and substantiality of the portion used
|
||||
- The effect of the use upon the potential market for the copyrighted work
|
||||
- Educational use does not automatically qualify as fair use; consider all factors carefully.
|
||||
**(b)** All community members, including users, contributors, administrators, and staff, must comply with applicable copyright laws, trademark regulations, and licensing requirements;
|
||||
|
||||
## 4. Proper Attribution
|
||||
**(c)** We are committed to fostering an environment that encourages innovation and knowledge sharing whilst protecting creators' rights;
|
||||
|
||||
- When using or referencing others' work, always provide clear and comprehensive attribution.
|
||||
- Attribution should include:
|
||||
- The name of the creator or author
|
||||
- The title of the work
|
||||
- The source (e.g., website URL, book title, journal name)
|
||||
- The date of publication or creation (if available)
|
||||
- Any applicable license terms
|
||||
- For digital content, consider using hyperlinks to the original source when possible.
|
||||
- Follow citation guidelines appropriate to your field or the context of use (e.g., APA, Chicago).
|
||||
**(d)** Ignorance of applicable law or this Policy does not constitute a valid defence for non-compliance.
|
||||
|
||||
## 5. Original Content Creation and Sharing
|
||||
### 1.2 Scope of Application
|
||||
|
||||
- Community members are encouraged to create and share original content.
|
||||
- By sharing original content in our community spaces, you grant the community a non-exclusive, worldwide, royalty-free right to use, reproduce, modify, adapt, publish, translate, distribute, and display the content within the community.
|
||||
- You retain copyright of your original work unless explicitly stated otherwise.
|
||||
- Consider adding a clear copyright notice to your original works.
|
||||
- Be mindful of using third-party content (e.g., images, music) in your original creations, ensuring you have the right to incorporate such elements.
|
||||
This Policy applies to:
|
||||
|
||||
## 6. Open Source and Creative Commons
|
||||
**(a)** All users of our Services, platforms, and applications;
|
||||
|
||||
- We encourage the use of open source licenses and Creative Commons for shared content where appropriate.
|
||||
- When using open source or Creative Commons licensed material, adhere strictly to the terms of the license.
|
||||
- Familiarize yourself with different types of open source and Creative Commons licenses and their requirements (e.g., attribution, share-alike, non-commercial use).
|
||||
- Provide clear license information when sharing your own content under open source or Creative Commons terms.
|
||||
**(b)** All content uploaded, shared, or transmitted through our Services;
|
||||
|
||||
## 7. Code Snippets and Examples
|
||||
**(c)** All community interactions, including forums, chat platforms, and collaborative spaces;
|
||||
|
||||
- Short code snippets shared for educational or troubleshooting purposes are generally acceptable under fair use.
|
||||
- For larger code samples, include license information and attribution if taken from other sources.
|
||||
- When sharing your own code, consider using an appropriate open source license.
|
||||
- Be aware that copying entire programs or substantial portions of code may infringe copyright, even if source attribution is provided.
|
||||
**(d)** All third-party integrations and linked content.
|
||||
|
||||
## 8. Plagiarism
|
||||
### 1.3 Legal Framework
|
||||
|
||||
- Presenting others' work as your own is strictly prohibited and considered a serious offence.
|
||||
- This includes code, text, images, ideas, and any other form of content.
|
||||
- Plagiarism can have serious consequences, including loss of community privileges, academic penalties, or legal action.
|
||||
- Always cite your sources and use quotation marks for direct quotes.
|
||||
This Policy is designed to comply with:
|
||||
|
||||
## 9. Trademark Usage
|
||||
**(a)** The Digital Millennium Copyright Act (DMCA) of the United States;
|
||||
|
||||
- Respect trademark rights when referencing products, services, or organizations.
|
||||
- Use trademark symbols (™, ®) appropriately when referring to trademarked names.
|
||||
- Avoid using trademarks in a way that suggests endorsement or affiliation without permission.
|
||||
**(b)** International copyright treaties and conventions;
|
||||
|
||||
## 10. Digital Millennium Copyright Act (DMCA) Compliance
|
||||
**(c)** Applicable national and regional intellectual property laws;
|
||||
|
||||
- We comply with the DMCA and maintain a policy for addressing claims of copyright infringement.
|
||||
- If you believe your copyrighted work has been improperly used within our community, submit a DMCA takedown notice to DMCA@nhcarrigan.com.
|
||||
- DMCA takedown notices must include:
|
||||
- Identification of the copyrighted work claimed to have been infringed
|
||||
- Identification of the allegedly infringing material
|
||||
- Contact information for the complainant
|
||||
- A statement of good faith belief that the use is not authorized
|
||||
- A statement, under penalty of perjury, that the information in the notice is accurate and that the complainant is authorized to act on behalf of the copyright owner
|
||||
- We will promptly investigate all legitimate DMCA takedown notices and take appropriate action, which may include content removal or account suspension.
|
||||
**(d)** Platform-specific terms of service and licensing requirements.
|
||||
|
||||
## 11. Counter-Notifications
|
||||
## 2. COPYRIGHT PROTECTION AND COMPLIANCE
|
||||
|
||||
- If you believe your content was wrongly removed due to a DMCA takedown notice, you may submit a counter-notification.
|
||||
- Counter-notifications must include:
|
||||
- Identification of the removed material and its location before removal
|
||||
- A statement under penalty of perjury that you have a good faith belief the material was removed by mistake or misidentification
|
||||
- Your name, address, and telephone number
|
||||
- A statement that you consent to the jurisdiction of the federal district court for the judicial district in which you reside
|
||||
### 2.1 Prohibition on Unauthorised Sharing
|
||||
|
||||
## 12. Repeat Infringer Policy
|
||||
You must not share copyrighted material through our Services unless you have:
|
||||
|
||||
- We maintain a repeat infringer policy to ensure ongoing DMCA compliance.
|
||||
- Users who repeatedly infringe copyrights may have their accounts terminated.
|
||||
- We keep records of DMCA notices and counter-notifications to identify repeat infringers.
|
||||
**(a)** Explicit written permission from the copyright holder;
|
||||
|
||||
## 13. Education and Awareness
|
||||
**(b)** A valid licence that permits such sharing;
|
||||
|
||||
- We are committed to educating our community about intellectual property rights and responsibilities.
|
||||
- Regular updates and resources on copyright law and best practices will be provided.
|
||||
- Members are encouraged to seek clarification on any aspect of this policy they find unclear.
|
||||
**(c)** Legal basis for the sharing under applicable copyright exceptions or limitations.
|
||||
|
||||
## 14. Policy Updates
|
||||
### 2.2 Proper Attribution Requirements
|
||||
|
||||
- This policy may be updated periodically to reflect changes in law, technology, or community needs.
|
||||
- Continued use of our community platforms constitutes acceptance of the current policy.
|
||||
When sharing material is permitted, you must:
|
||||
|
||||
## 15. Disclaimer
|
||||
**(a)** Provide complete and accurate attribution to the original creator;
|
||||
|
||||
- This policy is not exhaustive and does not constitute legal advice.
|
||||
- Users are encouraged to seek independent legal counsel for specific intellectual property matters.
|
||||
**(b)** Include all required copyright notices and licensing information;
|
||||
|
||||
By participating in our community, you agree to abide by this DMCA and Intellectual Property Compliance Policy. Failure to comply may result in content removal, account suspension, or other appropriate actions as determined by community administrators.
|
||||
**(c)** Comply with any specific attribution requirements set forth in applicable licences;
|
||||
|
||||
**(d)** Clearly indicate any modifications made to the original material.
|
||||
|
||||
### 2.3 Linking vs. Copying
|
||||
|
||||
**(a)** **Permitted Practice:** Linking to legitimately published content is generally acceptable and encouraged;
|
||||
|
||||
**(b)** **Restricted Practice:** Copying and redistributing substantial portions of copyrighted material is prohibited unless explicitly permitted;
|
||||
|
||||
**(c)** **User-Generated Content:** Be aware that content posted on social media platforms and similar services may be subject to copyright protection.
|
||||
|
||||
### 2.4 Due Diligence Requirements
|
||||
|
||||
When uncertain about the copyright status of material:
|
||||
|
||||
**(a)** Conduct reasonable research to determine copyright ownership;
|
||||
|
||||
**(b)** Err on the side of caution and seek permission or clarification;
|
||||
|
||||
**(c)** Consult with legal professionals when necessary;
|
||||
|
||||
**(d)** Document your efforts to comply with copyright requirements.
|
||||
|
||||
## 3. FAIR USE AND EDUCATIONAL PURPOSES
|
||||
|
||||
### 3.1 Fair Use Principles
|
||||
|
||||
Limited use of copyrighted material may be permissible under fair use doctrines for:
|
||||
|
||||
**(a)** Commentary, criticism, or parody;
|
||||
|
||||
**(b)** News reporting and journalism;
|
||||
|
||||
**(c)** Teaching, scholarship, and academic research;
|
||||
|
||||
**(d)** Other purposes recognised under applicable fair use provisions.
|
||||
|
||||
### 3.2 Fair Use Assessment Factors
|
||||
|
||||
When claiming fair use, you must consider:
|
||||
|
||||
**(a)** **Purpose and Character:** Whether the use is commercial or non-profit educational, and whether it transforms the original work;
|
||||
|
||||
**(b)** **Nature of the Work:** Whether the copyrighted work is factual or creative in nature;
|
||||
|
||||
**(c)** **Amount Used:** The proportion and substantiality of the portion used in relation to the whole;
|
||||
|
||||
**(d)** **Market Impact:** The effect of your use on the potential market for the original work.
|
||||
|
||||
### 3.3 Educational Use Clarification
|
||||
|
||||
**(a)** Educational context does not automatically qualify as fair use;
|
||||
|
||||
**(b)** All four factors must be considered in each specific case;
|
||||
|
||||
**(c)** Systematic copying for educational purposes may not qualify for fair use protection;
|
||||
|
||||
**(d)** Commercial educational uses face higher scrutiny than non-profit educational activities.
|
||||
|
||||
### 3.4 Documentation and Source Citation
|
||||
|
||||
When relying on fair use:
|
||||
|
||||
**(a)** Clearly indicate the source and purpose of your use;
|
||||
|
||||
**(b)** Provide proper attribution to the original creator;
|
||||
|
||||
**(c)** Document your fair use analysis and reasoning;
|
||||
|
||||
**(d)** Be prepared to defend your fair use claim if challenged.
|
||||
|
||||
## 4. ATTRIBUTION AND CITATION STANDARDS
|
||||
|
||||
### 4.1 Mandatory Attribution Elements
|
||||
|
||||
When using or referencing others' work, you must provide:
|
||||
|
||||
**(a)** The full name of the creator or author;
|
||||
|
||||
**(b)** The complete title of the work;
|
||||
|
||||
**(c)** The source (website URL, publication details, repository location);
|
||||
|
||||
**(d)** The date of publication or creation (where available);
|
||||
|
||||
**(e)** Any applicable licence terms and requirements;
|
||||
|
||||
**(f)** A clear indication of any modifications made to the original.
|
||||
|
||||
### 4.2 Digital Citation Best Practices
|
||||
|
||||
For digital content:
|
||||
|
||||
**(a)** Use hyperlinks to original sources whenever possible;
|
||||
|
||||
**(b)** Ensure links are functional and lead directly to the referenced content;
|
||||
|
||||
**(c)** Include archived versions of links where content may be ephemeral;
|
||||
|
||||
**(d)** Follow established citation standards appropriate to your field or context.
|
||||
|
||||
### 4.3 Academic and Professional Citations
|
||||
|
||||
When creating academic or professional content:
|
||||
|
||||
**(a)** Follow recognised citation styles (APA, MLA, Chicago, etc.);
|
||||
|
||||
**(b)** Maintain consistency in citation format throughout your work;
|
||||
|
||||
**(c)** Include complete bibliographies or reference lists;
|
||||
|
||||
**(d)** Distinguish between different types of sources and references.
|
||||
|
||||
## 5. ORIGINAL CONTENT CREATION AND LICENSING
|
||||
|
||||
### 5.1 Original Content Rights
|
||||
|
||||
When creating and sharing original content through our Services:
|
||||
|
||||
**(a)** You retain copyright ownership of your original works;
|
||||
|
||||
**(b)** You grant our community certain usage rights as specified in our Terms of Service;
|
||||
|
||||
**(c)** You may specify additional licensing terms for your content;
|
||||
|
||||
**(d)** Copyright notices may be added to clarify ownership and rights.
|
||||
|
||||
### 5.2 Third-Party Content in Original Works
|
||||
|
||||
When incorporating third-party elements into your original creations:
|
||||
|
||||
**(a)** Ensure you have appropriate rights to use all incorporated elements;
|
||||
|
||||
**(b)** Provide proper attribution for all third-party contributions;
|
||||
|
||||
**(c)** Comply with licensing requirements of incorporated elements;
|
||||
|
||||
**(d)** Consider the impact on your ability to license the resulting work.
|
||||
|
||||
### 5.3 Community Usage Rights
|
||||
|
||||
By sharing content in our community spaces, you grant:
|
||||
|
||||
**(a)** A non-exclusive, worldwide, royalty-free right to use, reproduce, and display the content within community contexts;
|
||||
|
||||
**(b)** The right to modify content for technical compatibility and presentation purposes;
|
||||
|
||||
**(c)** The right to archive content for community preservation purposes;
|
||||
|
||||
**(d)** Such other rights as may be specified in our Terms of Service.
|
||||
|
||||
### 5.4 Licensing Recommendations
|
||||
|
||||
We encourage content creators to:
|
||||
|
||||
**(a)** Consider using Creative Commons licences for broader sharing;
|
||||
|
||||
**(b)** Clearly specify the terms under which others may use their content;
|
||||
|
||||
**(c)** Understand the implications of different licensing choices;
|
||||
|
||||
**(d)** Seek legal advice for complex licensing scenarios.
|
||||
|
||||
## 6. OPEN SOURCE AND CREATIVE COMMONS COMPLIANCE
|
||||
|
||||
### 6.1 Open Source Software
|
||||
|
||||
When using open source software:
|
||||
|
||||
**(a)** Carefully review and comply with all licence requirements;
|
||||
|
||||
**(b)** Include required copyright notices and licence texts;
|
||||
|
||||
**(c)** Understand obligations regarding source code availability;
|
||||
|
||||
**(d)** Be aware of licence compatibility issues when combining multiple open source components.
|
||||
|
||||
### 6.2 Creative Commons Materials
|
||||
|
||||
When using Creative Commons licensed content:
|
||||
|
||||
**(a)** Identify the specific licence version and requirements;
|
||||
|
||||
**(b)** Provide appropriate attribution as specified in the licence;
|
||||
|
||||
**(c)** Comply with share-alike requirements where applicable;
|
||||
|
||||
**(d)** Respect non-commercial use restrictions where specified;
|
||||
|
||||
**(e)** Understand the implications of no-derivatives restrictions.
|
||||
|
||||
### 6.3 Licence Verification
|
||||
|
||||
**(a)** Verify licence information from authoritative sources;
|
||||
|
||||
**(b)** Be cautious of incorrect or outdated licence information;
|
||||
|
||||
**(c)** Contact creators directly when licence terms are unclear;
|
||||
|
||||
**(d)** Maintain records of your licence compliance efforts.
|
||||
|
||||
### 6.4 Contributing to Open Projects
|
||||
|
||||
When contributing to open source or Creative Commons projects:
|
||||
|
||||
**(a)** Understand the licensing implications of your contributions;
|
||||
|
||||
**(b)** Ensure you have the right to license your contributions under project terms;
|
||||
|
||||
**(c)** Follow project-specific contribution guidelines and requirements;
|
||||
|
||||
**(d)** Be aware that contributions may be difficult to retract once accepted.
|
||||
|
||||
## 7. CODE SHARING AND TECHNICAL CONTENT
|
||||
|
||||
### 7.1 Code Snippets and Examples
|
||||
|
||||
**(a)** **Short Code Snippets:** Generally acceptable under fair use for educational or troubleshooting purposes;
|
||||
|
||||
**(b)** **Substantial Code Blocks:** Require proper licensing and attribution;
|
||||
|
||||
**(c)** **Complete Programs:** Must comply with applicable software licences;
|
||||
|
||||
**(d)** **Modified Code:** Must respect original licence requirements and indicate modifications.
|
||||
|
||||
### 7.2 Educational Code Sharing
|
||||
|
||||
When sharing code for educational purposes:
|
||||
|
||||
**(a)** Provide context and explanation for the code's purpose;
|
||||
|
||||
**(b)** Include appropriate licensing information and attribution;
|
||||
|
||||
**(c)** Consider the educational value versus the amount of code shared;
|
||||
|
||||
**(d)** Respect any restrictions on commercial use or redistribution.
|
||||
|
||||
### 7.3 Technical Documentation
|
||||
|
||||
**(a)** Original technical documentation is encouraged and valued;
|
||||
|
||||
**(b)** When referencing existing documentation, provide proper attribution;
|
||||
|
||||
**(c)** Distinguish between your original explanations and quoted material;
|
||||
|
||||
**(d)** Consider creating transformative content rather than copying existing documentation.
|
||||
|
||||
### 7.4 Open Source Best Practices
|
||||
|
||||
When sharing your own code:
|
||||
|
||||
**(a)** Choose an appropriate open source licence;
|
||||
|
||||
**(b)** Include clear licence files and copyright notices;
|
||||
|
||||
**(c)** Provide adequate documentation and attribution for dependencies;
|
||||
|
||||
**(d)** Consider the long-term implications of your licensing choices.
|
||||
|
||||
## 8. PLAGIARISM PREVENTION AND ACADEMIC INTEGRITY
|
||||
|
||||
### 8.1 Definition and Prohibition
|
||||
|
||||
Plagiarism, defined as presenting others' work as your own, is strictly prohibited and includes:
|
||||
|
||||
**(a)** Copying text, code, images, or other content without attribution;
|
||||
|
||||
**(b)** Paraphrasing others' ideas without acknowledgement;
|
||||
|
||||
**(c)** Using others' unique ideas, methodologies, or approaches without credit;
|
||||
|
||||
**(d)** Self-plagiarism (reusing your own previously published work without disclosure).
|
||||
|
||||
### 8.2 Consequences of Plagiarism
|
||||
|
||||
Plagiarism may result in:
|
||||
|
||||
**(a)** Immediate removal of infringing content;
|
||||
|
||||
**(b)** Suspension or termination of community privileges;
|
||||
|
||||
**(c)** Notification to relevant academic or professional institutions;
|
||||
|
||||
**(d)** Legal action in cases of commercial infringement;
|
||||
|
||||
**(e)** Permanent record of violation affecting future community participation.
|
||||
|
||||
### 8.3 Prevention Measures
|
||||
|
||||
To avoid plagiarism:
|
||||
|
||||
**(a)** Always cite your sources and provide proper attribution;
|
||||
|
||||
**(b)** Use quotation marks for direct quotes and indicate the source;
|
||||
|
||||
**(c)** Paraphrase in your own words whilst still providing attribution;
|
||||
|
||||
**(d)** Maintain detailed notes on your sources during research;
|
||||
|
||||
**(e)** When in doubt, provide attribution rather than risk infringement.
|
||||
|
||||
### 8.4 Academic and Professional Standards
|
||||
|
||||
**(a)** Follow the citation standards appropriate to your field or institution;
|
||||
|
||||
**(b)** Understand that different disciplines may have different expectations;
|
||||
|
||||
**(c)** Seek guidance from supervisors or colleagues when uncertain;
|
||||
|
||||
**(d)** Consider using plagiarism detection tools to verify your own work.
|
||||
|
||||
## 9. TRADEMARK COMPLIANCE
|
||||
|
||||
### 9.1 Trademark Recognition and Respect
|
||||
|
||||
When referencing trademarked products, services, or organisations:
|
||||
|
||||
**(a)** Use appropriate trademark symbols (™ for common law trademarks, ® for registered trademarks);
|
||||
|
||||
**(b)** Capitalise trademark names correctly;
|
||||
|
||||
**(c)** Avoid using trademarks in a way that suggests endorsement or affiliation without permission;
|
||||
|
||||
**(d)** Respect trademark guidelines published by trademark owners.
|
||||
|
||||
### 9.2 Nominative Fair Use
|
||||
|
||||
You may use trademarks for:
|
||||
|
||||
**(a)** Identifying and discussing the trademarked products or services;
|
||||
|
||||
**(b)** Comparative analysis and commentary;
|
||||
|
||||
**(c)** News reporting and factual discussion;
|
||||
|
||||
**(d)** Parody and criticism (with careful consideration of other legal restrictions).
|
||||
|
||||
### 9.3 Prohibited Trademark Uses
|
||||
|
||||
You must not:
|
||||
|
||||
**(a)** Use trademarks in a way that causes confusion about source or affiliation;
|
||||
|
||||
**(b)** Use trademarks as part of your own product or service names without permission;
|
||||
|
||||
**(c)** Modify or alter trademark logos or designs;
|
||||
|
||||
**(d)** Use trademarks in a way that dilutes their distinctiveness or harms their reputation.
|
||||
|
||||
### 9.4 Community Brand Protection
|
||||
|
||||
**(a)** Respect our own trademarks and brand elements;
|
||||
|
||||
**(b)** Do not use our logos or brand names without permission;
|
||||
|
||||
**(c)** Avoid creating confusion about official versus unofficial community content;
|
||||
|
||||
**(d)** Contact us for guidance on appropriate use of our brand elements.
|
||||
|
||||
## 10. DMCA COMPLIANCE AND TAKEDOWN PROCEDURES
|
||||
|
||||
### 10.1 DMCA Policy Statement
|
||||
|
||||
We comply with the Digital Millennium Copyright Act and maintain procedures for addressing claims of copyright infringement. We respect the rights of copyright owners whilst protecting the legitimate interests of our users.
|
||||
|
||||
### 10.2 Submitting DMCA Takedown Notices
|
||||
|
||||
To submit a valid DMCA takedown notice, contact **dmca@nhcarrigan.com** with the following information:
|
||||
|
||||
**(a)** **Identification of Copyrighted Work:** A clear description of the copyrighted work claimed to have been infringed, including registration numbers if applicable;
|
||||
|
||||
**(b)** **Identification of Infringing Material:** Specific identification of the allegedly infringing material and its location on our Services;
|
||||
|
||||
**(c)** **Contact Information:** Your complete contact information, including name, address, telephone number, and email address;
|
||||
|
||||
**(d)** **Good Faith Statement:** A statement that you have a good faith belief that the disputed use is not authorised by the copyright owner, its agent, or the law;
|
||||
|
||||
**(e)** **Accuracy Statement:** A statement, under penalty of perjury, that the information in the notice is accurate and that you are authorised to act on behalf of the copyright owner;
|
||||
|
||||
**(f)** **Physical or Electronic Signature:** Your physical or electronic signature.
|
||||
|
||||
### 10.3 Processing DMCA Notices
|
||||
|
||||
Upon receipt of a valid DMCA takedown notice:
|
||||
|
||||
**(a)** We will promptly investigate the claim;
|
||||
|
||||
**(b)** If the claim appears valid, we will remove or disable access to the allegedly infringing material;
|
||||
|
||||
**(c)** We will notify the affected user of the takedown and provide information about the counter-notification process;
|
||||
|
||||
**(d)** We will document the takedown for our records and potential future reference.
|
||||
|
||||
### 10.4 Response Timeline
|
||||
|
||||
We endeavour to process DMCA takedown notices within:
|
||||
|
||||
**(a)** **Initial Review:** Twenty-four (24) hours for urgent matters;
|
||||
|
||||
**(b)** **Investigation and Action:** Seventy-two (72) hours for standard cases;
|
||||
|
||||
**(c)** **Complex Cases:** Up to seven (7) business days with notification to relevant parties.
|
||||
|
||||
## 11. DMCA COUNTER-NOTIFICATION PROCESS
|
||||
|
||||
### 11.1 Right to Counter-Notification
|
||||
|
||||
If you believe your content was removed in error or misidentification, you may submit a counter-notification to **dmca@nhcarrigan.com**.
|
||||
|
||||
### 11.2 Counter-Notification Requirements
|
||||
|
||||
A valid counter-notification must include:
|
||||
|
||||
**(a)** **Identification of Removed Material:** Specific identification of the material that was removed and its previous location;
|
||||
|
||||
**(b)** **Good Faith Statement:** A statement under penalty of perjury that you have a good faith belief the material was removed due to mistake or misidentification;
|
||||
|
||||
**(c)** **Personal Information:** Your complete name, address, and telephone number;
|
||||
|
||||
**(d)** **Jurisdiction Consent:** A statement that you consent to the jurisdiction of the federal district court for your district (or the judicial district where you reside if outside the United States);
|
||||
|
||||
**(e)** **Service of Process:** A statement that you will accept service of process from the party who submitted the takedown notice;
|
||||
|
||||
**(f)** **Physical or Electronic Signature:** Your physical or electronic signature.
|
||||
|
||||
### 11.3 Counter-Notification Processing
|
||||
|
||||
Upon receipt of a valid counter-notification:
|
||||
|
||||
**(a)** We will provide a copy to the original complainant;
|
||||
|
||||
**(b)** We will inform the complainant that the material will be restored in 10-14 business days unless they file a court action;
|
||||
|
||||
**(c)** If no court action is filed, we will restore the material according to the statutory timeline;
|
||||
|
||||
**(d)** We will document the counter-notification and restoration for our records.
|
||||
|
||||
### 11.4 Legal Consequences
|
||||
|
||||
Both takedown notices and counter-notifications are made under penalty of perjury. False claims may result in liability for damages, attorney's fees, and other legal consequences under applicable law.
|
||||
|
||||
## 12. REPEAT INFRINGER POLICY
|
||||
|
||||
### 12.1 Policy Statement
|
||||
|
||||
We maintain a policy for addressing repeat copyright infringers to ensure ongoing DMCA compliance and protect the rights of copyright holders.
|
||||
|
||||
### 12.2 Tracking and Documentation
|
||||
|
||||
We maintain records of:
|
||||
|
||||
**(a)** All DMCA takedown notices received;
|
||||
|
||||
**(b)** Counter-notifications submitted;
|
||||
|
||||
**(c)** Actions taken in response to notices;
|
||||
|
||||
**(d)** User violation history and patterns.
|
||||
|
||||
### 12.3 Consequences for Repeat Infringement
|
||||
|
||||
Users who repeatedly infringe copyright may face:
|
||||
|
||||
**(a)** **First Offence:** Warning and education about copyright compliance;
|
||||
|
||||
**(b)** **Second Offence:** Temporary suspension of account privileges;
|
||||
|
||||
**(c)** **Subsequent Offences:** Progressive disciplinary measures up to and including permanent account termination;
|
||||
|
||||
**(d)** **Severe Cases:** Immediate termination for egregious or commercial infringement.
|
||||
|
||||
### 12.4 Appeals Process
|
||||
|
||||
Users subject to repeat infringer sanctions may:
|
||||
|
||||
**(a)** Request review of their case within thirty (30) days of sanction;
|
||||
|
||||
**(b)** Provide evidence of good faith efforts to comply with copyright law;
|
||||
|
||||
**(c)** Demonstrate that previous notices were invalid or withdrawn;
|
||||
|
||||
**(d)** Participate in educational programmes to reinstate privileges.
|
||||
|
||||
## 13. EDUCATION AND AWARENESS
|
||||
|
||||
### 13.1 Community Education Commitment
|
||||
|
||||
We are committed to educating our community about intellectual property rights and responsibilities through:
|
||||
|
||||
**(a)** Regular updates to this Policy and related guidance materials;
|
||||
|
||||
**(b)** Educational resources on copyright, fair use, and licensing;
|
||||
|
||||
**(c)** Community workshops and training sessions;
|
||||
|
||||
**(d)** Clear examples of acceptable and unacceptable practices.
|
||||
|
||||
### 13.2 Resources and Guidance
|
||||
|
||||
We provide access to:
|
||||
|
||||
**(a)** Links to authoritative sources on copyright law and fair use;
|
||||
|
||||
**(b)** Guides to common licensing terms and requirements;
|
||||
|
||||
**(c)** Templates and examples for proper attribution;
|
||||
|
||||
**(d)** Contact information for additional support and guidance.
|
||||
|
||||
### 13.3 Seeking Clarification
|
||||
|
||||
Community members are encouraged to:
|
||||
|
||||
**(a)** Ask questions about unclear aspects of this Policy;
|
||||
|
||||
**(b)** Seek guidance before sharing potentially problematic content;
|
||||
|
||||
**(c)** Report suspected violations or concerns;
|
||||
|
||||
**(d)** Participate in educational activities and discussions.
|
||||
|
||||
### 13.4 Professional Development
|
||||
|
||||
We encourage community members to:
|
||||
|
||||
**(a)** Stay informed about changes in intellectual property law;
|
||||
|
||||
**(b)** Participate in relevant professional development opportunities;
|
||||
|
||||
**(c)** Share knowledge and best practices with other community members;
|
||||
|
||||
**(d)** Contribute to the development of community guidelines and resources.
|
||||
|
||||
## 14. POLICY UPDATES AND COMPLIANCE
|
||||
|
||||
### 14.1 Regular Policy Review
|
||||
|
||||
This Policy is reviewed regularly to ensure:
|
||||
|
||||
**(a)** Compliance with current legal requirements;
|
||||
|
||||
**(b)** Alignment with technological developments;
|
||||
|
||||
**(c)** Responsiveness to community needs and feedback;
|
||||
|
||||
**(d)** Consistency with best practices in the field.
|
||||
|
||||
### 14.2 Update Notifications
|
||||
|
||||
Changes to this Policy will be communicated through:
|
||||
|
||||
**(a)** Prominent notices on our Services and websites;
|
||||
|
||||
**(b)** Email notifications to registered users;
|
||||
|
||||
**(c)** Community forum announcements and discussions;
|
||||
|
||||
**(d)** Documentation updates with clear change logs.
|
||||
|
||||
### 14.3 Continued Use and Acceptance
|
||||
|
||||
Continued participation in our community following Policy updates constitutes acceptance of the revised terms. If you do not agree to the updated Policy, you must cease using our Services.
|
||||
|
||||
### 14.4 Feedback and Suggestions
|
||||
|
||||
We welcome feedback on this Policy and suggestions for improvement. Please contact us at **dmca@nhcarrigan.com** with your comments and recommendations.
|
||||
|
||||
## 15. CONTACT INFORMATION AND SUPPORT
|
||||
|
||||
### 15.1 Primary Contact
|
||||
|
||||
For all matters related to this Policy, including DMCA notices, questions, and reports of violations:
|
||||
|
||||
**Email:** dmca@nhcarrigan.com
|
||||
|
||||
### 15.2 Additional Resources
|
||||
|
||||
**General Support:** privacy@nhcarrigan.com
|
||||
|
||||
**Community Forum:** https://forum.nhcarrigan.com
|
||||
|
||||
**Legal Inquiries:** legal@nhcarrigan.com
|
||||
|
||||
### 15.3 Response Commitments
|
||||
|
||||
We commit to:
|
||||
|
||||
**(a)** Acknowledging receipt of all communications within forty-eight (48) hours;
|
||||
|
||||
**(b)** Providing substantive responses within the timeframes specified in this Policy;
|
||||
|
||||
**(c)** Treating all inquiries with professionalism and confidentiality;
|
||||
|
||||
**(d)** Maintaining accurate records of all communications and actions taken.
|
||||
|
||||
### 15.4 Emergency Procedures
|
||||
|
||||
For urgent copyright infringement matters that pose immediate legal risk:
|
||||
|
||||
**(a)** Contact us immediately at dmca@nhcarrigan.com with "URGENT" in the subject line;
|
||||
|
||||
**(b)** Provide all required information for expedited processing;
|
||||
|
||||
**(c)** Be prepared to provide additional documentation or clarification promptly;
|
||||
|
||||
**(d)** Understand that expedited processing may require additional verification steps.
|
||||
|
||||
## 16. LEGAL DISCLAIMER
|
||||
|
||||
### 16.1 Policy Limitations
|
||||
|
||||
This Policy:
|
||||
|
||||
**(a)** Is not exhaustive and does not cover every possible scenario;
|
||||
|
||||
**(b)** Does not constitute legal advice or create an attorney-client relationship;
|
||||
|
||||
**(c)** Should be supplemented with independent legal counsel for specific situations;
|
||||
|
||||
**(d)** May not address all applicable laws in every jurisdiction.
|
||||
|
||||
### 16.2 Professional Consultation
|
||||
|
||||
Users are encouraged to:
|
||||
|
||||
**(a)** Seek independent legal counsel for complex intellectual property matters;
|
||||
|
||||
**(b)** Consult with qualified professionals before making significant licensing decisions;
|
||||
|
||||
**(c)** Obtain professional advice when facing potential infringement claims;
|
||||
|
||||
**(d)** Understand that our guidance cannot replace professional legal advice.
|
||||
|
||||
### 16.3 Limitation of Liability
|
||||
|
||||
**IMPORTANT: Comprehensive liability limitations and warranty disclaimers applicable to this Policy and all our services are set forth in our Limitation of Liability and Indemnification Policy, which is incorporated herein by reference.**
|
||||
|
||||
In addition to those comprehensive protections:
|
||||
|
||||
**(a)** This Policy and related guidance are provided on an "as is" basis;
|
||||
|
||||
**(b)** Users assume responsibility for their own compliance with intellectual property laws;
|
||||
|
||||
**(c)** Professional legal advice should be sought for significant legal decisions.
|
||||
|
||||
**Last Updated:** [Date to be inserted]
|
||||
|
||||
**Effective Date:** [Date to be inserted]
|
||||
|
||||
---
|
||||
|
||||
*By participating in our community, you agree to abide by this DMCA and Intellectual Property Compliance Policy. This Policy is designed to protect the rights of creators whilst fostering an environment of innovation and knowledge sharing. For questions or concerns, please contact us at dmca@nhcarrigan.com.*
|
||||
|
||||
@@ -0,0 +1,871 @@
|
||||
---
|
||||
title: Export Control and Sanctions Compliance Policy
|
||||
---
|
||||
|
||||
**ENSURING COMPLIANCE WITH INTERNATIONAL TRADE REGULATIONS AND SANCTIONS PROGRAMMES**
|
||||
|
||||
## 1. INTRODUCTION AND SCOPE
|
||||
|
||||
### 1.1 Policy Purpose and Objectives
|
||||
|
||||
This Export Control and Sanctions Compliance Policy ("Policy") establishes comprehensive procedures and requirements for compliance with export control laws, economic sanctions programmes, and international trade regulations applicable to nhcarrigan ("we," "us," "our," or "the Company") and users of our services, applications, and platforms (collectively, the "Services"). This Policy ensures lawful international distribution and use of our technology and services whilst preventing unauthorised access by restricted parties.
|
||||
|
||||
### 1.2 Regulatory Framework
|
||||
|
||||
This Policy addresses compliance with multiple regulatory regimes including:
|
||||
|
||||
**(a)** **United States**: Export Administration Regulations (EAR), International Traffic in Arms Regulations (ITAR), and Office of Foreign Assets Control (OFAC) sanctions;
|
||||
|
||||
**(b)** **United Kingdom**: Export Control Order 2008, Trade Sanctions Regulations, and HM Treasury sanctions programmes;
|
||||
|
||||
**(c)** **European Union**: EU Dual-Use Export Control Regulation, Common Foreign and Security Policy sanctions, and member state export control laws;
|
||||
|
||||
**(d)** **Canada**: Export and Import Controls Act, Special Economic Measures Act, and Freezing Assets of Corrupt Foreign Officials Act;
|
||||
|
||||
**(e)** **Australia**: Defence Trade Controls Act, Autonomous Sanctions Act, and Export Control Act;
|
||||
|
||||
**(f)** **International**: United Nations Security Council sanctions, multilateral export control regimes, and international treaties;
|
||||
|
||||
**(g)** **Other Jurisdictions**: Export control and sanctions laws of other countries where we operate or provide services;
|
||||
|
||||
**(h)** **Emerging Regulations**: New and evolving export control and sanctions regulations worldwide.
|
||||
|
||||
### 1.3 Application and Scope
|
||||
|
||||
This Policy applies to:
|
||||
|
||||
**(a)** **Technology Services**: All software, applications, cloud services, and digital technologies provided by nhcarrigan;
|
||||
|
||||
**(b)** **Data and Information**: Technical data, source code, algorithms, and proprietary information;
|
||||
|
||||
**(c)** **User Interactions**: All user registrations, service provision, and technical support activities;
|
||||
|
||||
**(d)** **Business Relationships**: Commercial partnerships, licensing agreements, and business development activities;
|
||||
|
||||
**(e)** **International Operations**: Cross-border service provision, data transfers, and international business activities;
|
||||
|
||||
**(f)** **Third-Party Relationships**: Relationships with vendors, contractors, distributors, and integration partners;
|
||||
|
||||
**(g)** **Employee Activities**: Employee travel, training, and international business activities;
|
||||
|
||||
**(h)** **Research and Development**: Research collaborations, technical exchanges, and development partnerships.
|
||||
|
||||
### 1.4 Compliance Commitment
|
||||
|
||||
nhcarrigan is committed to:
|
||||
|
||||
**(a)** **Legal Compliance**: Full compliance with all applicable export control and sanctions laws;
|
||||
|
||||
**(b)** **Risk Management**: Implementing robust risk management and compliance procedures;
|
||||
|
||||
**(c)** **Due Diligence**: Conducting thorough due diligence on all international activities;
|
||||
|
||||
**(d)** **Training and Education**: Providing comprehensive training on export control and sanctions compliance;
|
||||
|
||||
**(e)** **Monitoring and Auditing**: Regular monitoring and auditing of compliance activities;
|
||||
|
||||
**(f)** **Continuous Improvement**: Continuously improving compliance procedures and controls;
|
||||
|
||||
**(g)** **Cooperation**: Cooperating fully with government authorities and regulatory agencies;
|
||||
|
||||
**(h)** **Transparency**: Maintaining transparency in our compliance efforts and reporting.
|
||||
|
||||
## 2. CLASSIFICATION AND CONTROL DETERMINATIONS
|
||||
|
||||
### 2.1 Technology Classification
|
||||
|
||||
We have classified our technology and services according to applicable export control regulations:
|
||||
|
||||
**(a)** **Software Classification**: Our software applications are classified under relevant Export Control Classification Numbers (ECCNs) or equivalent classifications;
|
||||
|
||||
**(b)** **Encryption Technology**: Software containing encryption capabilities is subject to special classification and licensing requirements;
|
||||
|
||||
**(c)** **Dual-Use Technology**: Technology with both civilian and military applications receives appropriate dual-use classifications;
|
||||
|
||||
**(d)** **Mass Market Software**: Consumer software that qualifies for mass market exceptions under applicable regulations;
|
||||
|
||||
**(e)** **Cloud Services**: Cloud-based services are classified according to their underlying technology and functionality;
|
||||
|
||||
**(f)** **Technical Data**: Technical documentation, source code, and proprietary information receive appropriate classifications;
|
||||
|
||||
**(g)** **Emerging Technologies**: New technologies are evaluated and classified upon development or deployment;
|
||||
|
||||
**(h)** **Third-Party Components**: Third-party software components and dependencies are evaluated for their export control implications.
|
||||
|
||||
### 2.2 Control Determinations
|
||||
|
||||
Based on classification analysis, our services are subject to the following control determinations:
|
||||
|
||||
**(a)** **General Software**: Most of our general-purpose software applications are not subject to export licensing requirements under applicable mass market and de minimis provisions;
|
||||
|
||||
**(b)** **Encryption Software**: Software containing encryption functionality may be subject to notification requirements and certain geographic restrictions;
|
||||
|
||||
**(c)** **Technical Support**: Technical support and training services may be subject to restrictions when provided to certain countries or entities;
|
||||
|
||||
**(d)** **Source Code**: Source code access and distribution may be subject to additional licensing requirements;
|
||||
|
||||
**(e)** **Customisation Services**: Custom development and integration services may require export licences depending on the end user and end use;
|
||||
|
||||
**(f)** **Research Collaboration**: Research and development collaborations may be subject to licensing requirements;
|
||||
|
||||
**(g)** **Data Processing**: Data processing services may be subject to restrictions based on the nature of data and end users;
|
||||
|
||||
**(h)** **Artificial Intelligence**: AI and machine learning capabilities may be subject to emerging export control regulations.
|
||||
|
||||
### 2.3 License Requirements and Exceptions
|
||||
|
||||
We utilise the following licensing approaches:
|
||||
|
||||
**(a)** **No Licence Required (NLR)**: Many of our services qualify for NLR status under applicable regulations;
|
||||
|
||||
**(b)** **License Exceptions**: We utilise available license exceptions such as mass market software exceptions and technology and software under restriction (TSR);
|
||||
|
||||
**(c)** **General Licences**: We operate under general licences where available and applicable;
|
||||
|
||||
**(d)** **Specific Licences**: We obtain specific export licences when required for particular transactions or relationships;
|
||||
|
||||
**(e)** **Encryption Registrations**: We maintain appropriate encryption registrations and notifications;
|
||||
|
||||
**(f)** **Deemed Export Licences**: We obtain deemed export licences for technology transfers to foreign nationals;
|
||||
|
||||
**(g)** **Re-export Licences**: We obtain re-export licences when required for downstream distribution;
|
||||
|
||||
**(h)** **Transit Licences**: We obtain transit licences when required for temporary presence in controlled jurisdictions.
|
||||
|
||||
### 2.4 Ongoing Classification Reviews
|
||||
|
||||
We maintain ongoing classification reviews through:
|
||||
|
||||
**(a)** **Regular Reviews**: Annual reviews of all technology classifications and determinations;
|
||||
|
||||
**(b)** **Change Management**: Evaluation of export control implications for all product changes and updates;
|
||||
|
||||
**(c)** **Legal Consultation**: Regular consultation with export control counsel and specialists;
|
||||
|
||||
**(d)** **Regulatory Updates**: Monitoring and incorporation of regulatory changes and updates;
|
||||
|
||||
**(e)** **Industry Guidance**: Participation in industry working groups and guidance development;
|
||||
|
||||
**(f)** **Government Engagement**: Engagement with government agencies for classification guidance;
|
||||
|
||||
**(g)** **Third-Party Assessments**: Periodic third-party assessments of classification determinations;
|
||||
|
||||
**(h)** **Documentation Maintenance**: Comprehensive documentation of all classification decisions and rationale.
|
||||
|
||||
## 3. SANCTIONS COMPLIANCE PROGRAMME
|
||||
|
||||
### 3.1 Sanctions Screening and Monitoring
|
||||
|
||||
We implement comprehensive sanctions screening including:
|
||||
|
||||
**(a)** **Customer Screening**: All customers and users are screened against applicable sanctions lists before service provision;
|
||||
|
||||
**(b)** **Real-Time Monitoring**: Real-time monitoring of sanctions list updates and automated re-screening of existing users;
|
||||
|
||||
**(c)** **Enhanced Due Diligence**: Enhanced due diligence for users and transactions from high-risk jurisdictions;
|
||||
|
||||
**(d)** **Ongoing Monitoring**: Continuous monitoring of user activities for potential sanctions violations;
|
||||
|
||||
**(e)** **Transaction Screening**: Screening of financial transactions and commercial activities for sanctions compliance;
|
||||
|
||||
**(f)** **Supply Chain Screening**: Screening of vendors, partners, and supply chain participants;
|
||||
|
||||
**(g)** **Employee Screening**: Background screening of employees for sanctions and security concerns;
|
||||
|
||||
**(h)** **Third-Party Screening**: Screening of all third-party service providers and business partners.
|
||||
|
||||
### 3.2 Prohibited Parties and Jurisdictions
|
||||
|
||||
We maintain comprehensive restrictions on:
|
||||
|
||||
**(a)** **Specially Designated Nationals (SDNs)**: Individuals and entities designated by OFAC and other sanctions authorities;
|
||||
|
||||
**(b)** **Denied Persons**: Entities and individuals on denied persons lists maintained by various governments;
|
||||
|
||||
**(c)** **Entity Lists**: Companies and organisations on entity lists requiring special licensing;
|
||||
|
||||
**(d)** **Restricted Countries**: Countries subject to comprehensive or sectoral sanctions programmes;
|
||||
|
||||
**(e)** **Sectoral Sanctions**: Entities subject to sectoral sanctions in specific industries;
|
||||
|
||||
**(f)** **Military End Users**: Military end users in certain countries subject to specific restrictions;
|
||||
|
||||
**(g)** **Government Entities**: Government entities in restricted countries or engaged in prohibited activities;
|
||||
|
||||
**(h)** **Shell Companies**: Shell companies or entities designed to circumvent sanctions restrictions.
|
||||
|
||||
### 3.3 Geographic Restrictions
|
||||
|
||||
Our services are subject to geographic restrictions including:
|
||||
|
||||
**(a)** **Embargoed Countries**: Complete prohibition on service provision to comprehensively embargoed countries;
|
||||
|
||||
**(b)** **Restricted Regions**: Limited service provision to regions subject to sectoral or targeted sanctions;
|
||||
|
||||
**(c)** **Contested Territories**: Special procedures for contested territories and regions with disputed sovereignty;
|
||||
|
||||
**(d)** **High-Risk Jurisdictions**: Enhanced due diligence and monitoring for high-risk jurisdictions;
|
||||
|
||||
**(e)** **Transit Restrictions**: Restrictions on services transiting through certain countries;
|
||||
|
||||
**(f)** **IP Address Blocking**: Technical measures to prevent access from restricted IP address ranges;
|
||||
|
||||
**(g)** **Shipping Restrictions**: Restrictions on physical shipments to certain destinations;
|
||||
|
||||
**(h)** **Payment Restrictions**: Restrictions on payment processing for certain jurisdictions.
|
||||
|
||||
### 3.4 Sanctions Violation Response
|
||||
|
||||
When potential sanctions violations are identified:
|
||||
|
||||
**(a)** **Immediate Action**: Immediate suspension of services and freezing of relevant accounts or transactions;
|
||||
|
||||
**(b)** **Investigation**: Comprehensive investigation of the circumstances and scope of potential violations;
|
||||
|
||||
**(c)** **Legal Consultation**: Immediate consultation with sanctions counsel and legal advisors;
|
||||
|
||||
**(d)** **Government Notification**: Prompt notification to relevant government authorities as required;
|
||||
|
||||
**(e)** **Remedial Measures**: Implementation of remedial measures to address violations and prevent recurrence;
|
||||
|
||||
**(f)** **Compliance Review**: Comprehensive review of compliance procedures to identify and address weaknesses;
|
||||
|
||||
**(g)** **Training Enhancement**: Enhanced training and awareness programmes following violations;
|
||||
|
||||
**(h)** **Documentation**: Comprehensive documentation of all violation response activities and remedial measures.
|
||||
|
||||
## 4. USER AND CUSTOMER COMPLIANCE
|
||||
|
||||
### 4.1 User Registration and Verification
|
||||
|
||||
All users must comply with our registration and verification procedures:
|
||||
|
||||
**(a)** **Identity Verification**: Verification of user identity through government-issued identification;
|
||||
|
||||
**(b)** **Address Verification**: Verification of physical address and business location;
|
||||
|
||||
**(c)** **Business Information**: Provision of complete business information including ownership structure;
|
||||
|
||||
**(d)** **End Use Certification**: Certification of intended end use of services and technology;
|
||||
|
||||
**(e)** **Compliance Representations**: Representations regarding compliance with applicable export control and sanctions laws;
|
||||
|
||||
**(f)** **Screening Results**: Successful completion of sanctions and export control screening;
|
||||
|
||||
**(g)** **Documentation Requirements**: Provision of required documentation for enhanced due diligence;
|
||||
|
||||
**(h)** **Ongoing Obligations**: Acceptance of ongoing compliance obligations and monitoring requirements.
|
||||
|
||||
### 4.2 Prohibited End Uses and End Users
|
||||
|
||||
Users are prohibited from:
|
||||
|
||||
**(a)** **Weapons Development**: Using services for development, production, or use of weapons of mass destruction;
|
||||
|
||||
**(b)** **Military Applications**: Military end uses in countries subject to arms embargoes or military restrictions;
|
||||
|
||||
**(c)** **Proliferation Activities**: Activities related to proliferation of weapons of mass destruction or delivery systems;
|
||||
|
||||
**(d)** **Terrorism Support**: Any activities supporting terrorism or terrorist organisations;
|
||||
|
||||
**(e)** **Human Rights Violations**: Activities supporting serious human rights violations or abuses;
|
||||
|
||||
**(f)** **Cybercrime**: Criminal cyber activities including hacking, fraud, or other illegal online activities;
|
||||
|
||||
**(g)** **Sanctions Evasion**: Activities designed to evade or circumvent sanctions or export control restrictions;
|
||||
|
||||
**(h)** **Unauthorised Transfers**: Transfers to prohibited parties or for prohibited end uses.
|
||||
|
||||
### 4.3 User Compliance Obligations
|
||||
|
||||
All users agree to:
|
||||
|
||||
**(a)** **Legal Compliance**: Comply with all applicable export control and sanctions laws in their jurisdiction;
|
||||
|
||||
**(b)** **Accurate Information**: Provide accurate and complete information regarding their identity, location, and intended use;
|
||||
|
||||
**(c)** **Use Restrictions**: Use services only for authorised purposes and in compliance with applicable restrictions;
|
||||
|
||||
**(d)** **Transfer Restrictions**: Not transfer, re-export, or provide access to services to prohibited parties or for prohibited uses;
|
||||
|
||||
**(e)** **Notification Obligations**: Promptly notify us of any changes in circumstances that may affect compliance;
|
||||
|
||||
**(f)** **Cooperation**: Cooperate fully with our compliance monitoring and verification activities;
|
||||
|
||||
**(g)** **Record Keeping**: Maintain appropriate records of service usage and compliance activities;
|
||||
|
||||
**(h)** **Audit Rights**: Accept our right to audit compliance with export control and sanctions obligations.
|
||||
|
||||
### 4.4 Enhanced Due Diligence Requirements
|
||||
|
||||
For certain users and transactions, we implement enhanced due diligence including:
|
||||
|
||||
**(a)** **Background Investigations**: Comprehensive background investigations of key personnel and ownership;
|
||||
|
||||
**(b)** **Site Visits**: Physical site visits to verify business operations and end use;
|
||||
|
||||
**(c)** **Reference Checks**: Verification of business references and commercial relationships;
|
||||
|
||||
**(d)** **Financial Verification**: Verification of funding sources and financial stability;
|
||||
|
||||
**(e)** **Technical Assessments**: Technical assessments of intended use and system integration;
|
||||
|
||||
**(f)** **Legal Opinions**: Legal opinions regarding compliance with local laws and regulations;
|
||||
|
||||
**(g)** **Ongoing Monitoring**: Enhanced ongoing monitoring of activities and transactions;
|
||||
|
||||
**(h)** **Periodic Reviews**: Regular reviews and updates of due diligence information.
|
||||
|
||||
## 5. TECHNOLOGY TRANSFER CONTROLS
|
||||
|
||||
### 5.1 Technical Data and Source Code
|
||||
|
||||
Transfer of technical data and source code is subject to:
|
||||
|
||||
**(a)** **Classification Requirements**: Proper classification of all technical data according to export control regulations;
|
||||
|
||||
**(b)** **Licensing Determinations**: Determination of licensing requirements for specific transfers;
|
||||
|
||||
**(c)** **End User Verification**: Verification of end users and intended use of technical data;
|
||||
|
||||
**(d)** **Access Controls**: Implementation of appropriate access controls for sensitive technical information;
|
||||
|
||||
**(e)** **Transfer Documentation**: Comprehensive documentation of all technical data transfers;
|
||||
|
||||
**(f)** **Encryption Requirements**: Use of appropriate encryption for transmission of controlled technical data;
|
||||
|
||||
**(g)** **Audit Trails**: Maintenance of complete audit trails for technical data access and transfer;
|
||||
|
||||
**(h)** **Retention Policies**: Implementation of appropriate retention and deletion policies for technical data.
|
||||
|
||||
### 5.2 Foreign National Employee Controls
|
||||
|
||||
For foreign national employees and contractors:
|
||||
|
||||
**(a)** **Deemed Export Licensing**: Obtaining appropriate deemed export licences for foreign national access to controlled technology;
|
||||
|
||||
**(b)** **Background Screening**: Comprehensive background screening and security clearance procedures;
|
||||
|
||||
**(c)** **Access Restrictions**: Implementation of appropriate access restrictions based on nationality and security clearance;
|
||||
|
||||
**(d)** **Training Requirements**: Specialised training on export control obligations and restrictions;
|
||||
|
||||
**(e)** **Monitoring Procedures**: Enhanced monitoring of foreign national access to controlled technology;
|
||||
|
||||
**(f)** **Documentation Requirements**: Comprehensive documentation of foreign national employment and access;
|
||||
|
||||
**(g)** **Reporting Obligations**: Compliance with reporting requirements for foreign national employment;
|
||||
|
||||
**(h)** **Termination Procedures**: Appropriate procedures for termination and technology access revocation.
|
||||
|
||||
### 5.3 Research and Development Collaborations
|
||||
|
||||
For research and development activities:
|
||||
|
||||
**(a)** **Collaboration Screening**: Screening of all research collaborators and institutional partners;
|
||||
|
||||
**(b)** **Fundamental Research**: Determination of fundamental research exceptions and applicability;
|
||||
|
||||
**(c)** **Publication Review**: Review of research publications for export control implications;
|
||||
|
||||
**(d)** **Conference Participation**: Compliance procedures for international conference participation;
|
||||
|
||||
**(e)** **Student Exchange**: Special procedures for student exchange and visiting researcher programmes;
|
||||
|
||||
**(f)** **Joint Development**: Compliance procedures for joint technology development projects;
|
||||
|
||||
**(g)** **Intellectual Property**: Management of intellectual property rights in international collaborations;
|
||||
|
||||
**(h)** **Government Funding**: Compliance with government funding requirements and restrictions.
|
||||
|
||||
### 5.4 Cloud and Remote Services
|
||||
|
||||
For cloud and remote service provision:
|
||||
|
||||
**(a)** **Data Location**: Understanding and controlling the geographic location of data processing and storage;
|
||||
|
||||
**(b)** **Remote Access**: Implementing appropriate controls for remote access by foreign nationals;
|
||||
|
||||
**(c)** **Service Architecture**: Designing service architecture to comply with export control requirements;
|
||||
|
||||
**(d)** **User Authentication**: Implementing robust user authentication and access control systems;
|
||||
|
||||
**(e)** **Audit Capabilities**: Maintaining comprehensive audit capabilities for cloud service usage;
|
||||
|
||||
**(f)** **Data Sovereignty**: Compliance with data sovereignty and localisation requirements;
|
||||
|
||||
**(g)** **Third-Party Infrastructure**: Managing export control risks in third-party cloud infrastructure;
|
||||
|
||||
**(h)** **Cross-Border Data Flows**: Controlling cross-border data flows in compliance with export control laws.
|
||||
|
||||
## 6. COMPLIANCE MONITORING AND ENFORCEMENT
|
||||
|
||||
### 6.1 Automated Monitoring Systems
|
||||
|
||||
We employ automated systems for compliance monitoring including:
|
||||
|
||||
**(a)** **Real-Time Screening**: Real-time screening of all user registrations and transactions against sanctions lists;
|
||||
|
||||
**(b)** **Pattern Recognition**: Advanced pattern recognition to identify potential sanctions evasion activities;
|
||||
|
||||
**(c)** **Geographic Monitoring**: Continuous monitoring of user geographic location and access patterns;
|
||||
|
||||
**(d)** **Transaction Analysis**: Automated analysis of transactions for compliance red flags;
|
||||
|
||||
**(e)** **Alert Systems**: Automated alert systems for potential compliance violations or concerns;
|
||||
|
||||
**(f)** **Data Analytics**: Advanced data analytics for identification of compliance risks and trends;
|
||||
|
||||
**(g)** **Machine Learning**: Machine learning systems for improved detection of violations and risks;
|
||||
|
||||
**(h)** **Integration Systems**: Integration with government databases and sanctions list feeds.
|
||||
|
||||
### 6.2 Manual Review Procedures
|
||||
|
||||
Supplementing automated systems, we maintain manual review procedures including:
|
||||
|
||||
**(a)** **High-Risk Transactions**: Manual review of all high-risk transactions and relationships;
|
||||
|
||||
**(b)** **Complex Cases**: Human review of complex compliance cases requiring judgement and analysis;
|
||||
|
||||
**(c)** **Exception Handling**: Manual processing of cases requiring special consideration or exceptions;
|
||||
|
||||
**(d)** **Escalation Procedures**: Clear escalation procedures for complex or uncertain compliance matters;
|
||||
|
||||
**(e)** **Expert Consultation**: Access to export control and sanctions experts for difficult cases;
|
||||
|
||||
**(f)** **Quality Assurance**: Quality assurance procedures for compliance screening and monitoring;
|
||||
|
||||
**(g)** **Regular Audits**: Regular audits of compliance procedures and decision-making;
|
||||
|
||||
**(h)** **Continuous Improvement**: Continuous improvement of manual review processes and procedures.
|
||||
|
||||
### 6.3 Violation Detection and Response
|
||||
|
||||
When potential violations are detected:
|
||||
|
||||
**(a)** **Immediate Containment**: Immediate action to contain potential violations and prevent escalation;
|
||||
|
||||
**(b)** **Investigation Launch**: Launch of comprehensive investigation into the scope and nature of violations;
|
||||
|
||||
**(c)** **Legal Consultation**: Immediate consultation with export control and sanctions counsel;
|
||||
|
||||
**(d)** **Documentation Preservation**: Preservation of all relevant documentation and electronic records;
|
||||
|
||||
**(e)** **Risk Assessment**: Assessment of legal, financial, and reputational risks associated with violations;
|
||||
|
||||
**(f)** **Corrective Action**: Implementation of immediate corrective actions to address violations;
|
||||
|
||||
**(g)** **Government Coordination**: Coordination with government authorities as required by law;
|
||||
|
||||
**(h)** **Stakeholder Communication**: Appropriate communication with stakeholders regarding violations and response.
|
||||
|
||||
### 6.4 Enforcement Actions
|
||||
|
||||
Compliance violations may result in:
|
||||
|
||||
**(a)** **Service Suspension**: Immediate suspension of services to violating users or entities;
|
||||
|
||||
**(b)** **Account Termination**: Permanent termination of user accounts and access to services;
|
||||
|
||||
**(c)** **Asset Freezing**: Freezing of assets and funds as required by sanctions regulations;
|
||||
|
||||
**(d)** **Data Deletion**: Deletion of data and information belonging to sanctioned parties;
|
||||
|
||||
**(e)** **Access Blocking**: Technical blocking of access from restricted IP addresses or locations;
|
||||
|
||||
**(f)** **Contract Termination**: Termination of commercial contracts and business relationships;
|
||||
|
||||
**(g)** **Legal Action**: Initiation of legal action to recover damages and prevent future violations;
|
||||
|
||||
**(h)** **Regulatory Reporting**: Reporting of violations to appropriate regulatory authorities.
|
||||
|
||||
## 7. TRAINING AND AWARENESS
|
||||
|
||||
### 7.1 Employee Training Programmes
|
||||
|
||||
All employees receive comprehensive export control and sanctions training including:
|
||||
|
||||
**(a)** **General Awareness**: Basic awareness training on export control and sanctions laws and regulations;
|
||||
|
||||
**(b)** **Role-Specific Training**: Specialised training based on job responsibilities and risk exposure;
|
||||
|
||||
**(c)** **New Employee Orientation**: Mandatory export control training for all new employees;
|
||||
|
||||
**(d)** **Annual Refresher**: Annual refresher training on updated laws, regulations, and procedures;
|
||||
|
||||
**(e)** **Specialised Workshops**: Specialised workshops for high-risk roles and functions;
|
||||
|
||||
**(f)** **Case Study Analysis**: Analysis of real-world cases and scenarios relevant to our business;
|
||||
|
||||
**(g)** **Regulatory Updates**: Training on new regulations and changes in export control and sanctions laws;
|
||||
|
||||
**(h)** **Certification Programmes**: Support for professional certification in export control and sanctions compliance.
|
||||
|
||||
### 7.2 Management and Leadership Training
|
||||
|
||||
Management and leadership receive enhanced training including:
|
||||
|
||||
**(a)** **Strategic Overview**: Strategic overview of export control and sanctions compliance in business operations;
|
||||
|
||||
**(b)** **Risk Management**: Risk management principles and strategies for export control and sanctions compliance;
|
||||
|
||||
**(c)** **Decision-Making**: Training on compliance decision-making and escalation procedures;
|
||||
|
||||
**(d)** **Legal Implications**: Understanding of legal implications and potential penalties for violations;
|
||||
|
||||
**(e)** **Business Integration**: Integration of compliance considerations into business planning and operations;
|
||||
|
||||
**(f)** **Crisis Management**: Crisis management and response procedures for compliance violations;
|
||||
|
||||
**(g)** **Stakeholder Communication**: Communication strategies for compliance matters with stakeholders;
|
||||
|
||||
**(h)** **Continuous Improvement**: Leadership in continuous improvement of compliance programmes.
|
||||
|
||||
### 7.3 Customer and Partner Education
|
||||
|
||||
We provide education and resources for customers and partners including:
|
||||
|
||||
**(a)** **Compliance Guidance**: General guidance on export control and sanctions compliance obligations;
|
||||
|
||||
**(b)** **Best Practices**: Sharing of best practices for compliance with export control and sanctions laws;
|
||||
|
||||
**(c)** **Resource Materials**: Provision of resource materials and references for compliance education;
|
||||
|
||||
**(d)** **Webinar Series**: Regular webinars on export control and sanctions compliance topics;
|
||||
|
||||
**(e)** **Industry Updates**: Updates on regulatory changes and industry developments;
|
||||
|
||||
**(f)** **Consultation Services**: Consultation services for complex compliance questions and issues;
|
||||
|
||||
**(g)** **Training Partnerships**: Partnerships with industry organisations for compliance training;
|
||||
|
||||
**(h)** **Documentation Support**: Support in developing compliance documentation and procedures.
|
||||
|
||||
### 7.4 Awareness and Communication
|
||||
|
||||
We maintain ongoing awareness and communication through:
|
||||
|
||||
**(a)** **Regular Communications**: Regular communications on compliance matters and regulatory updates;
|
||||
|
||||
**(b)** **Policy Updates**: Communication of policy updates and procedural changes;
|
||||
|
||||
**(c)** **Success Stories**: Sharing of compliance success stories and positive outcomes;
|
||||
|
||||
**(d)** **Lessons Learned**: Communication of lessons learned from compliance challenges and violations;
|
||||
|
||||
**(e)** **Industry Participation**: Active participation in industry compliance initiatives and working groups;
|
||||
|
||||
**(f)** **Regulatory Engagement**: Engagement with regulatory authorities on compliance matters;
|
||||
|
||||
**(g)** **Public Awareness**: Public communication of our commitment to export control and sanctions compliance;
|
||||
|
||||
**(h)** **Stakeholder Reporting**: Regular reporting to stakeholders on compliance programme effectiveness.
|
||||
|
||||
## 8. RECORD KEEPING AND DOCUMENTATION
|
||||
|
||||
### 8.1 Documentation Requirements
|
||||
|
||||
We maintain comprehensive documentation including:
|
||||
|
||||
**(a)** **Classification Records**: Complete records of technology classifications and determinations;
|
||||
|
||||
**(b)** **Screening Records**: Records of all sanctions and export control screening activities;
|
||||
|
||||
**(c)** **License Documentation**: All export licenses, registrations, and government approvals;
|
||||
|
||||
**(d)** **Due Diligence Files**: Comprehensive due diligence files for customers, partners, and transactions;
|
||||
|
||||
**(e)** **Transaction Records**: Detailed records of all international transactions and service provision;
|
||||
|
||||
**(f)** **Training Records**: Records of all training activities and compliance education;
|
||||
|
||||
**(g)** **Audit Documentation**: Documentation of internal and external compliance audits;
|
||||
|
||||
**(h)** **Violation Records**: Complete records of any violations and remedial actions taken.
|
||||
|
||||
### 8.2 Retention Periods
|
||||
|
||||
Documentation is retained according to the following schedule:
|
||||
|
||||
**(a)** **Export Transactions**: Export transaction records retained for minimum 5 years or as required by applicable law;
|
||||
|
||||
**(b)** **Sanctions Screening**: Sanctions screening records retained for minimum 5 years from last screening;
|
||||
|
||||
**(c)** **License Records**: License and government approval records retained permanently;
|
||||
|
||||
**(d)** **Due Diligence**: Due diligence files retained for minimum 5 years after relationship termination;
|
||||
|
||||
**(e)** **Training Records**: Training records retained for minimum 3 years or duration of employment;
|
||||
|
||||
**(f)** **Audit Records**: Audit documentation retained for minimum 7 years or as required by regulation;
|
||||
|
||||
**(g)** **Violation Records**: Violation records retained permanently or as required by law;
|
||||
|
||||
**(h)** **Classification Records**: Classification determinations retained for life of technology or product.
|
||||
|
||||
### 8.3 Data Security and Access Controls
|
||||
|
||||
Compliance documentation is protected through:
|
||||
|
||||
**(a)** **Access Controls**: Strict access controls limiting access to authorised personnel only;
|
||||
|
||||
**(b)** **Encryption**: Encryption of sensitive compliance documentation and data;
|
||||
|
||||
**(c)** **Backup Procedures**: Regular backup of compliance documentation with secure storage;
|
||||
|
||||
**(d)** **Audit Trails**: Complete audit trails of access to and modification of compliance records;
|
||||
|
||||
**(e)** **Physical Security**: Appropriate physical security for paper records and storage facilities;
|
||||
|
||||
**(f)** **Digital Rights Management**: Digital rights management for electronic compliance documentation;
|
||||
|
||||
**(g)** **Disposal Procedures**: Secure disposal procedures for expired or unnecessary documentation;
|
||||
|
||||
**(h)** **Breach Response**: Incident response procedures for security breaches affecting compliance records.
|
||||
|
||||
### 8.4 Government Access and Cooperation
|
||||
|
||||
We cooperate fully with government access requests through:
|
||||
|
||||
**(a)** **Regulatory Inspections**: Full cooperation with regulatory inspections and examinations;
|
||||
|
||||
**(b)** **Information Requests**: Prompt response to government information requests and subpoenas;
|
||||
|
||||
**(c)** **Investigation Support**: Support for government investigations of potential violations;
|
||||
|
||||
**(d)** **Voluntary Disclosure**: Voluntary disclosure of potential violations and compliance concerns;
|
||||
|
||||
**(e)** **Expert Testimony**: Provision of expert testimony and technical assistance as requested;
|
||||
|
||||
**(f)** **Documentation Production**: Production of required documentation in appropriate formats;
|
||||
|
||||
**(g)** **Interview Cooperation**: Cooperation with government interviews and depositions;
|
||||
|
||||
**(h)** **Ongoing Assistance**: Ongoing assistance with government compliance monitoring and oversight.
|
||||
|
||||
## 9. INTERNATIONAL OPERATIONS AND SUBSIDIARIES
|
||||
|
||||
### 9.1 Global Compliance Framework
|
||||
|
||||
Our international operations follow a unified compliance framework including:
|
||||
|
||||
**(a)** **Consistent Standards**: Application of consistent compliance standards across all international operations;
|
||||
|
||||
**(b)** **Local Adaptation**: Adaptation of procedures to comply with local laws and regulations;
|
||||
|
||||
**(c)** **Subsidiary Oversight**: Comprehensive oversight of subsidiary compliance programmes;
|
||||
|
||||
**(d)** **Cross-Border Coordination**: Coordination of compliance activities across borders and jurisdictions;
|
||||
|
||||
**(e)** **Centralised Reporting**: Centralised reporting of compliance activities and violations;
|
||||
|
||||
**(f)** **Shared Resources**: Shared compliance resources and expertise across international operations;
|
||||
|
||||
**(g)** **Unified Training**: Unified training programmes adapted for local requirements;
|
||||
|
||||
**(h)** **Regular Auditing**: Regular auditing of international compliance programmes and activities.
|
||||
|
||||
### 9.2 Regional Compliance Programmes
|
||||
|
||||
We maintain regional compliance programmes including:
|
||||
|
||||
**(a)** **Americas Programme**: Compliance programme for operations in North, Central, and South America;
|
||||
|
||||
**(b)** **European Programme**: Compliance programme for operations in the European Union and associated countries;
|
||||
|
||||
**(c)** **Asia-Pacific Programme**: Compliance programme for operations in the Asia-Pacific region;
|
||||
|
||||
**(d)** **Middle East and Africa Programme**: Compliance programme for operations in the Middle East and Africa;
|
||||
|
||||
**(e)** **Regional Expertise**: Regional compliance experts with local knowledge and experience;
|
||||
|
||||
**(f)** **Local Partnerships**: Partnerships with local legal and compliance experts;
|
||||
|
||||
**(g)** **Government Relations**: Established relationships with regional government authorities;
|
||||
|
||||
**(h)** **Cultural Adaptation**: Adaptation of compliance programmes to local cultural and business practices.
|
||||
|
||||
### 9.3 Cross-Border Data Flows
|
||||
|
||||
Management of cross-border data flows includes:
|
||||
|
||||
**(a)** **Data Classification**: Classification of data according to export control and privacy regulations;
|
||||
|
||||
**(b)** **Transfer Restrictions**: Implementation of appropriate restrictions on cross-border data transfers;
|
||||
|
||||
**(c)** **Encryption Requirements**: Use of appropriate encryption for international data transfers;
|
||||
|
||||
**(d)** **Access Controls**: Implementation of access controls for international data access;
|
||||
|
||||
**(e)** **Audit Capabilities**: Maintenance of audit capabilities for cross-border data flows;
|
||||
|
||||
**(f)** **Regulatory Compliance**: Compliance with data localisation and sovereignty requirements;
|
||||
|
||||
**(g)** **Cloud Architecture**: Design of cloud architecture to support compliant cross-border operations;
|
||||
|
||||
**(h)** **Incident Response**: Incident response procedures for cross-border data incidents.
|
||||
|
||||
### 9.4 Joint Ventures and Partnerships
|
||||
|
||||
For international joint ventures and partnerships:
|
||||
|
||||
**(a)** **Due Diligence**: Comprehensive due diligence on all international partners and joint venture participants;
|
||||
|
||||
**(b)** **Compliance Requirements**: Contractual requirements for export control and sanctions compliance;
|
||||
|
||||
**(c)** **Monitoring Procedures**: Ongoing monitoring of partner and joint venture compliance;
|
||||
|
||||
**(d)** **Training Requirements**: Training requirements for partner personnel and joint venture staff;
|
||||
|
||||
**(e)** **Audit Rights**: Contractual audit rights for compliance monitoring and verification;
|
||||
|
||||
**(f)** **Termination Rights**: Rights to terminate relationships for compliance violations;
|
||||
|
||||
**(g)** **Information Sharing**: Procedures for compliant information sharing in partnerships;
|
||||
|
||||
**(h)** **Dispute Resolution**: Dispute resolution procedures for compliance-related conflicts.
|
||||
|
||||
## 10. EMERGING TECHNOLOGIES AND FUTURE COMPLIANCE
|
||||
|
||||
### 10.1 Emerging Technology Assessment
|
||||
|
||||
We proactively assess emerging technologies including:
|
||||
|
||||
**(a)** **Artificial Intelligence**: Export control implications of AI and machine learning technologies;
|
||||
|
||||
**(b)** **Quantum Computing**: Assessment of quantum computing and cryptography technologies;
|
||||
|
||||
**(c)** **Biotechnology**: Evaluation of biotechnology and life sciences applications;
|
||||
|
||||
**(d)** **Advanced Materials**: Assessment of advanced materials and nanotechnology;
|
||||
|
||||
**(e)** **Autonomous Systems**: Export control implications of autonomous and robotic systems;
|
||||
|
||||
**(f)** **Blockchain Technologies**: Evaluation of blockchain and distributed ledger technologies;
|
||||
|
||||
**(g)** **Advanced Manufacturing**: Assessment of 3D printing and advanced manufacturing technologies;
|
||||
|
||||
**(h)** **Space Technologies**: Export control implications of space and satellite technologies.
|
||||
|
||||
### 10.2 Regulatory Monitoring and Anticipation
|
||||
|
||||
We actively monitor regulatory developments including:
|
||||
|
||||
**(a)** **Regulatory Proposals**: Monitoring of proposed changes to export control and sanctions regulations;
|
||||
|
||||
**(b)** **Industry Consultations**: Participation in government consultations on regulatory changes;
|
||||
|
||||
**(c)** **International Coordination**: Monitoring of international coordination on export control matters;
|
||||
|
||||
**(d)** **Technology Trends**: Analysis of technology trends and their potential regulatory implications;
|
||||
|
||||
**(e)** **Geopolitical Developments**: Assessment of geopolitical developments affecting export control;
|
||||
|
||||
**(f)** **Academic Research**: Monitoring of academic research on export control and sanctions compliance;
|
||||
|
||||
**(g)** **Industry Intelligence**: Gathering and analysis of industry intelligence on regulatory trends;
|
||||
|
||||
**(h)** **Government Engagement**: Active engagement with government authorities on regulatory development.
|
||||
|
||||
### 10.3 Adaptive Compliance Framework
|
||||
|
||||
Our compliance framework adapts to changes through:
|
||||
|
||||
**(a)** **Flexible Procedures**: Development of flexible procedures that can adapt to regulatory changes;
|
||||
|
||||
**(b)** **Rapid Response**: Rapid response capabilities for urgent compliance changes;
|
||||
|
||||
**(c)** **Technology Integration**: Integration of new technologies into compliance monitoring and enforcement;
|
||||
|
||||
**(d)** **Stakeholder Communication**: Effective communication of changes to stakeholders and users;
|
||||
|
||||
**(e)** **Training Updates**: Rapid updates to training programmes for regulatory changes;
|
||||
|
||||
**(f)** **System Modifications**: Quick modification of systems and procedures for compliance changes;
|
||||
|
||||
**(g)** **Risk Assessment**: Regular risk assessment and updating for emerging threats and challenges;
|
||||
|
||||
**(h)** **Continuous Learning**: Continuous learning and improvement of compliance capabilities.
|
||||
|
||||
### 10.4 Innovation and Compliance Balance
|
||||
|
||||
We balance innovation with compliance through:
|
||||
|
||||
**(a)** **Compliance by Design**: Integration of compliance considerations into product and service design;
|
||||
|
||||
**(b)** **Risk-Based Approach**: Risk-based approach to compliance that enables innovation while managing risks;
|
||||
|
||||
**(c)** **Stakeholder Engagement**: Engagement with stakeholders on balancing innovation and compliance;
|
||||
|
||||
**(d)** **Regulatory Advocacy**: Advocacy for reasonable and effective export control and sanctions regulations;
|
||||
|
||||
**(e)** **Industry Leadership**: Leadership in developing industry best practices for compliance and innovation;
|
||||
|
||||
**(f)** **Public-Private Partnership**: Partnership with government authorities on compliance and innovation;
|
||||
|
||||
**(g)** **Research and Development**: Investment in research and development of compliance technologies;
|
||||
|
||||
**(h)** **Future Planning**: Long-term planning for compliance in emerging technology areas.
|
||||
|
||||
## 11. CONTACT INFORMATION AND SUPPORT
|
||||
|
||||
### 11.1 Export Control and Sanctions Compliance
|
||||
|
||||
For export control and sanctions compliance matters:
|
||||
|
||||
**Email:** export-compliance@nhcarrigan.com
|
||||
|
||||
**Subject Line:** Export Control Compliance - [Brief Description]
|
||||
|
||||
**Response Time:** Within 24 hours for compliance inquiries
|
||||
|
||||
**Emergency Contact:** Available for urgent compliance matters
|
||||
|
||||
### 11.2 License Applications and Government Relations
|
||||
|
||||
For license applications and government relations:
|
||||
|
||||
**Email:** export-licensing@nhcarrigan.com
|
||||
|
||||
**Subject Line:** Export License Matter - [License Type]
|
||||
|
||||
**Response Time:** Within 2 business days for licensing matters
|
||||
|
||||
**Government Relations:** Dedicated team for government agency coordination
|
||||
|
||||
### 11.3 Sanctions Screening and Verification
|
||||
|
||||
For sanctions screening and verification requests:
|
||||
|
||||
**Email:** sanctions-screening@nhcarrigan.com
|
||||
|
||||
**Subject Line:** Sanctions Verification Request - [Entity Name]
|
||||
|
||||
**Response Time:** Within 4 hours during business days for screening requests
|
||||
|
||||
**Automated Systems:** Real-time automated screening available through our systems
|
||||
|
||||
### 11.4 Training and Education
|
||||
|
||||
For export control and sanctions training:
|
||||
|
||||
**Email:** export-training@nhcarrigan.com
|
||||
|
||||
**Subject Line:** Export Control Training Request
|
||||
|
||||
**Training Portal:** Access to online training modules and resources
|
||||
|
||||
**Response Time:** Within 3 business days for training requests
|
||||
|
||||
**Document Version:** 1.0
|
||||
|
||||
**Last Updated:** 15 September 2025
|
||||
|
||||
**Effective Date:** 15 September 2025
|
||||
|
||||
**Next Review Date:** 15 March 2026
|
||||
|
||||
---
|
||||
|
||||
*This Export Control and Sanctions Compliance Policy ensures our full compliance with international trade regulations whilst enabling lawful global service provision. By using our Services, you acknowledge understanding of these requirements and agree to comply with all applicable export control and sanctions laws. For compliance questions or assistance, please contact us at export-compliance@nhcarrigan.com.*
|
||||
@@ -2,33 +2,424 @@
|
||||
title: Government Actions and Compliance
|
||||
---
|
||||
|
||||
## 1. Introduction
|
||||
**MAINTAINING TRANSPARENCY IN GOVERNMENT AND LEGAL AUTHORITY INTERACTIONS**
|
||||
|
||||
The purpose of this document is to maintain transparency regarding any government or legal authority's actions against our organisation that result in a release of your data to those authorities.
|
||||
## 1. INTRODUCTION AND POLICY STATEMENT
|
||||
|
||||
### 1.1. Disclaimers
|
||||
### 1.1 Transparency Commitment
|
||||
|
||||
- We do not provide any sort of proactive information to regulatory agencies.
|
||||
- We do not, and will never, set up "backdoors" or other direct access routes for regulatory agencies to surveil or access your data.
|
||||
- All data in this document cover the entirety of NHCarrigan's lifetime, from our inception in
|
||||
This transparency report is published to maintain complete transparency regarding any actions taken by government agencies, law enforcement authorities, or other legal entities that may result in the disclosure of user data or information stored by nhcarrigan ("we," "us," "our," or "the Company").
|
||||
|
||||
## 2. Requests for Information
|
||||
### 1.2 Scope and Coverage
|
||||
|
||||
We have received 0 requests for information/data from authoritative agencies.
|
||||
This report covers:
|
||||
|
||||
| Agency | Data Requested | Result |
|
||||
| ------ | -------------- | ------ |
|
||||
**(a)** All formal requests for information or data from governmental or regulatory authorities;
|
||||
|
||||
## 3. Warrants and Subpoenas
|
||||
**(b)** All warrants, subpoenas, court orders, or similar legal instruments served upon our organisation;
|
||||
|
||||
We have been the subject of 0 warrants or subpoenas for our information/data.
|
||||
**(c)** Any asset seizures, data searches, or investigative actions affecting our systems or data;
|
||||
|
||||
| Agency | Date of Action | Result |
|
||||
| ------ | -------------- | ------ |
|
||||
**(d)** All time periods from the inception of nhcarrigan operations to the date of this report.
|
||||
|
||||
## 4. Asset Seizures
|
||||
### 1.3 Reporting Principles
|
||||
|
||||
We have had our data/information searched or seized 0 times.
|
||||
Our transparency reporting is guided by the following principles:
|
||||
|
||||
| Agency | Scope of Search | Result |
|
||||
| ------ | --------------- | ------ |
|
||||
**(a)** **Comprehensive Coverage:** All relevant actions and requests are documented without exception;
|
||||
|
||||
**(b)** **Regular Updates:** This report is updated promptly following any new developments;
|
||||
|
||||
**(c)** **Legal Compliance:** All disclosures comply with applicable laws and court-imposed restrictions;
|
||||
|
||||
**(d)** **User Protection:** We prioritise transparency whilst respecting ongoing legal proceedings and user privacy.
|
||||
|
||||
## 2. POLICY DECLARATIONS
|
||||
|
||||
### 2.1 Proactive Information Sharing
|
||||
|
||||
We explicitly declare that:
|
||||
|
||||
**(a)** We do not provide any proactive information to regulatory agencies, law enforcement, or government entities without legal compulsion;
|
||||
|
||||
**(b)** We do not engage in voluntary information sharing programmes with government agencies;
|
||||
|
||||
**(c)** We do not participate in mass surveillance or data collection programmes;
|
||||
|
||||
**(d)** All government data requests must follow proper legal channels and procedures.
|
||||
|
||||
### 2.2 System Integrity and Access
|
||||
|
||||
We firmly commit that:
|
||||
|
||||
**(a)** We do not, and will never, create "backdoors" or direct access routes for regulatory agencies to access user data or systems;
|
||||
|
||||
**(b)** We do not implement any covert monitoring or surveillance capabilities at the request of government entities;
|
||||
|
||||
**(c)** We do not provide real-time access to user communications or data without proper legal process;
|
||||
|
||||
**(d)** Any access to user data by authorities must be pursuant to valid legal process and within the bounds of applicable law.
|
||||
|
||||
### 2.3 Legal Process Requirements
|
||||
|
||||
For any disclosure of user information, we require:
|
||||
|
||||
**(a)** Valid legal process appropriate to the type of information requested;
|
||||
|
||||
**(b)** Proper jurisdictional authority over the matter in question;
|
||||
|
||||
**(c)** Specificity in the request regarding the information sought and the legal basis;
|
||||
|
||||
**(d)** Compliance with applicable data protection and privacy laws.
|
||||
|
||||
### 2.4 User Notification Policy
|
||||
|
||||
Subject to legal restrictions and court orders:
|
||||
|
||||
**(a)** We endeavour to notify affected users of government requests for their information;
|
||||
|
||||
**(b)** We provide reasonable advance notice where legally permissible;
|
||||
|
||||
**(c)** We challenge overly broad or inappropriate requests through legal channels;
|
||||
|
||||
**(d)** We advocate for the narrowest possible scope of any required disclosures.
|
||||
|
||||
## 3. INFORMATION REQUESTS
|
||||
|
||||
### 3.1 Summary Statistics
|
||||
|
||||
**Total Requests Received:** 0 (Zero)
|
||||
|
||||
**Time Period Covered:** From inception of nhcarrigan operations through the date of this report
|
||||
|
||||
### 3.2 Types of Information Requests
|
||||
|
||||
We categorise information requests as follows:
|
||||
|
||||
**(a)** **Emergency Requests:** Involving immediate threats to life or safety;
|
||||
|
||||
**(b)** **Criminal Investigations:** Related to suspected criminal activity;
|
||||
|
||||
**(c)** **Civil Matters:** Arising from civil litigation or administrative proceedings;
|
||||
|
||||
**(d)** **Regulatory Inquiries:** From regulatory bodies regarding compliance or oversight.
|
||||
|
||||
### 3.3 Detailed Request Log
|
||||
|
||||
| Request Date | Agency/Authority | Type of Request | Information Requested | Legal Basis | Response Date | Result/Action Taken | User Notification |
|
||||
|--------------|------------------|-----------------|----------------------|-------------|---------------|---------------------|-------------------|
|
||||
| No requests received to date | | | | | | | |
|
||||
|
||||
### 3.4 Response Procedures
|
||||
|
||||
When we receive information requests, our standard procedure includes:
|
||||
|
||||
**(a)** **Legal Review:** Assessment by qualified legal counsel of the validity and scope of the request;
|
||||
|
||||
**(b)** **Minimal Disclosure:** Limiting any disclosure to the minimum information required by law;
|
||||
|
||||
**(c)** **Documentation:** Maintaining detailed records of all requests and responses;
|
||||
|
||||
**(d)** **Transparency Reporting:** Including appropriate information in this public transparency report.
|
||||
|
||||
## 4. WARRANTS AND SUBPOENAS
|
||||
|
||||
### 4.1 Summary Statistics
|
||||
|
||||
**Total Warrants Received:** 0 (Zero)
|
||||
|
||||
**Total Subpoenas Received:** 0 (Zero)
|
||||
|
||||
**Time Period Covered:** From inception of nhcarrigan operations through the date of this report
|
||||
|
||||
### 4.2 Types of Legal Process
|
||||
|
||||
We track the following types of legal process:
|
||||
|
||||
**(a)** **Search Warrants:** Authorising search and seizure of specific information or systems;
|
||||
|
||||
**(b)** **Subpoenas:** Compelling production of documents or testimony;
|
||||
|
||||
**(c)** **Court Orders:** Directing specific actions or disclosures;
|
||||
|
||||
**(d)** **National Security Letters:** Administrative subpoenas related to national security investigations (where applicable).
|
||||
|
||||
### 4.3 Detailed Process Log
|
||||
|
||||
| Service Date | Court/Agency | Type of Process | Scope of Request | Response Required | Response Date | Compliance Action | Challenge Filed | User Notification |
|
||||
|--------------|--------------|-----------------|------------------|-------------------|---------------|-------------------|-----------------|-------------------|
|
||||
| No legal process served to date | | | | | | | | |
|
||||
|
||||
### 4.4 Legal Challenge Policy
|
||||
|
||||
Our policy regarding legal challenges includes:
|
||||
|
||||
**(a)** **Threshold Review:** Automatic legal review of all process for validity and scope;
|
||||
|
||||
**(b)** **Challenge Criteria:** Filing challenges when process is overbroad, invalid, or inappropriate;
|
||||
|
||||
**(c)** **User Advocacy:** Advocating for user privacy rights within legal constraints;
|
||||
|
||||
**(d)** **Procedural Compliance:** Ensuring all responses comply with applicable legal requirements.
|
||||
|
||||
## 5. ASSET SEIZURES AND SEARCHES
|
||||
|
||||
### 5.1 Summary Statistics
|
||||
|
||||
**Total Seizures/Searches:** 0 (Zero)
|
||||
|
||||
**Time Period Covered:** From inception of nhcarrigan operations through the date of this report
|
||||
|
||||
### 5.2 Types of Seizures and Searches
|
||||
|
||||
We categorise enforcement actions as follows:
|
||||
|
||||
**(a)** **Physical Seizures:** Seizure of physical hardware, servers, or storage media;
|
||||
|
||||
**(b)** **Digital Searches:** Direct access to or copying of digital information;
|
||||
|
||||
**(c)** **Account Freezes:** Temporary or permanent restriction of access to accounts or systems;
|
||||
|
||||
**(d)** **Data Preservation:** Requirements to preserve specific data pending legal proceedings.
|
||||
|
||||
### 5.3 Detailed Action Log
|
||||
|
||||
| Action Date | Agency | Type of Action | Scope of Search/Seizure | Legal Authority | Property/Data Affected | Recovery/Return | Impact Assessment |
|
||||
|-------------|--------|----------------|-------------------------|-----------------|------------------------|-----------------|-------------------|
|
||||
| No seizures or searches to date | | | | | | | |
|
||||
|
||||
### 5.4 Response and Mitigation Procedures
|
||||
|
||||
In the event of asset seizures or searches, our procedures include:
|
||||
|
||||
**(a)** **Immediate Assessment:** Rapid evaluation of the scope and impact of the action;
|
||||
|
||||
**(b)** **Legal Representation:** Immediate engagement of qualified legal counsel;
|
||||
|
||||
**(c)** **User Protection:** Implementation of measures to protect user data and privacy;
|
||||
|
||||
**(d)** **Service Continuity:** Actions to maintain service availability where legally permissible.
|
||||
|
||||
## 6. DATA PROTECTION AND PRIVACY SAFEGUARDS
|
||||
|
||||
### 6.1 Technical Safeguards
|
||||
|
||||
We implement technical measures to protect user data:
|
||||
|
||||
**(a)** **Encryption:** All user data is encrypted both in transit and at rest;
|
||||
|
||||
**(b)** **Access Controls:** Strict access controls limit personnel who can access user data;
|
||||
|
||||
**(c)** **Audit Logging:** Comprehensive logging of all access to user data;
|
||||
|
||||
**(d)** **Data Minimisation:** Collection and retention of only necessary user information.
|
||||
|
||||
### 6.2 Legal Safeguards
|
||||
|
||||
Our legal protections include:
|
||||
|
||||
**(a)** **Qualified Legal Review:** All government requests reviewed by qualified legal counsel;
|
||||
|
||||
**(b)** **Narrow Interpretation:** Interpreting all legal process as narrowly as legally permissible;
|
||||
|
||||
**(c)** **Challenge Preparation:** Maintaining resources to challenge inappropriate or overbroad requests;
|
||||
|
||||
**(d)** **Jurisdictional Analysis:** Careful analysis of jurisdictional issues in cross-border requests.
|
||||
|
||||
### 6.3 Operational Safeguards
|
||||
|
||||
Our operational procedures include:
|
||||
|
||||
**(a)** **Incident Response:** Established procedures for responding to government actions;
|
||||
|
||||
**(b)** **Communication Plans:** Clear communication protocols with users and stakeholders;
|
||||
|
||||
**(c)** **Documentation Standards:** Comprehensive documentation of all interactions with authorities;
|
||||
|
||||
**(d)** **Recovery Procedures:** Plans for service recovery following any enforcement actions.
|
||||
|
||||
### 6.4 International Considerations
|
||||
|
||||
For cross-border requests, we consider:
|
||||
|
||||
**(a)** **Treaty Obligations:** Applicable mutual legal assistance treaties and agreements;
|
||||
|
||||
**(b)** **Local Law Compliance:** Requirements under local data protection and privacy laws;
|
||||
|
||||
**(c)** **Diplomatic Channels:** Appropriate use of diplomatic channels for sensitive matters;
|
||||
|
||||
**(d)** **Conflict Resolution:** Procedures for resolving conflicts between different legal systems.
|
||||
|
||||
## 7. REPORTING METHODOLOGY AND LIMITATIONS
|
||||
|
||||
### 7.1 Data Collection
|
||||
|
||||
This transparency report is compiled using:
|
||||
|
||||
**(a)** **Legal Records:** Comprehensive records of all legal process received;
|
||||
|
||||
**(b)** **Communication Logs:** Documentation of all communications with government agencies;
|
||||
|
||||
**(c)** **Internal Reports:** Regular internal assessments of government interaction;
|
||||
|
||||
**(d)** **Legal Review:** Quarterly review by qualified legal counsel for completeness and accuracy.
|
||||
|
||||
### 7.2 Reporting Limitations
|
||||
|
||||
This report is subject to the following limitations:
|
||||
|
||||
**(a)** **Legal Restrictions:** Some information may be withheld due to court orders or legal restrictions;
|
||||
|
||||
**(b)** **Classification Issues:** Certain national security matters may not be reportable;
|
||||
|
||||
**(c)** **Ongoing Proceedings:** Active legal matters may limit the detail that can be disclosed;
|
||||
|
||||
**(d)** **Aggregation Requirements:** Some jurisdictions may require statistical aggregation rather than detailed reporting.
|
||||
|
||||
### 7.3 Update Schedule
|
||||
|
||||
This report is updated according to the following schedule:
|
||||
|
||||
**(a)** **Quarterly Updates:** Regular updates published every three months;
|
||||
|
||||
**(b)** **Event-Driven Updates:** Additional updates following significant developments;
|
||||
|
||||
**(c)** **Annual Review:** Comprehensive annual review and analysis;
|
||||
|
||||
**(d)** **Legal Milestone Updates:** Updates following resolution of significant legal matters.
|
||||
|
||||
### 7.4 Verification and Accuracy
|
||||
|
||||
We ensure report accuracy through:
|
||||
|
||||
**(a)** **Multi-Source Verification:** Cross-referencing multiple internal sources;
|
||||
|
||||
**(b)** **Legal Review:** Review by qualified legal counsel before publication;
|
||||
|
||||
**(c)** **External Audit:** Periodic external audit of transparency reporting procedures;
|
||||
|
||||
**(d)** **Correction Procedures:** Clear procedures for correcting any errors or omissions.
|
||||
|
||||
## 8. CONTACT INFORMATION AND SUPPORT
|
||||
|
||||
### 8.1 Legal Process Service
|
||||
|
||||
For service of legal process:
|
||||
|
||||
**Email:** legal@nhcarrigan.com
|
||||
|
||||
**Physical Address:** [To be provided when applicable]
|
||||
|
||||
**Business Hours:** Monday through Friday, 9:00 AM to 5:00 PM Pacific Standard Time
|
||||
|
||||
### 8.2 General Inquiries
|
||||
|
||||
For questions about this transparency report:
|
||||
|
||||
**Email:** transparency@nhcarrigan.com
|
||||
|
||||
**Subject Line:** Government Transparency Report Inquiry
|
||||
|
||||
### 8.3 Media and Press Inquiries
|
||||
|
||||
For media inquiries regarding government actions:
|
||||
|
||||
**Email:** press@nhcarrigan.com
|
||||
|
||||
**Response Time:** Within 24 hours for urgent matters
|
||||
|
||||
### 8.4 User Support
|
||||
|
||||
For users concerned about government access to their data:
|
||||
|
||||
**Email:** privacy@nhcarrigan.com
|
||||
|
||||
**Forum:** https://forum.nhcarrigan.com
|
||||
|
||||
**Response Time:** Within 48 hours for privacy-related inquiries
|
||||
|
||||
## 9. FUTURE DEVELOPMENTS
|
||||
|
||||
### 9.1 Policy Evolution
|
||||
|
||||
We continuously review and improve our government transparency policies based on:
|
||||
|
||||
**(a)** **Legal Developments:** Changes in applicable laws and regulations;
|
||||
|
||||
**(b)** **Industry Standards:** Evolving best practices in transparency reporting;
|
||||
|
||||
**(c)** **Stakeholder Feedback:** Input from users, legal experts, and privacy advocates;
|
||||
|
||||
**(d)** **Operational Experience:** Lessons learned from any government interactions.
|
||||
|
||||
### 9.2 Enhanced Reporting
|
||||
|
||||
We are committed to enhancing this transparency report through:
|
||||
|
||||
**(a)** **Additional Metrics:** Expanding the types of statistics and information reported;
|
||||
|
||||
**(b)** **Improved Analysis:** Providing more detailed analysis of trends and implications;
|
||||
|
||||
**(c)** **Interactive Features:** Developing interactive tools for exploring transparency data;
|
||||
|
||||
**(d)** **International Perspective:** Expanding coverage to include international legal developments.
|
||||
|
||||
### 9.3 Stakeholder Engagement
|
||||
|
||||
We engage with stakeholders through:
|
||||
|
||||
**(a)** **Public Consultation:** Regular opportunities for public input on transparency policies;
|
||||
|
||||
**(b)** **Expert Advisory:** Consultation with legal and privacy experts;
|
||||
|
||||
**(c)** **Industry Collaboration:** Participation in industry transparency initiatives;
|
||||
|
||||
**(d)** **Academic Partnership:** Collaboration with academic researchers on transparency issues.
|
||||
|
||||
## 10. LEGAL DISCLAIMER
|
||||
|
||||
### 10.1 Report Limitations
|
||||
|
||||
This transparency report:
|
||||
|
||||
**(a)** Is provided for informational purposes and public accountability;
|
||||
|
||||
**(b)** Does not constitute legal advice or create attorney-client privilege;
|
||||
|
||||
**(c)** May be subject to legal restrictions on disclosure in some jurisdictions;
|
||||
|
||||
**(d)** Represents our good faith effort to provide accurate and complete information.
|
||||
|
||||
### 10.2 Legal Compliance
|
||||
|
||||
This report is prepared in compliance with:
|
||||
|
||||
**(a)** All applicable transparency reporting requirements;
|
||||
|
||||
**(b)** Court orders and legal restrictions on disclosure;
|
||||
|
||||
**(c)** Data protection and privacy laws;
|
||||
|
||||
**(d)** National security and law enforcement confidentiality requirements.
|
||||
|
||||
### 10.3 No Warranties
|
||||
|
||||
**IMPORTANT: Comprehensive warranty disclaimers and liability limitations applicable to this report and all our services are set forth in our Limitation of Liability and Indemnification Policy, which is incorporated herein by reference.**
|
||||
|
||||
In addition to those comprehensive protections, this transparency report is provided without warranties regarding:
|
||||
|
||||
**(a)** Accuracy of information subject to legal reporting restrictions;
|
||||
|
||||
**(b)** Completeness where disclosure is legally prohibited;
|
||||
|
||||
**(c)** Changes in circumstances after publication date.
|
||||
|
||||
**Report Period:** From inception of nhcarrigan operations through [Date to be inserted]
|
||||
|
||||
**Publication Date:** [Date to be inserted]
|
||||
|
||||
**Next Scheduled Update:** [Date to be inserted]
|
||||
|
||||
---
|
||||
|
||||
*This transparency report demonstrates our commitment to user privacy and government accountability. We will continue to update this report regularly and advocate for user rights within the bounds of applicable law. For questions about this report, please contact us at transparency@nhcarrigan.com.*
|
||||
|
||||
@@ -0,0 +1,751 @@
|
||||
---
|
||||
title: Limitation of Liability and Indemnification Policy
|
||||
---
|
||||
|
||||
**COMPREHENSIVE PROTECTION THROUGH LIABILITY LIMITATIONS AND INDEMNIFICATION PROVISIONS**
|
||||
|
||||
## 1. INTRODUCTION AND SCOPE
|
||||
|
||||
### 1.1 Policy Purpose and Importance
|
||||
|
||||
This Limitation of Liability and Indemnification Policy ("Policy") establishes comprehensive protections for nhcarrigan ("we," "us," "our," or "the Company") and clarifies the allocation of risk and responsibility between the Company and users of our services, applications, and platforms (collectively, the "Services"). This Policy is fundamental to our ability to provide innovative services whilst managing legal and financial risks.
|
||||
|
||||
### 1.2 Integration with Other Legal Documents
|
||||
|
||||
This Policy operates in conjunction with and supplements:
|
||||
|
||||
**(a)** Our Terms of Service, which establish the fundamental user relationship;
|
||||
|
||||
**(b)** Our Service Level Agreement, which defines service expectations and remedies;
|
||||
|
||||
**(c)** Our Acceptable Use Policy, which defines prohibited activities;
|
||||
|
||||
**(d)** Our Privacy Policy, which governs data collection and processing;
|
||||
|
||||
**(e)** Our API Terms and Conditions, which govern developer services;
|
||||
|
||||
**(f)** Any additional service-specific terms or agreements.
|
||||
|
||||
Where conflicts exist between documents, the most restrictive liability limitation shall apply to ensure maximum protection for the Company.
|
||||
|
||||
### 1.3 Scope of Application
|
||||
|
||||
This Policy applies to:
|
||||
|
||||
**(a)** All users, customers, developers, and third parties interacting with our Services;
|
||||
|
||||
**(b)** All services, applications, platforms, and tools provided by nhcarrigan;
|
||||
|
||||
**(c)** All content, data, and information processed through our Services;
|
||||
|
||||
**(d)** All commercial and non-commercial usage of our Services;
|
||||
|
||||
**(e)** All direct and indirect consequences of Service usage;
|
||||
|
||||
**(f)** All claims arising before, during, or after the use of our Services;
|
||||
|
||||
**(g)** All legal theories and causes of action, whether known or unknown;
|
||||
|
||||
**(h)** All jurisdictions where our Services are accessed or used.
|
||||
|
||||
### 1.4 Legal Framework and Enforceability
|
||||
|
||||
This Policy is designed to:
|
||||
|
||||
**(a)** Comply with applicable laws whilst maximising legal protection;
|
||||
|
||||
**(b)** Ensure enforceability across multiple jurisdictions;
|
||||
|
||||
**(c)** Provide clear guidance on risk allocation and responsibility;
|
||||
|
||||
**(d)** Establish predictable legal frameworks for business relationships;
|
||||
|
||||
**(e)** Balance user rights with Company protection needs;
|
||||
|
||||
**(f)** Support sustainable business operations through risk management;
|
||||
|
||||
**(g)** Align with industry standards and best practices;
|
||||
|
||||
**(h)** Facilitate insurance coverage and risk transfer arrangements.
|
||||
|
||||
## 2. COMPREHENSIVE LIABILITY DISCLAIMERS
|
||||
|
||||
### 2.1 General Service Disclaimers
|
||||
|
||||
**IMPORTANT NOTICE: THE FOLLOWING DISCLAIMERS ARE FUNDAMENTAL TO OUR SERVICE RELATIONSHIP AND CONSTITUTE ESSENTIAL TERMS OF YOUR AGREEMENT WITH US.**
|
||||
|
||||
**AS IS" AND "AS AVAILABLE" BASIS:**
|
||||
|
||||
All Services are provided strictly on an "AS IS" and "AS AVAILABLE" basis without warranties, representations, or conditions of any kind, whether express, implied, statutory, or otherwise.
|
||||
|
||||
**EXPRESS DISCLAIMER OF WARRANTIES:**
|
||||
|
||||
We expressly disclaim and exclude all warranties including, but not limited to:
|
||||
|
||||
**(a)** **Merchantability**: No warranty that Services are suitable for commercial use or will meet commercial requirements;
|
||||
|
||||
**(b)** **Fitness for Particular Purpose**: No warranty that Services will meet your specific needs, requirements, or expectations;
|
||||
|
||||
**(c)** **Non-Infringement**: No warranty that Services do not infringe third-party intellectual property or other rights;
|
||||
|
||||
**(d)** **Quality and Performance**: No warranty regarding the quality, performance, or reliability of Services;
|
||||
|
||||
**(e)** **Accuracy and Completeness**: No warranty regarding the accuracy, completeness, or currency of information or data;
|
||||
|
||||
**(f)** **Uninterrupted Service**: No warranty that Services will be available, accessible, or operate without interruption;
|
||||
|
||||
**(g)** **Error-Free Operation**: No warranty that Services will be free from errors, bugs, viruses, or other harmful components;
|
||||
|
||||
**(h)** **Security**: No warranty that Services will be secure or that data will be protected from unauthorised access.
|
||||
|
||||
### 2.2 Technology and Software Disclaimers
|
||||
|
||||
Regarding our technology, software, and digital services:
|
||||
|
||||
**(a)** **Compatibility**: No warranty of compatibility with all devices, browsers, operating systems, or third-party software;
|
||||
|
||||
**(b)** **Performance Standards**: No guarantee of specific performance benchmarks, speed, or efficiency levels;
|
||||
|
||||
**(c)** **Data Integrity**: No warranty regarding data integrity, accuracy, or prevention of data loss or corruption;
|
||||
|
||||
**(d)** **Backup and Recovery**: No warranty regarding backup services or data recovery capabilities;
|
||||
|
||||
**(e)** **Version Control**: No warranty regarding backward compatibility or version stability;
|
||||
|
||||
**(f)** **Third-Party Integration**: No warranty regarding the performance or availability of third-party integrations;
|
||||
|
||||
**(g)** **Customisation**: No warranty that Services can be customised to meet specific requirements;
|
||||
|
||||
**(h)** **Scalability**: No warranty regarding scalability or ability to handle increased usage demands.
|
||||
|
||||
### 2.3 Content and Information Disclaimers
|
||||
|
||||
Regarding content and information provided through our Services:
|
||||
|
||||
**(a)** **Accuracy**: No warranty regarding the accuracy, truthfulness, or reliability of any content or information;
|
||||
|
||||
**(b)** **Completeness**: No warranty that information is complete, current, or comprehensive;
|
||||
|
||||
**(c)** **Professional Advice**: No warranty that content constitutes professional, legal, financial, or medical advice;
|
||||
|
||||
**(d)** **Suitability**: No warranty that information is suitable for any particular purpose or decision-making;
|
||||
|
||||
**(e)** **User-Generated Content**: No warranty regarding user-generated content or its appropriateness;
|
||||
|
||||
**(f)** **Third-Party Content**: No warranty regarding content from third-party sources or contributors;
|
||||
|
||||
**(g)** **Currency**: No warranty that information is up-to-date or reflects current circumstances;
|
||||
|
||||
**(h)** **Verification**: No obligation to verify the accuracy or completeness of any content or information.
|
||||
|
||||
### 2.4 Business and Commercial Disclaimers
|
||||
|
||||
For business and commercial use of our Services:
|
||||
|
||||
**(a)** **Business Outcomes**: No warranty regarding specific business outcomes, results, or success;
|
||||
|
||||
**(b)** **Revenue Generation**: No warranty that Services will generate revenue, profits, or business value;
|
||||
|
||||
**(c)** **Market Performance**: No warranty regarding market performance or competitive advantages;
|
||||
|
||||
**(d)** **Regulatory Compliance**: No warranty that Services ensure compliance with industry regulations;
|
||||
|
||||
**(e)** **Business Continuity**: No warranty regarding business continuity or uninterrupted operations;
|
||||
|
||||
**(f)** **Cost Savings**: No warranty regarding cost savings or operational efficiencies;
|
||||
|
||||
**(g)** **Return on Investment**: No warranty regarding return on investment or financial benefits;
|
||||
|
||||
**(h)** **Strategic Objectives**: No warranty that Services will help achieve strategic business objectives.
|
||||
|
||||
## 3. COMPREHENSIVE LIMITATION OF LIABILITY
|
||||
|
||||
### 3.1 Exclusion of Consequential and Indirect Damages
|
||||
|
||||
**TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, NHCARRIGAN SHALL NOT BE LIABLE FOR ANY INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL, PUNITIVE, OR EXEMPLARY DAMAGES, INCLUDING BUT NOT LIMITED TO:**
|
||||
|
||||
**(a)** **Lost Profits**: Loss of actual or anticipated profits, revenue, or business opportunities;
|
||||
|
||||
**(b)** **Business Interruption**: Interruption of business operations, production, or services;
|
||||
|
||||
**(c)** **Lost Savings**: Loss of anticipated savings, cost reductions, or efficiency gains;
|
||||
|
||||
**(d)** **Data Loss**: Loss, corruption, or unauthorised access to data, information, or content;
|
||||
|
||||
**(e)** **Reputation Damage**: Damage to reputation, goodwill, or business relationships;
|
||||
|
||||
**(f)** **Opportunity Costs**: Lost business opportunities or competitive disadvantages;
|
||||
|
||||
**(g)** **Third-Party Claims**: Claims, damages, or losses imposed by third parties;
|
||||
|
||||
**(h)** **Personal Injury**: Personal injury, emotional distress, or mental anguish (except where prohibited by law).
|
||||
|
||||
### 3.2 Exclusion of Direct Damages
|
||||
|
||||
**TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, WE ALSO DISCLAIM LIABILITY FOR DIRECT DAMAGES INCLUDING:**
|
||||
|
||||
**(a)** **Service Failures**: Damages arising from service outages, failures, or unavailability;
|
||||
|
||||
**(b)** **Performance Issues**: Damages from poor performance, slow response times, or system limitations;
|
||||
|
||||
**(c)** **Data Issues**: Damages from data inaccuracies, incompleteness, or processing errors;
|
||||
|
||||
**(d)** **Security Breaches**: Damages from security incidents, unauthorised access, or data breaches;
|
||||
|
||||
**(e)** **Integration Problems**: Damages from integration failures or compatibility issues;
|
||||
|
||||
**(f)** **Content Issues**: Damages from inappropriate, harmful, or inaccurate content;
|
||||
|
||||
**(g)** **User Errors**: Damages from user errors, misuse, or misunderstanding of Services;
|
||||
|
||||
**(h)** **Force Majeure**: Damages from events beyond our reasonable control.
|
||||
|
||||
### 3.3 Maximum Liability Cap
|
||||
|
||||
**IN JURISDICTIONS THAT DO NOT PERMIT COMPLETE EXCLUSION OF LIABILITY:**
|
||||
|
||||
**(a)** **Aggregate Liability Limit**: Our total aggregate liability for all claims shall not exceed the lesser of $100 or the amounts actually paid by you for the specific Services giving rise to liability in the 12 months immediately preceding the first claim;
|
||||
|
||||
**(b)** **Per-Incident Limit**: Our liability for any single incident or related series of incidents shall not exceed £50 or the monthly fee for the affected Service, whichever is greater;
|
||||
|
||||
**(c)** **Free Services**: For free Services, our maximum liability is limited to $100 in aggregate for all claims;
|
||||
|
||||
**(d)** **Time Limitation**: Liability is limited to damages incurred in the 12-month period immediately preceding the claim;
|
||||
|
||||
**(e)** **Proportionate Liability**: Where liability is shared, our liability is limited to our proportionate share of fault;
|
||||
|
||||
**(f)** **Mitigation Requirement**: Liability is contingent upon reasonable efforts to mitigate damages;
|
||||
|
||||
**(g)** **Insurance Coordination**: Liability limitations coordinate with available insurance coverage;
|
||||
|
||||
**(h)** **Currency Conversion**: All monetary limits are stated in United States Dollars with conversion at current exchange rates.
|
||||
|
||||
### 3.4 Liability Limitation Scope
|
||||
|
||||
**These liability limitations apply regardless of:**
|
||||
|
||||
**(a)** **Legal Theory**: Whether claims are based in contract, tort, negligence, strict liability, or any other legal theory;
|
||||
|
||||
**(b)** **Foreseeability**: Whether damages were foreseeable or we had knowledge of their possibility;
|
||||
|
||||
**(c)** **Remedy Failure**: Whether limited remedies provided elsewhere fail of their essential purpose;
|
||||
|
||||
**(d)** **Fault Distribution**: The degree of fault attributable to different parties;
|
||||
|
||||
**(e)** **Claim Multiplicity**: The number of claims or legal theories asserted;
|
||||
|
||||
**(f)** **Time of Occurrence**: Whether damages occurred before, during, or after Service usage;
|
||||
|
||||
**(g)** **Geographic Location**: The jurisdiction where damages occur or claims are brought;
|
||||
|
||||
**(h)** **User Classification**: Whether users are individuals, businesses, or other entities.
|
||||
|
||||
## 4. COMPREHENSIVE INDEMNIFICATION PROVISIONS
|
||||
|
||||
### 4.1 User Indemnification Obligations
|
||||
|
||||
**Users agree to indemnify, defend, and hold harmless nhcarrigan, its parent companies, subsidiaries, affiliates, officers, directors, employees, agents, contractors, licensors, and service providers (collectively, the "Indemnified Parties") from and against any and all claims, demands, actions, damages, losses, costs, liabilities, and expenses (including reasonable attorneys' fees and court costs) arising from or relating to:**
|
||||
|
||||
**(a)** **Service Usage**: Your use, misuse, or inability to use the Services in any manner;
|
||||
|
||||
**(b)** **Policy Violations**: Your violation of these terms or any other applicable policies, rules, or guidelines;
|
||||
|
||||
**(c)** **Legal Violations**: Your violation of any applicable laws, regulations, or third-party rights;
|
||||
|
||||
**(d)** **Content Liability**: Any content you submit, post, transmit, or make available through the Services;
|
||||
|
||||
**(e)** **Intellectual Property**: Claims that your content or usage infringes intellectual property rights;
|
||||
|
||||
**(f)** **Privacy Violations**: Claims arising from your collection, use, or disclosure of personal information;
|
||||
|
||||
**(g)** **Third-Party Interactions**: Your interactions with other users or third parties through the Services;
|
||||
|
||||
**(h)** **Downstream Usage**: Any use of Services by third parties through your account or authorisation.
|
||||
|
||||
### 4.2 Commercial and Business Indemnification
|
||||
|
||||
**For commercial and business users, indemnification extends to:**
|
||||
|
||||
**(a)** **Business Operations**: Claims arising from integration of Services into business operations;
|
||||
|
||||
**(b)** **Customer Interactions**: Claims from your customers or clients related to Service usage;
|
||||
|
||||
**(c)** **Employee Actions**: Claims arising from your employees' or contractors' use of Services;
|
||||
|
||||
**(d)** **Regulatory Violations**: Claims from violation of industry regulations or professional standards;
|
||||
|
||||
**(e)** **Data Processing**: Claims related to data processing activities conducted through Services;
|
||||
|
||||
**(f)** **Commercial Content**: Claims related to commercial content, advertising, or promotional materials;
|
||||
|
||||
**(g)** **Competitive Activities**: Claims arising from competitive or business development activities;
|
||||
|
||||
**(h)** **Licensing Violations**: Claims from violation of software licences or intellectual property rights.
|
||||
|
||||
### 4.3 Developer and API Indemnification
|
||||
|
||||
**Developers and API users agree to additional indemnification for:**
|
||||
|
||||
**(a)** **Application Development**: Claims arising from applications built using our APIs or services;
|
||||
|
||||
**(b)** **End User Claims**: Claims from end users of applications or integrations;
|
||||
|
||||
**(c)** **Data Integration**: Claims related to data integration, processing, or storage activities;
|
||||
|
||||
**(d)** **Security Incidents**: Claims arising from security vulnerabilities in integrated applications;
|
||||
|
||||
**(e)** **Performance Issues**: Claims related to performance, availability, or functionality of integrated services;
|
||||
|
||||
**(f)** **Third-Party Services**: Claims arising from integration with third-party services or platforms;
|
||||
|
||||
**(g)** **Commercial Distribution**: Claims related to commercial distribution or monetisation of applications;
|
||||
|
||||
**(h)** **Compliance Failures**: Claims from failure to comply with API terms or usage restrictions.
|
||||
|
||||
### 4.4 Indemnification Process and Procedures
|
||||
|
||||
**The indemnification process includes:**
|
||||
|
||||
**(a)** **Notice Requirement**: We will provide prompt written notice of any claim subject to indemnification;
|
||||
|
||||
**(b)** **Defence Control**: We reserve the right to assume the exclusive defence and control of any matter subject to indemnification;
|
||||
|
||||
**(c)** **Legal Counsel**: We may select legal counsel of our choice, with costs covered by the indemnifying party;
|
||||
|
||||
**(d)** **Cooperation Requirement**: You agree to cooperate fully with the defence of any indemnified claim;
|
||||
|
||||
**(e)** **Settlement Authority**: We may settle claims with your consent, which shall not be unreasonably withheld;
|
||||
|
||||
**(f)** **Information Access**: You will provide all necessary information and assistance for claim defence;
|
||||
|
||||
**(g)** **Cost Advancement**: You may be required to advance costs and expenses for claim defence;
|
||||
|
||||
**(h)** **Recovery Rights**: We retain all rights to recover costs and damages from responsible parties.
|
||||
|
||||
## 5. RISK ALLOCATION AND USER RESPONSIBILITY
|
||||
|
||||
### 5.1 User Assumption of Risk
|
||||
|
||||
**By using our Services, users expressly acknowledge and assume the following risks:**
|
||||
|
||||
**(a)** **Technology Risks**: Inherent risks in using internet-based and cloud-based technologies;
|
||||
|
||||
**(b)** **Data Risks**: Risks of data loss, corruption, or unauthorised access inherent in digital systems;
|
||||
|
||||
**(c)** **Business Risks**: Risks of business interruption, competitive disadvantage, or operational challenges;
|
||||
|
||||
**(d)** **Security Risks**: Risks of security vulnerabilities, cyberattacks, or malicious activities;
|
||||
|
||||
**(e)** **Performance Risks**: Risks of performance degradation, service limitations, or capacity constraints;
|
||||
|
||||
**(f)** **Integration Risks**: Risks associated with integrating Services with existing systems or workflows;
|
||||
|
||||
**(g)** **Compliance Risks**: Risks of regulatory non-compliance or changes in legal requirements;
|
||||
|
||||
**(h)** **Market Risks**: Risks of market changes, competitive pressures, or business model evolution.
|
||||
|
||||
### 5.2 User Responsibility for Risk Management
|
||||
|
||||
**Users are solely responsible for:**
|
||||
|
||||
**(a)** **Risk Assessment**: Conducting their own risk assessment before using Services;
|
||||
|
||||
**(b)** **Risk Mitigation**: Implementing appropriate risk mitigation measures and controls;
|
||||
|
||||
**(c)** **Insurance Coverage**: Obtaining adequate insurance coverage for their activities and risks;
|
||||
|
||||
**(d)** **Backup and Recovery**: Implementing independent backup and disaster recovery procedures;
|
||||
|
||||
**(e)** **Security Measures**: Implementing appropriate security measures for their systems and data;
|
||||
|
||||
**(f)** **Compliance Monitoring**: Monitoring compliance with applicable laws and regulations;
|
||||
|
||||
**(g)** **Professional Advice**: Seeking professional advice regarding legal, technical, and business matters;
|
||||
|
||||
**(h)** **Contingency Planning**: Developing contingency plans for service interruptions or failures.
|
||||
|
||||
### 5.3 Company Risk Management Limitations
|
||||
|
||||
**Our risk management efforts are limited to:**
|
||||
|
||||
**(a)** **Reasonable Care**: Exercising reasonable care in providing Services according to industry standards;
|
||||
|
||||
**(b)** **Security Measures**: Implementing reasonable security measures for our systems and infrastructure;
|
||||
|
||||
**(c)** **Policy Compliance**: Enforcing our policies and terms to maintain service quality and security;
|
||||
|
||||
**(d)** **Legal Compliance**: Complying with applicable laws and regulations in our operations;
|
||||
|
||||
**(e)** **Insurance Maintenance**: Maintaining appropriate insurance coverage for our business operations;
|
||||
|
||||
**(f)** **Incident Response**: Maintaining incident response capabilities for security and operational issues;
|
||||
|
||||
**(g)** **Vendor Management**: Managing third-party vendors and service providers appropriately;
|
||||
|
||||
**(h)** **Continuous Improvement**: Continuously improving our services and risk management practices.
|
||||
|
||||
### 5.4 Shared Responsibility Model
|
||||
|
||||
**Our service relationship operates under a shared responsibility model:**
|
||||
|
||||
**Company Responsibilities:**
|
||||
- Infrastructure security and maintenance
|
||||
- Service availability and performance (subject to SLA terms)
|
||||
- Data security measures for systems under our control
|
||||
- Compliance with applicable laws in our operations
|
||||
|
||||
**User Responsibilities:**
|
||||
- Appropriate use of Services according to terms and policies
|
||||
- Security of user accounts, credentials, and access controls
|
||||
- Compliance with applicable laws in user's jurisdiction and industry
|
||||
- Risk management and mitigation for user's business operations
|
||||
|
||||
## 6. FORCE MAJEURE AND EXTERNAL FACTORS
|
||||
|
||||
### 6.1 Force Majeure Events
|
||||
|
||||
**We shall not be liable for any failure to perform or delay in performance due to force majeure events, including but not limited to:**
|
||||
|
||||
**(a)** **Natural Disasters**: Earthquakes, floods, hurricanes, volcanic eruptions, wildfires, or other natural catastrophes;
|
||||
|
||||
**(b)** **Human Conflicts**: Wars, terrorism, civil unrest, riots, strikes, labour disputes, or other human conflicts;
|
||||
|
||||
**(c)** **Government Actions**: Government orders, regulations, sanctions, trade restrictions, or other official actions;
|
||||
|
||||
**(d)** **Infrastructure Failures**: Power grid failures, internet backbone disruptions, telecommunications outages, or critical infrastructure failures;
|
||||
|
||||
**(e)** **Pandemics**: Public health emergencies, pandemics, or government-mandated closures;
|
||||
|
||||
**(f)** **Cyber Attacks**: Large-scale cyber attacks, distributed denial of service attacks, or other malicious activities beyond our control;
|
||||
|
||||
**(g)** **Third-Party Failures**: Failures of critical third-party services, suppliers, or infrastructure providers;
|
||||
|
||||
**(h)** **Regulatory Changes**: Sudden regulatory changes that materially affect our ability to provide Services.
|
||||
|
||||
### 6.2 Third-Party Dependencies
|
||||
|
||||
**Our Services rely on various third-party providers and dependencies, and we disclaim liability for:**
|
||||
|
||||
**(a)** **Cloud Providers**: Outages, performance issues, or failures of underlying cloud infrastructure providers;
|
||||
|
||||
**(b)** **Internet Service Providers**: Connectivity issues, routing problems, or service degradation by ISPs;
|
||||
|
||||
**(c)** **Payment Processors**: Payment processing failures, delays, or security incidents;
|
||||
|
||||
**(d)** **Content Delivery Networks**: CDN performance issues, geographical restrictions, or service limitations;
|
||||
|
||||
**(e)** **DNS Services**: Domain name resolution failures or DNS-related service interruptions;
|
||||
|
||||
**(f)** **Certificate Authorities**: SSL certificate issues, validation failures, or certificate authority problems;
|
||||
|
||||
**(g)** **Integration Partners**: Failures or changes in third-party services that integrate with our platforms;
|
||||
|
||||
**(h)** **Regulatory Authorities**: Actions by regulatory authorities that affect third-party service provision.
|
||||
|
||||
### 6.3 Technology Limitations
|
||||
|
||||
**We disclaim liability for limitations inherent in technology:**
|
||||
|
||||
**(a)** **Internet Architecture**: Limitations and vulnerabilities inherent in internet architecture and protocols;
|
||||
|
||||
**(b)** **Software Complexity**: Bugs, vulnerabilities, or limitations inherent in complex software systems;
|
||||
|
||||
**(c)** **Hardware Failures**: Hardware failures, capacity limitations, or performance degradation;
|
||||
|
||||
**(d)** **Network Congestion**: Network congestion, bandwidth limitations, or routing inefficiencies;
|
||||
|
||||
**(e)** **Browser Compatibility**: Variations in browser behaviour, compatibility issues, or rendering differences;
|
||||
|
||||
**(f)** **Device Limitations**: Limitations of user devices, operating systems, or hardware capabilities;
|
||||
|
||||
**(g)** **Protocol Limitations**: Limitations or vulnerabilities in communication protocols and standards;
|
||||
|
||||
**(h)** **Scalability Constraints**: Technical constraints that limit scalability or performance under high loads.
|
||||
|
||||
## 7. JURISDICTIONAL VARIATIONS AND ENFORCEABILITY
|
||||
|
||||
### 7.1 Jurisdictional Adaptation
|
||||
|
||||
**These liability limitations are designed to be enforceable across jurisdictions:**
|
||||
|
||||
**(a)** **Maximum Enforceability**: Limitations apply to the maximum extent permitted by applicable law in each jurisdiction;
|
||||
|
||||
**(b)** **Severability**: If any provision is unenforceable, the remainder shall remain in full force and effect;
|
||||
|
||||
**(c)** **Modification**: Limitations shall be modified as necessary to ensure enforceability while preserving intent;
|
||||
|
||||
**(d)** **Local Law Compliance**: Limitations comply with mandatory local law requirements while maximising protection;
|
||||
|
||||
**(e)** **Consumer Protection**: Special considerations for jurisdictions with strong consumer protection laws;
|
||||
|
||||
**(f)** **Business-to-Business**: Enhanced enforceability for business-to-business relationships;
|
||||
|
||||
**(g)** **International Treaties**: Compliance with international treaties and conventions affecting liability;
|
||||
|
||||
**(h)** **Conflict of Laws**: Clear conflict of law provisions to determine applicable liability rules.
|
||||
|
||||
### 7.2 Consumer Protection Considerations
|
||||
|
||||
**In jurisdictions with consumer protection laws:**
|
||||
|
||||
**(a)** **Statutory Rights**: These limitations do not affect statutory consumer rights that cannot be excluded by agreement;
|
||||
|
||||
**(b)** **Unfair Terms**: Limitations are drafted to avoid classification as unfair or unconscionable terms;
|
||||
|
||||
**(c)** **Good Faith**: All limitations are imposed in good faith and with reasonable commercial justification;
|
||||
|
||||
**(d)** **Transparency**: Clear and prominent disclosure of all liability limitations;
|
||||
|
||||
**(e)** **Proportionality**: Limitations are proportionate to the nature of Services provided;
|
||||
|
||||
**(f)** **Alternative Remedies**: Provision of alternative remedies where complete exclusion is not permitted;
|
||||
|
||||
**(g)** **Consumer Education**: Educational materials to help consumers understand limitation implications;
|
||||
|
||||
**(h)** **Regulatory Compliance**: Compliance with consumer protection regulations and guidance.
|
||||
|
||||
### 7.3 Business and Commercial Enforceability
|
||||
|
||||
**For business and commercial relationships:**
|
||||
|
||||
**(a)** **Commercial Reasonableness**: All limitations are commercially reasonable and industry-standard;
|
||||
|
||||
**(b)** **Negotiated Terms**: Limitations reflect negotiated risk allocation between commercial parties;
|
||||
|
||||
**(c)** **Insurance Coordination**: Limitations coordinate with standard commercial insurance coverage;
|
||||
|
||||
**(d)** **Industry Practice**: Limitations align with standard industry practices and norms;
|
||||
|
||||
**(e)** **Risk-Benefit Analysis**: Limitations reflect appropriate risk-benefit allocation for service provision;
|
||||
|
||||
**(f)** **Competitive Market**: Limitations are consistent with competitive market conditions;
|
||||
|
||||
**(g)** **Business Justification**: Clear business justification for all liability limitations;
|
||||
|
||||
**(h)** **Professional Standards**: Compliance with professional standards and best practices.
|
||||
|
||||
### 7.4 International Enforcement
|
||||
|
||||
**For international service provision:**
|
||||
|
||||
**(a)** **Treaty Compliance**: Compliance with international treaties affecting liability and jurisdiction;
|
||||
|
||||
**(b)** **Cross-Border Recognition**: Structure to facilitate cross-border recognition and enforcement;
|
||||
|
||||
**(c)** **Choice of Law**: Clear choice of law provisions to govern liability questions;
|
||||
|
||||
**(d)** **Forum Selection**: Appropriate forum selection clauses for dispute resolution;
|
||||
|
||||
**(e)** **Enforcement Mechanisms**: Practical mechanisms for international enforcement of limitations;
|
||||
|
||||
**(f)** **Diplomatic Immunity**: Considerations for diplomatic immunity and sovereign immunity issues;
|
||||
|
||||
**(g)** **International Standards**: Alignment with international standards for liability limitation;
|
||||
|
||||
**(h)** **Reciprocity**: Reciprocal recognition of liability limitations across jurisdictions.
|
||||
|
||||
## 8. INSURANCE AND RISK TRANSFER
|
||||
|
||||
### 8.1 User Insurance Recommendations
|
||||
|
||||
**We strongly recommend that users maintain:**
|
||||
|
||||
**(a)** **Business Liability**: General business liability insurance appropriate for their operations;
|
||||
|
||||
**(b)** **Technology Insurance**: Technology errors and omissions insurance for IT-related risks;
|
||||
|
||||
**(c)** **Cyber Insurance**: Cyber liability insurance for data security and privacy risks;
|
||||
|
||||
**(d)** **Professional Indemnity**: Professional indemnity insurance for professional service providers;
|
||||
|
||||
**(e)** **Business Interruption**: Business interruption insurance for operational continuity;
|
||||
|
||||
**(f)** **Data Breach**: Specific data breach response insurance coverage;
|
||||
|
||||
**(g)** **International Coverage**: International insurance coverage for global business operations;
|
||||
|
||||
**(h)** **Industry-Specific**: Industry-specific insurance coverage for regulated sectors.
|
||||
|
||||
### 8.2 Risk Transfer Mechanisms
|
||||
|
||||
**Our liability limitations facilitate risk transfer through:**
|
||||
|
||||
**(a)** **Insurance Markets**: Enabling users to obtain appropriate insurance coverage for transferred risks;
|
||||
|
||||
**(b)** **Risk Pricing**: Allowing market-based pricing of risks through insurance mechanisms;
|
||||
|
||||
**(c)** **Loss Prevention**: Incentivising loss prevention and risk management measures;
|
||||
|
||||
**(d)** **Claims Handling**: Facilitating efficient claims handling and dispute resolution;
|
||||
|
||||
**(e)** **Risk Pooling**: Enabling risk pooling through insurance and other financial mechanisms;
|
||||
|
||||
**(f)** **Capital Markets**: Facilitating access to capital markets for risk financing;
|
||||
|
||||
**(g)** **Self-Insurance**: Supporting self-insurance and captive insurance arrangements;
|
||||
|
||||
**(h)** **Risk Sharing**: Enabling risk sharing arrangements between commercial parties.
|
||||
|
||||
### 8.3 Insurance Coordination
|
||||
|
||||
**These liability limitations coordinate with insurance coverage through:**
|
||||
|
||||
**(a)** **Coverage Gaps**: Identifying and addressing potential coverage gaps;
|
||||
|
||||
**(b)** **Deductible Management**: Coordinating with insurance deductibles and self-insured retentions;
|
||||
|
||||
**(c)** **Claims Coordination**: Facilitating coordination between multiple insurance policies;
|
||||
|
||||
**(d)** **Subrogation Rights**: Preserving subrogation rights for insurance carriers;
|
||||
|
||||
**(e)** **Additional Insured**: Provisions for additional insured status where appropriate;
|
||||
|
||||
**(f)** **Waiver of Subrogation**: Coordinated waivers of subrogation between parties and insurers;
|
||||
|
||||
**(g)** **Primary and Excess**: Coordination between primary and excess insurance coverage;
|
||||
|
||||
**(h)** **International Coverage**: Coordination of coverage across multiple jurisdictions and policies.
|
||||
|
||||
## 9. SURVIVAL AND ENFORCEMENT
|
||||
|
||||
### 9.1 Survival of Provisions
|
||||
|
||||
**The following provisions survive termination of any agreement or relationship:**
|
||||
|
||||
**(a)** **Liability Limitations**: All liability limitations and disclaimers remain in effect permanently;
|
||||
|
||||
**(b)** **Indemnification**: All indemnification obligations continue for events occurring before termination;
|
||||
|
||||
**(c)** **Warranty Disclaimers**: All warranty disclaimers remain effective for all prior service provision;
|
||||
|
||||
**(d)** **Risk Allocation**: Risk allocation provisions continue to apply to pre-termination activities;
|
||||
|
||||
**(e)** **Force Majeure**: Force majeure protections apply to events before, during, and after termination;
|
||||
|
||||
**(f)** **Insurance Provisions**: Insurance-related provisions continue as necessary for coverage coordination;
|
||||
|
||||
**(g)** **Dispute Resolution**: Dispute resolution procedures continue for all claims and disputes;
|
||||
|
||||
**(h)** **Governing Law**: Governing law and jurisdiction provisions continue to apply to all matters.
|
||||
|
||||
### 9.2 Enforcement Mechanisms
|
||||
|
||||
**These limitations are enforceable through:**
|
||||
|
||||
**(a)** **Contractual Terms**: Express contractual terms in all user agreements and terms of service;
|
||||
|
||||
**(b)** **Click-Through Acceptance**: Click-through acceptance mechanisms for online services;
|
||||
|
||||
**(c)** **Notice Provisions**: Prominent notice and disclosure of all liability limitations;
|
||||
|
||||
**(d)** **Separate Agreement**: Separate acknowledgement agreements for high-risk activities;
|
||||
|
||||
**(e)** **Professional Advice**: Requirements for professional legal advice in certain circumstances;
|
||||
|
||||
**(f)** **Renewal Confirmations**: Periodic renewal and confirmation of limitation acceptance;
|
||||
|
||||
**(g)** **Legal Documentation**: Comprehensive legal documentation supporting enforceability;
|
||||
|
||||
**(h)** **Compliance Monitoring**: Ongoing monitoring of compliance with limitation requirements.
|
||||
|
||||
### 9.3 Amendment and Modification
|
||||
|
||||
**These liability limitations may be amended only through:**
|
||||
|
||||
**(a)** **Written Agreement**: Express written agreement signed by authorised representatives;
|
||||
|
||||
**(b)** **Formal Process**: Formal amendment process with appropriate notice and acceptance;
|
||||
|
||||
**(c)** **Legal Review**: Review by qualified legal counsel before any modifications;
|
||||
|
||||
**(d)** **Insurance Consultation**: Consultation with insurance providers regarding coverage impacts;
|
||||
|
||||
**(e)** **Risk Assessment**: Comprehensive risk assessment of proposed modifications;
|
||||
|
||||
**(f)** **Board Approval**: Board approval for significant changes to fundamental risk allocation;
|
||||
|
||||
**(g)** **Documentation**: Comprehensive documentation of all changes and their rationale;
|
||||
|
||||
**(h)** **User Notice**: Appropriate notice to users of any changes affecting their obligations or rights.
|
||||
|
||||
### 9.4 Integration and Interpretation
|
||||
|
||||
**These provisions shall be interpreted and applied as follows:**
|
||||
|
||||
**(a)** **Broad Construction**: Liability limitations shall be construed broadly to maximise protection;
|
||||
|
||||
**(b)** **Cumulative Effect**: All limitations are cumulative and mutually reinforcing;
|
||||
|
||||
**(c)** **Consistent Interpretation**: Consistent interpretation across all related agreements and policies;
|
||||
|
||||
**(d)** **Good Faith**: All provisions are made and shall be interpreted in good faith;
|
||||
|
||||
**(e)** **Commercial Reasonableness**: Interpretation consistent with commercial reasonableness;
|
||||
|
||||
**(f)** **Industry Standards**: Interpretation consistent with industry standards and best practices;
|
||||
|
||||
**(g)** **Legal Precedent**: Consideration of relevant legal precedent and case law;
|
||||
|
||||
**(h)** **Regulatory Guidance**: Consideration of applicable regulatory guidance and interpretation.
|
||||
|
||||
## 10. CONTACT INFORMATION AND LEGAL SUPPORT
|
||||
|
||||
### 10.1 Legal and Liability Questions
|
||||
|
||||
For questions about liability limitations and legal matters:
|
||||
|
||||
**Email:** legal@nhcarrigan.com
|
||||
|
||||
**Subject Line:** Liability and Legal Inquiry - [Brief Description]
|
||||
|
||||
**Response Time:** Within 5 business days for legal inquiries
|
||||
|
||||
**Legal Counsel:** All complex legal matters are reviewed by qualified legal counsel
|
||||
|
||||
### 10.2 Claims and Disputes
|
||||
|
||||
For claims potentially subject to liability limitations:
|
||||
|
||||
**Email:** claims@nhcarrigan.com
|
||||
|
||||
**Subject Line:** Legal Claim - [Claim Type]
|
||||
|
||||
**Notice Requirement:** Formal notice required for all claims seeking damages
|
||||
|
||||
**Response Time:** Within 10 business days for claim acknowledgement
|
||||
|
||||
### 10.3 Insurance and Risk Management
|
||||
|
||||
For insurance and risk management coordination:
|
||||
|
||||
**Email:** risk@nhcarrigan.com
|
||||
|
||||
**Subject Line:** Insurance and Risk Matter
|
||||
|
||||
**Coverage Questions:** Questions about insurance coverage and risk transfer
|
||||
|
||||
**Response Time:** Within 7 business days for insurance-related inquiries
|
||||
|
||||
### 10.4 Emergency Legal Matters
|
||||
|
||||
For urgent legal matters requiring immediate attention:
|
||||
|
||||
**Email:** legal-emergency@nhcarrigan.com
|
||||
|
||||
**Subject Line:** URGENT LEGAL MATTER - [Brief Description]
|
||||
|
||||
**Phone:** Emergency contact information available to qualified legal representatives
|
||||
|
||||
**Response Time:** Within 24 hours for emergency legal matters
|
||||
|
||||
**Document Version:** 1.0
|
||||
|
||||
**Last Updated:** 15 September 2025
|
||||
|
||||
**Effective Date:** 15 September 2025
|
||||
|
||||
**Next Review Date:** 15 March 2026
|
||||
|
||||
---
|
||||
|
||||
*This Limitation of Liability and Indemnification Policy provides comprehensive legal protection through risk allocation, liability limitations, and indemnification provisions. By using our Services, you acknowledge and agree to these terms and understand their legal implications. For questions about liability matters, please contact us at legal@nhcarrigan.com.*
|
||||
+1761
-825
File diff suppressed because it is too large
Load Diff
+356
-133
@@ -2,241 +2,464 @@
|
||||
title: Privacy Policy
|
||||
---
|
||||
|
||||
## 1. Overview and Scope
|
||||
**YOUR PRIVACY RIGHTS AND OUR DATA PROTECTION COMMITMENTS**
|
||||
|
||||
### 1.1. General Applicability
|
||||
## 1. INTRODUCTION AND SCOPE
|
||||
|
||||
This privacy policy ("General Policy") governs the collection, use, storage, and protection of data across all our services, platforms, and applications (collectively referred to as "Services").
|
||||
### 1.1 About This Policy
|
||||
|
||||
### 1.2. Project-Specific Policies
|
||||
This Privacy Policy ("Policy") sets out how nhcarrigan ("we," "us," "our," or "the Company") collects, uses, stores, and protects your personal information when you use our services, applications, and platforms (collectively, the "Services").
|
||||
|
||||
Individual projects or Services may be subject to additional, project-specific privacy policies ("Project Policies"). These Project Policies apply concurrently with the General Policy. In the event of any conflict between the General Policy and a Project Policy, the stricter privacy protections shall prevail.
|
||||
### 1.2 Policy Applicability
|
||||
|
||||
### 1.3. Policy Updates and Retroactivity
|
||||
This Policy applies to:
|
||||
|
||||
We reserve the right to modify, amend, or update this General Policy and any Project Policies at any time. All changes to these policies, including the General Policy and any Project Policies, are retroactive and apply to previously collected data as well as data collected after the changes take effect.
|
||||
**(a)** All services, websites, and applications operated by nhcarrigan;
|
||||
|
||||
### 1.4. Notification of Changes
|
||||
**(b)** All users of our Services, regardless of location;
|
||||
|
||||
We will make reasonable efforts to notify users of significant changes to our privacy policies. However, it is the user's responsibility to regularly review the applicable privacy policies for any updates.
|
||||
**(c)** All personal data collected through our Services;
|
||||
|
||||
### 1.5. Acceptance of Terms
|
||||
**(d)** Both current and former users of our Services.
|
||||
|
||||
By accessing, using, or continuing to use our Services, you explicitly acknowledge and agree to be bound by the most current version of the General Policy and any applicable Project Policies. If you do not agree with the terms of these policies, you must immediately cease using our Services.
|
||||
### 1.3 Additional Policies
|
||||
|
||||
### 1.6. Effective Date
|
||||
Specific Services may be subject to additional privacy notices or terms ("Service-Specific Policies"). Where such policies exist:
|
||||
|
||||
The effective date of the current version of this policy will be clearly stated at the beginning of the document. Each revision will be numbered or dated for easy reference.
|
||||
**(a)** They supplement this main Policy;
|
||||
|
||||
## 2. Data Collection, Documentation, and User Rights
|
||||
**(b)** In case of conflict, the most privacy-protective terms shall apply;
|
||||
|
||||
### 2.1. Data Collection Practices
|
||||
**(c)** We shall clearly identify when additional policies apply.
|
||||
|
||||
We strive to collect only the data necessary for the proper functioning and improvement of our Services. However, the scope of data collection may change as our Services evolve.
|
||||
### 1.4 Policy Updates
|
||||
|
||||
### 2.2. Documentation Efforts
|
||||
We reserve the right to update this Policy at any time. Changes may:
|
||||
|
||||
We make every effort to maintain accurate and up-to-date documentation regarding our data collection practices. This includes:
|
||||
**(a)** Take effect immediately upon publication;
|
||||
|
||||
- Regular reviews of our data collection processes
|
||||
- Timely updates to our privacy policy and related documentation
|
||||
- Clear communication about significant changes in data collection
|
||||
**(b)** Apply retroactively to previously collected data;
|
||||
|
||||
### 2.3. Potential Undocumented Data Collection
|
||||
**(c)** Require your continued consent through ongoing use of our Services.
|
||||
|
||||
Despite our best efforts, it is possible that at any given time, an application or Service may collect data that is not explicitly documented. This may occur due to:
|
||||
### 1.5 Acceptance and Consent
|
||||
|
||||
- Recent updates or changes to our Services
|
||||
- Technical issues or bugs
|
||||
- Third-party integrations or dependencies
|
||||
By using our Services, you:
|
||||
|
||||
### 2.4. General Data Rights
|
||||
**(a)** Acknowledge that you have read and understood this Policy;
|
||||
|
||||
Regardless of whether specific data collection is documented, users have the following rights:
|
||||
**(b)** Consent to our collection and processing of your personal data as described;
|
||||
|
||||
#### 2.4.1. Right to Access:
|
||||
**(c)** Agree to be bound by the current version of this Policy.
|
||||
|
||||
At any time, you may request a complete copy of your data stored by one of our applications. Requests must be done via `privacy@nhcarrigan.com` from the email address the data belongs to. This ensures that a user cannot impersonate you and request your data. We may request additional identifying information, depending on the structure of the data collected by the application.
|
||||
### 1.6 Contact for Privacy Matters
|
||||
|
||||
#### 3.4.2. Right to Rectification:
|
||||
For all privacy-related inquiries, please contact us at: **privacy@nhcarrigan.com**
|
||||
|
||||
You may request corrections to any inaccurate data we hold about you.
|
||||
## 2. INFORMATION WE COLLECT
|
||||
|
||||
#### 3.4.3. Right to Erasure:
|
||||
### 2.1 Types of Personal Information
|
||||
|
||||
At any time, you may request complete removal of your stored data. Requests must be done via `privacy@nhcarrigan.com` from the email address the data belongs to. This ensures that a user cannot impersonate you and request your data. We may request additional identifying information, depending on the structure of the data collected by the application.
|
||||
We may collect the following categories of personal information:
|
||||
|
||||
This will **not** opt you out of future data collection unless specifically requested. We reserve the right to refuse removal requests when the data are necessary for specific functionality of the app, in circumstances where removing your data would compromise the functionality for all users.
|
||||
**(a)** **Identity Information:** Name, username, email address, and demographic information;
|
||||
|
||||
#### 3.4.4. Right to Restrict Processing:
|
||||
**(b)** **Technical Information:** IP address, browser type, device information, and operating system;
|
||||
|
||||
At any time, you may request to opt out of data collection for an application by requesting removal of your data and discontinuing interaction with the application. We may request additional identifying information, depending on the structure of the data collected by the application.
|
||||
**(c)** **Usage Information:** How you interact with our Services, including pages visited and features used;
|
||||
|
||||
We reserve the right to refuse opt-out requests when the data are necessary for specific functionality of the app, in circumstances where opting-out would compromise the functionality for all users.
|
||||
**(d)** **Communication Information:** Messages sent through our platforms and support communications;
|
||||
|
||||
#### 3.4.5. Right to Data Portability:
|
||||
**(e)** **Account Information:** Registration details, preferences, and account settings.
|
||||
|
||||
You may request a copy of your data in a structured, commonly used, and machine-readable format.
|
||||
### 2.2 Methods of Collection
|
||||
|
||||
### 3.5. Exercising Your Rights
|
||||
We collect personal information through:
|
||||
|
||||
To exercise any of these rights or to inquire about data we may hold:
|
||||
**(a)** **Direct Provision:** Information you provide when registering, using our Services, or contacting us;
|
||||
|
||||
- Contact us through `privacy@nhcarrigan.com`.
|
||||
- Be prepared to verify your identity to protect the security of your information
|
||||
**(b)** **Automated Collection:** Technical data collected through cookies, logs, and analytics tools;
|
||||
|
||||
### 3.6. Opting Out of Data Collection
|
||||
**(c)** **Third-Party Sources:** Information from integrated services and platforms (with your consent).
|
||||
|
||||
- You may cease using our Services
|
||||
- For specific types of data collection, we may offer granular opt-out options
|
||||
- Note that opting out of essential data collection may limit or prevent your use of certain Services
|
||||
### 2.3 Undocumented Collection
|
||||
|
||||
### 3.7. Response Time and Process
|
||||
Despite our best efforts to maintain comprehensive documentation:
|
||||
|
||||
We will make reasonable efforts to respond to all data-related requests within 30 days. Complex requests may require additional time, in which case we will notify you.
|
||||
**(a)** Some data collection may occur that is not explicitly documented;
|
||||
|
||||
### 3.8. Limitations
|
||||
**(b)** This may result from system updates, third-party integrations, or technical changes;
|
||||
|
||||
While we strive to honour all legitimate requests, be aware that legal requirements may sometimes prevent us from fully complying with certain requests.
|
||||
**(c)** You maintain all privacy rights regardless of documentation status;
|
||||
|
||||
### 3.9. Ongoing Commitment
|
||||
**(d)** We commit to honouring all data subject rights for any collected information.
|
||||
|
||||
We are committed to transparency and user privacy. We continuously work to improve our data practices and documentation to ensure the highest standards of data protection and user trust.
|
||||
## 3. HOW WE USE YOUR INFORMATION
|
||||
|
||||
## 4. Data Retention
|
||||
### 3.1 Primary Purposes
|
||||
|
||||
### 4.1. Retention Principle
|
||||
We process your personal information for the following purposes:
|
||||
|
||||
We adhere to the principle of data minimization, storing personal data for the shortest time necessary to fulfil the purposes for which it was collected and to ensure the proper functioning of our applications.
|
||||
**(a)** **Service Provision:** To provide, operate, and maintain our Services;
|
||||
|
||||
### 4.2. Retention Periods
|
||||
**(b)** **Communication:** To respond to inquiries and provide customer support;
|
||||
|
||||
Specific retention periods may vary depending on the type of data and the purpose for which it is processed. Generally:
|
||||
**(c)** **Improvement:** To analyse usage patterns and enhance our Services;
|
||||
|
||||
- Active user data is retained for the duration of the user's account activity
|
||||
- Inactive user data may be retained for a period after the last user interaction, typically not exceeding 12 months
|
||||
- Aggregated and anonymized data may be retained indefinitely for analytical purposes
|
||||
**(d)** **Security:** To protect against fraud, abuse, and security threats;
|
||||
|
||||
### 4.3. Automatic Deletion
|
||||
**(e)** **Legal Compliance:** To fulfil our legal obligations and protect our rights.
|
||||
|
||||
Where technically feasible, we implement automated processes to delete or anonymize personal data that has exceeded its retention period.
|
||||
### 3.2 Legal Basis for Processing
|
||||
|
||||
### 4.4. Legal and Regulatory Compliance
|
||||
Our legal basis for processing personal information includes:
|
||||
|
||||
Certain data may be retained for longer periods if required by applicable laws, regulations, or to comply with legal obligations.
|
||||
**(a)** **Consent:** Where you have explicitly agreed to processing;
|
||||
|
||||
### 4.5. Backup Retention
|
||||
**(b)** **Contract:** Where processing is necessary to perform our Services;
|
||||
|
||||
For data recovery purposes, backups may contain personal data for a period beyond the active retention period. These backups are secured and accessed only when necessary for system restoration.
|
||||
**(c)** **Legitimate Interests:** Where we have legitimate business interests that do not override your rights;
|
||||
|
||||
### 4.6. User-Initiated Deletion
|
||||
**(d)** **Legal Obligation:** Where required by applicable law.
|
||||
|
||||
Users may request the deletion of their data at any time, subject to our legitimate business needs and legal obligations.
|
||||
### 3.3 Automated Decision-Making
|
||||
|
||||
## 5. Availability of Data
|
||||
We may use automated systems for:
|
||||
|
||||
### 5.1. Access Control
|
||||
**(a)** Spam detection and content moderation;
|
||||
|
||||
Access to user data is strictly controlled and limited to authorized members of the nhcarrigan team on a need-to-know basis.
|
||||
**(b)** Security threat identification;
|
||||
|
||||
### 5.2. Purpose Limitation
|
||||
**(c)** Service personalisation and recommendations.
|
||||
|
||||
Data access by the nhcarrigan team is permitted only for the following purposes:
|
||||
You have the right to request human review of automated decisions that significantly affect you.
|
||||
|
||||
- Debugging application issues
|
||||
- Improving application functionality and user experience
|
||||
- Contributing to the development and maintenance of the application
|
||||
- Responding to user support requests
|
||||
- Ensuring compliance with legal and regulatory requirements
|
||||
## 4. DATA SHARING AND DISCLOSURE
|
||||
|
||||
### 5.3. Data Security Measures
|
||||
### 4.1 Internal Access
|
||||
|
||||
We implement robust security measures to protect data from unauthorized access, including but not limited to:
|
||||
Access to your personal information within our organisation is restricted to:
|
||||
|
||||
- Encryption of data in transit and at rest
|
||||
- Multi-factor authentication for developer accounts
|
||||
- Regular security audits and vulnerability assessments
|
||||
- Logging of data access and modifications
|
||||
**(a)** Authorised team members on a need-to-know basis;
|
||||
|
||||
### 5.4. Developer Training and Accountability
|
||||
**(b)** Personnel responsible for system maintenance and support;
|
||||
|
||||
All team members with data access are:
|
||||
**(c)** Individuals involved in legal compliance and security matters.
|
||||
|
||||
- Required to undergo privacy and security training
|
||||
- Bound by confidentiality agreements
|
||||
- Subject to disciplinary action for unauthorized data access or misuse
|
||||
### 4.2 Third-Party Sharing
|
||||
|
||||
### 5.5. Third-Party Access
|
||||
We may share your information with:
|
||||
|
||||
We do not sell user data. In cases where third-party service providers require access to perform specific functions:
|
||||
**(a)** **Service Providers:** Third-party companies that help us operate our Services;
|
||||
|
||||
- Access is limited to the minimum necessary data
|
||||
- Providers are bound by strict contractual obligations to protect user data
|
||||
- We regularly review and audit third-party practices
|
||||
**(b)** **Legal Authorities:** When required by law, court order, or to protect legal rights;
|
||||
|
||||
### 5.6. Transparency
|
||||
**(c)** **Business Partners:** With your explicit consent and for specific purposes;
|
||||
|
||||
We maintain logs of data access by our team and can provide this information upon justified request, subject to privacy and security considerations.
|
||||
**(d)** **Successors:** In the event of a merger, acquisition, or business transfer.
|
||||
|
||||
### 5.7. User Data Requests
|
||||
### 4.3 Data Sale Prohibition
|
||||
|
||||
Users may request information about how their data has been accessed or used by contacting our designated data protection contact.
|
||||
We do not and will not sell your personal information to third parties for commercial purposes.
|
||||
|
||||
### 5.8. Continuous Improvement
|
||||
### 4.4 International Transfers
|
||||
|
||||
We regularly review and update our data handling practices to ensure the highest standards of data protection and to minimize unnecessary access to personal information.
|
||||
Your information may be transferred to and processed in countries other than your own. We ensure appropriate safeguards are in place for such transfers, including:
|
||||
|
||||
## 6. Contact Information and Data Inquiries
|
||||
**(a)** Adequacy decisions by relevant authorities;
|
||||
|
||||
We value transparency and are committed to addressing any questions or concerns you may have regarding our privacy practices. There are several ways to reach us:
|
||||
**(b)** Standard contractual clauses;
|
||||
|
||||
### 6.1. Forum
|
||||
**(c)** Other legally recognised transfer mechanisms.
|
||||
|
||||
For immediate assistance and community support, join our forum: https://forum.nhcarrigan.com
|
||||
## 5. YOUR PRIVACY RIGHTS
|
||||
|
||||
### 6.2. Email Contact
|
||||
### 5.1 General Rights
|
||||
|
||||
For privacy-specific inquiries or formal requests, please email: `privacy@nhcarrigan.com`
|
||||
Regardless of your location, you have the following rights regarding your personal information:
|
||||
|
||||
### 6.3. Response Time
|
||||
**(a)** **Right of Access:** Request a copy of the personal information we hold about you;
|
||||
|
||||
We strive to respond to all inquiries within 5 business days. Complex issues may require additional time.
|
||||
**(b)** **Right of Rectification:** Request correction of inaccurate or incomplete information;
|
||||
|
||||
### 6.4. Types of Inquiries
|
||||
**(c)** **Right of Erasure:** Request deletion of your personal information in certain circumstances;
|
||||
|
||||
We welcome contact regarding:
|
||||
**(d)** **Right to Restrict Processing:** Request limitation of how we process your information;
|
||||
|
||||
- Questions about this privacy policy
|
||||
- Inquiries about our data collection and use practices
|
||||
- Requests to exercise your data rights (access, rectification, erasure, etc.)
|
||||
- Reporting of potential data breaches or security concerns
|
||||
- Suggestions for improving our privacy practices
|
||||
**(e)** **Right to Data Portability:** Receive your information in a structured, commonly used format.
|
||||
|
||||
### 6.5. Information to Include
|
||||
### 5.2 Exercising Your Rights
|
||||
|
||||
To help us address your inquiry efficiently, please include:
|
||||
To exercise any of these rights:
|
||||
|
||||
- Your full name
|
||||
- The email address associated with your account (if applicable)
|
||||
- A detailed description of your question or concern
|
||||
- Any relevant dates, times, or specific instances related to your inquiry
|
||||
**(a)** Submit requests to **privacy@nhcarrigan.com** from the email address associated with your account;
|
||||
|
||||
### 6.6. Verification Process
|
||||
**(b)** Provide sufficient information to verify your identity;
|
||||
|
||||
For security reasons, we may need to verify your identity before processing certain requests, especially those related to personal data.
|
||||
**(c)** Specify clearly which right you wish to exercise;
|
||||
|
||||
### 6.7. Alternative Contact Methods
|
||||
**(d)** Include any relevant details or documentation to support your request.
|
||||
|
||||
If you are unable to use Discord or email, please visit our website for additional contact options: https://nhcarrigan.com
|
||||
### 5.3 Response Timeframes
|
||||
|
||||
### 6.8. Updates and Notifications
|
||||
We endeavour to respond to all privacy requests within:
|
||||
|
||||
If you wish to receive updates about changes to our privacy policy or data practices, please bookmark this page.
|
||||
**(a)** **Simple requests:** Five (5) business days;
|
||||
|
||||
### 6.9. Legal Inquiries
|
||||
**(b)** **Complex requests:** Thirty (30) days, with notification if additional time is required;
|
||||
|
||||
For legal or formal inquiries, please use the email provided above and clearly mark your message as a legal inquiry.
|
||||
**(c)** **Urgent security matters:** Within twenty-four (24) hours where possible.
|
||||
|
||||
### 6.10. Accessibility
|
||||
### 5.4 Limitations on Rights
|
||||
|
||||
If you require this information in an alternative format for accessibility reasons, please let us know, and we will do our best to accommodate your needs.
|
||||
Your privacy rights may be limited where:
|
||||
|
||||
**(a)** Deletion would compromise essential functionality for all users;
|
||||
|
||||
**(b)** We have overriding legitimate interests or legal obligations;
|
||||
|
||||
**(c)** Information is necessary for the establishment, exercise, or defence of legal claims;
|
||||
|
||||
**(d)** Processing is required for compliance with legal obligations.
|
||||
|
||||
## 6. DATA RETENTION AND DELETION
|
||||
|
||||
### 6.1 Retention Principles
|
||||
|
||||
We retain personal information based on the following principles:
|
||||
|
||||
**(a)** **Data Minimisation:** We keep only what is necessary for the stated purposes;
|
||||
|
||||
**(b)** **Purpose Limitation:** Information is retained only as long as needed for its original purpose;
|
||||
|
||||
**(c)** **Legal Requirements:** Some information may be retained to comply with legal obligations.
|
||||
|
||||
### 6.2 Retention Periods
|
||||
|
||||
General retention periods include:
|
||||
|
||||
**(a)** **Active Account Data:** Retained whilst your account remains active;
|
||||
|
||||
**(b)** **Inactive Account Data:** Retained for up to twelve (12) months after last activity;
|
||||
|
||||
**(c)** **Communication Records:** Retained for up to three (3) years for support purposes;
|
||||
|
||||
**(d)** **Legal and Compliance Data:** Retained as required by applicable laws.
|
||||
|
||||
### 6.3 Automated Deletion
|
||||
|
||||
Where technically feasible, we implement automated systems to:
|
||||
|
||||
**(a)** Delete information that has exceeded its retention period;
|
||||
|
||||
**(b)** Anonymise data where deletion is not possible;
|
||||
|
||||
**(c)** Regularly review and purge unnecessary information.
|
||||
|
||||
### 6.4 Backup Retention
|
||||
|
||||
For system recovery purposes:
|
||||
|
||||
**(a)** Backups may contain personal information beyond active retention periods;
|
||||
|
||||
**(b)** Backup systems are secured and accessed only when necessary for restoration;
|
||||
|
||||
**(c)** Personal information in backups is subject to the same protection standards.
|
||||
|
||||
## 7. DATA SECURITY
|
||||
|
||||
### 7.1 Security Measures
|
||||
|
||||
We implement comprehensive security measures including:
|
||||
|
||||
**(a)** **Encryption:** Data is encrypted both in transit and at rest;
|
||||
|
||||
**(b)** **Access Controls:** Multi-factor authentication and role-based access restrictions;
|
||||
|
||||
**(c)** **Monitoring:** Continuous monitoring for security threats and unauthorised access;
|
||||
|
||||
**(d)** **Regular Audits:** Periodic security assessments and vulnerability testing.
|
||||
|
||||
### 7.2 Personnel Security
|
||||
|
||||
All team members with access to personal information:
|
||||
|
||||
**(a)** Undergo privacy and security training;
|
||||
|
||||
**(b)** Sign confidentiality agreements;
|
||||
|
||||
**(c)** Are subject to background checks where legally permissible;
|
||||
|
||||
**(d)** Face disciplinary action for unauthorised access or misuse.
|
||||
|
||||
### 7.3 Incident Response
|
||||
|
||||
In the event of a data breach:
|
||||
|
||||
**(a)** We will investigate and contain the incident promptly;
|
||||
|
||||
**(b)** Affected users will be notified within seventy-two (72) hours where feasible;
|
||||
|
||||
**(c)** Relevant authorities will be notified as required by law;
|
||||
|
||||
**(d)** We will provide regular updates on our investigation and remediation efforts.
|
||||
|
||||
### 7.4 Third-Party Security
|
||||
|
||||
Third-party service providers must:
|
||||
|
||||
**(a)** Maintain equivalent security standards;
|
||||
|
||||
**(b)** Sign data processing agreements;
|
||||
|
||||
**(c)** Undergo regular security assessments;
|
||||
|
||||
**(d)** Notify us immediately of any security incidents.
|
||||
|
||||
## 8. COOKIES AND TRACKING TECHNOLOGIES
|
||||
|
||||
### 8.1 Use of Cookies
|
||||
|
||||
We use cookies and similar technologies to:
|
||||
|
||||
**(a)** Remember your preferences and settings;
|
||||
|
||||
**(b)** Analyse usage patterns and improve our Services;
|
||||
|
||||
**(c)** Provide personalised content and features;
|
||||
|
||||
**(d)** Maintain security and prevent fraud.
|
||||
|
||||
### 8.2 Types of Cookies
|
||||
|
||||
We may use the following types of cookies:
|
||||
|
||||
**(a)** **Essential Cookies:** Necessary for basic functionality;
|
||||
|
||||
**(b)** **Performance Cookies:** Help us understand how our Services are used;
|
||||
|
||||
**(c)** **Functional Cookies:** Remember your choices and preferences;
|
||||
|
||||
**(d)** **Targeting Cookies:** Used to deliver relevant content (with consent).
|
||||
|
||||
### 8.3 Cookie Management
|
||||
|
||||
You can manage cookies through:
|
||||
|
||||
**(a)** Your browser settings;
|
||||
|
||||
**(b)** Our cookie preference centre (where available);
|
||||
|
||||
**(c)** Opt-out tools provided by third-party services.
|
||||
|
||||
Please note that disabling certain cookies may affect the functionality of our Services.
|
||||
|
||||
## 9. CHILDREN'S PRIVACY
|
||||
|
||||
### 9.1 Age Restrictions
|
||||
|
||||
Our Services are not intended for children under the age of thirteen (13), or the minimum digital age of consent in your jurisdiction, whichever is higher.
|
||||
|
||||
### 9.2 Collection from Children
|
||||
|
||||
We do not knowingly collect personal information from children under the applicable minimum age. If we become aware that we have collected such information:
|
||||
|
||||
**(a)** We will delete the information promptly;
|
||||
|
||||
**(b)** We will notify the child's parent or guardian if possible;
|
||||
|
||||
**(c)** We will take steps to prevent future collection.
|
||||
|
||||
### 9.3 Parental Rights
|
||||
|
||||
Parents and guardians have the right to:
|
||||
|
||||
**(a)** Review any personal information we hold about their child;
|
||||
|
||||
**(b)** Request deletion of their child's information;
|
||||
|
||||
**(c)** Refuse to permit further collection from their child.
|
||||
|
||||
## 10. CONTACT INFORMATION AND COMPLAINTS
|
||||
|
||||
### 10.1 Privacy Contact
|
||||
|
||||
For all privacy-related matters, contact our Data Protection Officer at:
|
||||
|
||||
**Email:** privacy@nhcarrigan.com
|
||||
|
||||
**Forum:** https://forum.nhcarrigan.com (for general inquiries)
|
||||
|
||||
### 10.2 Information to Include
|
||||
|
||||
When contacting us about privacy matters, please provide:
|
||||
|
||||
**(a)** Your full name and contact information;
|
||||
|
||||
**(b)** Details of your request or concern;
|
||||
|
||||
**(c)** Any relevant account information or identifiers;
|
||||
|
||||
**(d)** Supporting documentation if applicable.
|
||||
|
||||
### 10.3 Response Commitment
|
||||
|
||||
We commit to:
|
||||
|
||||
**(a)** Acknowledging all privacy inquiries within two (2) business days;
|
||||
|
||||
**(b)** Providing substantive responses within the timeframes specified in this Policy;
|
||||
|
||||
**(c)** Treating all inquiries with respect and confidentiality;
|
||||
|
||||
**(d)** Following up to ensure your concerns have been adequately addressed.
|
||||
|
||||
### 10.4 Complaints and Escalation
|
||||
|
||||
If you are not satisfied with our response:
|
||||
|
||||
**(a)** You may request escalation to senior management;
|
||||
|
||||
**(b)** You have the right to lodge a complaint with relevant data protection authorities;
|
||||
|
||||
**(c)** You may seek independent legal advice regarding your rights.
|
||||
|
||||
### 10.5 Supervisory Authority Contact
|
||||
|
||||
For complaints in jurisdictions with data protection authorities, you may contact your local supervisory authority. In the European Union, you can find your local authority at: https://edpb.europa.eu/about-edpb/board/members_en
|
||||
|
||||
## 11. UPDATES AND EFFECTIVE DATE
|
||||
|
||||
### 11.1 Policy Updates
|
||||
|
||||
We may update this Policy periodically to reflect:
|
||||
|
||||
**(a)** Changes in our data processing practices;
|
||||
|
||||
**(b)** New legal requirements or regulatory guidance;
|
||||
|
||||
**(c)** Feedback from users and data protection authorities;
|
||||
|
||||
**(d)** Technological developments and security enhancements.
|
||||
|
||||
### 11.2 Notification of Changes
|
||||
|
||||
We will notify you of material changes through:
|
||||
|
||||
**(a)** Prominent notices on our Services;
|
||||
|
||||
**(b)** Email notifications to registered users;
|
||||
|
||||
**(c)** Updates to our website and documentation.
|
||||
|
||||
### 11.3 Version History
|
||||
|
||||
Previous versions of this Policy are available upon request for transparency and reference purposes.
|
||||
|
||||
**Last Updated:** 15 September 2025
|
||||
|
||||
**Effective Date:** 15 September 2025
|
||||
|
||||
---
|
||||
|
||||
*This Privacy Policy is designed to comply with applicable data protection laws whilst providing clear information about our privacy practices. If you have any questions or concerns, please do not hesitate to contact us.*
|
||||
|
||||
@@ -2,135 +2,606 @@
|
||||
title: Security Policy
|
||||
---
|
||||
|
||||
## 1. Introduction
|
||||
**PROTECTING OUR SYSTEMS AND YOUR DATA THROUGH RESPONSIBLE SECURITY PRACTICES**
|
||||
|
||||
This Security Policy outlines the procedures for reporting security vulnerabilities in our applications and the terms under which we handle such reports. By participating in our security reporting process, you agree to comply with this policy.
|
||||
## 1. INTRODUCTION AND SCOPE
|
||||
|
||||
## 2. Scope
|
||||
### 1.1 Policy Overview
|
||||
|
||||
This policy applies to all applications, services, and systems maintained by our organization, including but not limited to:
|
||||
This Security Policy ("Policy") establishes the procedures and terms under which we handle the reporting and resolution of security vulnerabilities discovered in our applications, systems, and services. By participating in our security reporting process, you acknowledge and agree to comply with all provisions of this Policy.
|
||||
|
||||
- Our main websites and applications
|
||||
- All open-source projects hosted on our repositories
|
||||
- Any associated APIs or backend services
|
||||
### 1.2 Scope of Coverage
|
||||
|
||||
## 3. Reporting a Vulnerability
|
||||
This Policy applies to all applications, services, and systems maintained by nhcarrigan, including but not limited to:
|
||||
|
||||
### 3.1 Reporting Channels
|
||||
**(a)** All primary websites and web applications operated under our domain;
|
||||
|
||||
If you discover a security vulnerability within any of our applications or systems, please report it through one of the following secure channels:
|
||||
**(b)** Mobile applications distributed through official channels;
|
||||
|
||||
1. Send an email to `security@nhcarrigan.com`
|
||||
**(c)** Open-source projects hosted in our official repositories;
|
||||
|
||||
### 3.2 Public Disclosure Prohibition
|
||||
**(d)** Application Programming Interfaces (APIs) and backend services;
|
||||
|
||||
Do NOT disclose the vulnerability publicly or through any public channels, including but not limited to:
|
||||
**(e)** Infrastructure and hosting environments that support our services;
|
||||
|
||||
- Public GitHub issues
|
||||
- Social media platforms
|
||||
- Public forums or chat rooms
|
||||
- Blog posts or articles
|
||||
**(f)** Associated documentation, support systems, and auxiliary platforms.
|
||||
|
||||
### 3.3 Required Information
|
||||
### 1.3 Security Principles
|
||||
|
||||
When reporting a vulnerability, please provide:
|
||||
Our security programme is founded on the following principles:
|
||||
|
||||
- A detailed description of the vulnerability
|
||||
- Steps to reproduce the issue
|
||||
- Potential impact of the vulnerability
|
||||
- Any suggested mitigation or fix (if known)
|
||||
**(a)** **Transparency:** We maintain open communication about our security practices whilst protecting sensitive operational details;
|
||||
|
||||
## 4. Response Process
|
||||
**(b)** **Collaboration:** We work cooperatively with security researchers and the broader community to identify and address vulnerabilities;
|
||||
|
||||
### 4.1 Acknowledgment
|
||||
**(c)** **Continuous Improvement:** We regularly assess and enhance our security measures based on emerging threats and best practices;
|
||||
|
||||
We will acknowledge receipt of your vulnerability report within 3 business days.
|
||||
**(d)** **User Protection:** Our primary focus is protecting the confidentiality, integrity, and availability of user data and systems.
|
||||
|
||||
### 4.2 Assessment and Verification
|
||||
### 1.4 Legal Framework
|
||||
|
||||
Our security team will assess the reported vulnerability and may contact you for additional information if needed.
|
||||
This Policy is designed to operate within the framework of applicable laws and regulations, including but not limited to computer fraud and abuse laws, data protection regulations, and responsible disclosure principles recognised in the security research community.
|
||||
|
||||
### 4.3 Resolution Timeline
|
||||
## 2. VULNERABILITY REPORTING PROCEDURES
|
||||
|
||||
We strive to resolve confirmed vulnerabilities within 90 days of the initial report, depending on the complexity and severity of the issue.
|
||||
### 2.1 Reporting Channels
|
||||
|
||||
## 5. Disclosure Policy
|
||||
If you discover a security vulnerability within any of our systems or applications, please report it exclusively through our designated secure reporting channel:
|
||||
|
||||
### 5.1 Coordinated Disclosure
|
||||
**Primary Contact:** security@nhcarrigan.com
|
||||
|
||||
We practice coordinated disclosure. We will work with you to ensure that a fix is available before any public disclosure of the vulnerability.
|
||||
**Subject Line Format:** [SECURITY] Brief description of vulnerability
|
||||
|
||||
### 5.2 Public Acknowledgment
|
||||
**Alternative Contact:** For urgent matters requiring immediate attention, you may also contact our general support team with clear indication of the security nature of your report.
|
||||
|
||||
With your permission, we may publicly acknowledge your contribution in discovering and reporting the vulnerability after it has been resolved.
|
||||
### 2.2 Public Disclosure Prohibition
|
||||
|
||||
## 6. Legal Safe Harbor
|
||||
To protect our users and systems, you must not disclose security vulnerabilities publicly or through any public channels until we have had reasonable opportunity to investigate and address the issue. Prohibited disclosure methods include, but are not limited to:
|
||||
|
||||
### 6.1 Authorization
|
||||
**(a)** Public GitHub issues or pull requests;
|
||||
|
||||
We authorize security research and vulnerability disclosure activities, provided they are conducted in accordance with this policy and all applicable laws.
|
||||
**(b)** Social media platforms (Twitter, LinkedIn, Facebook, etc.);
|
||||
|
||||
### 6.2 Scope of Protection
|
||||
**(c)** Public forums, discussion boards, or community platforms;
|
||||
|
||||
We will not initiate legal action for accidental, good faith violations of this policy. This safe harbor applies only to activities that:
|
||||
**(d)** Blog posts, articles, or public presentations;
|
||||
|
||||
- Comply with all aspects of this Security Policy
|
||||
- Do not compromise or attempt to compromise the privacy or safety of our users, employees, or systems
|
||||
- Do not violate any applicable laws
|
||||
**(e)** Security mailing lists or vulnerability databases;
|
||||
|
||||
### 6.3 Limitations
|
||||
**(f)** Any other medium accessible to the general public.
|
||||
|
||||
This safe harbor does not apply to:
|
||||
### 2.3 Required Information for Vulnerability Reports
|
||||
|
||||
- Vulnerabilities or information obtained through means other than security research
|
||||
- Research conducted on third-party applications or services that integrate with our systems
|
||||
To facilitate effective investigation and resolution, please include the following information in your vulnerability report:
|
||||
|
||||
## 7. Bug Bounty Program
|
||||
**(a)** **Detailed Description:** A comprehensive explanation of the vulnerability, including the potential security impact and risk level;
|
||||
|
||||
We do not currently offer monetary rewards or "bug bounties" for reporting security vulnerabilities. Your contributions to our security are greatly appreciated, but are on a voluntary basis.
|
||||
**(b)** **Reproduction Steps:** Clear, step-by-step instructions that allow our team to reproduce the vulnerability consistently;
|
||||
|
||||
We will gladly thank you in our [Hall of Fame](/community/hall-of-fame)
|
||||
**(c)** **Technical Details:** Relevant technical information such as affected URLs, parameters, request/response examples, and system configurations;
|
||||
|
||||
## 8. Data Protection and Privacy
|
||||
**(d)** **Proof of Concept:** Where appropriate and safe, include demonstration code or screenshots that illustrate the vulnerability without causing harm;
|
||||
|
||||
### 8.1 Handling of Submitted Information
|
||||
**(e)** **Suggested Remediation:** If known, provide recommendations for addressing the vulnerability or mitigating the risk;
|
||||
|
||||
Any information you provide in your vulnerability report will be handled in accordance with our Privacy Policy and applicable data protection laws.
|
||||
**(f)** **Discovery Context:** Information about how the vulnerability was discovered and any tools or techniques used.
|
||||
|
||||
### 8.2 Confidentiality
|
||||
### 2.4 Information Handling and Confidentiality
|
||||
|
||||
We will treat all vulnerability reports as confidential and will not share the information beyond what is necessary to address the reported issue.
|
||||
All vulnerability reports and related communications will be handled with strict confidentiality in accordance with our privacy policy and applicable data protection laws. We commit to:
|
||||
|
||||
## 9. Proactive Measures
|
||||
**(a)** Limiting access to vulnerability information to authorised personnel only;
|
||||
|
||||
In order to maintain the best possible effort to protect your data and the safety of our applications, we implement the following proactive security measures.
|
||||
**(b)** Implementing appropriate security measures to protect report details;
|
||||
|
||||
### 9.1. Code Scanning
|
||||
**(c)** Not sharing vulnerability information with third parties without explicit consent, except as required by law;
|
||||
|
||||
Our projects are scanned for potential security risks and vulnerabilities using SonarQube. You can view the latest scan reports [on our dashboard](https://quality.nhcarrigan.link).
|
||||
**(d)** Maintaining detailed records of all communications and actions taken.
|
||||
|
||||
### 9.2. Local Scanning
|
||||
## 3. RESPONSE PROCEDURES AND TIMELINES
|
||||
|
||||
We also run a weekly scan on all of our projects using local tooling:
|
||||
### 3.1 Initial Acknowledgement
|
||||
|
||||
- Gitleaks (to detect leaked secrets and credentials)
|
||||
- Grype (secondary detection for vulnerabilities in dependencies)
|
||||
- Snyk (in-depth scanning of code and dependencies)
|
||||
- Syft (to generate Software Bill of Materials for third-party auditors to use)
|
||||
- Trivy (to detect vulnerabilities in dependencies)
|
||||
We will acknowledge receipt of your vulnerability report within the following timeframes:
|
||||
|
||||
The results of these scans are found at https://security.nhcarrigan.com
|
||||
**(a)** **Standard Reports:** Within three (3) business days of receipt;
|
||||
|
||||
## 10. Compliance with Laws and Regulations
|
||||
**(b)** **High-Priority Reports:** Within twenty-four (24) hours for reports indicating critical vulnerabilities or active exploitation;
|
||||
|
||||
All security research and vulnerability disclosure activities must comply with all applicable local, state, and federal laws, as well as any relevant international laws.
|
||||
**(c)** **Complex Reports:** Within five (5) business days for reports requiring initial technical assessment before acknowledgement.
|
||||
|
||||
## 11. Policy Updates
|
||||
### 3.2 Assessment and Verification Process
|
||||
|
||||
We reserve the right to update or modify this Security Policy at any time. Any changes will be effective immediately upon posting the updated policy on our website or repository.
|
||||
Following initial acknowledgement, our security team will:
|
||||
|
||||
## 12. Contact Information
|
||||
**(a)** Conduct a thorough technical assessment of the reported vulnerability;
|
||||
|
||||
For any questions regarding this Security Policy, please contact us at `security@nhcarrigan.com`.
|
||||
**(b)** Attempt to reproduce the issue using the provided steps and information;
|
||||
|
||||
By reporting a security vulnerability to us, you acknowledge that you have read, understood, and agree to this Security Policy.
|
||||
**(c)** Evaluate the potential impact and risk level of the vulnerability;
|
||||
|
||||
**(d)** Determine the scope of affected systems and users;
|
||||
|
||||
**(e)** Develop an appropriate response and remediation plan.
|
||||
|
||||
### 3.3 Communication and Updates
|
||||
|
||||
Throughout the investigation and resolution process, we will:
|
||||
|
||||
**(a)** Provide regular status updates on the progress of our investigation;
|
||||
|
||||
**(b)** Communicate any additional information required to complete our assessment;
|
||||
|
||||
**(c)** Notify you of our preliminary findings and proposed resolution timeline;
|
||||
|
||||
**(d)** Keep you informed of any changes to our remediation plans or timelines.
|
||||
|
||||
### 3.4 Resolution Timeline
|
||||
|
||||
We are committed to resolving confirmed vulnerabilities within the following timeframes:
|
||||
|
||||
**(a)** **Critical Vulnerabilities:** Within seven (7) days for issues posing immediate risk to user data or system integrity;
|
||||
|
||||
**(b)** **High-Risk Vulnerabilities:** Within thirty (30) days for significant security issues requiring comprehensive remediation;
|
||||
|
||||
**(c)** **Medium-Risk Vulnerabilities:** Within sixty (60) days for moderate security concerns;
|
||||
|
||||
**(d)** **Low-Risk Vulnerabilities:** Within ninety (90) days for minor security issues;
|
||||
|
||||
**(e)** **Complex Vulnerabilities:** Extended timelines may be necessary for issues requiring significant architectural changes or third-party coordination, with regular communication about progress.
|
||||
|
||||
## 4. COORDINATED DISCLOSURE POLICY
|
||||
|
||||
### 4.1 Coordinated Disclosure Principles
|
||||
|
||||
We practice coordinated disclosure to balance transparency with security. This approach ensures that:
|
||||
|
||||
**(a)** Vulnerabilities are thoroughly investigated and properly addressed before public disclosure;
|
||||
|
||||
**(b)** Users and affected parties have adequate time to apply security updates;
|
||||
|
||||
**(c)** The security research community benefits from shared knowledge whilst minimising potential harm.
|
||||
|
||||
### 4.2 Disclosure Timeline
|
||||
|
||||
Our standard coordinated disclosure timeline follows this process:
|
||||
|
||||
**(a)** **Initial Report:** Vulnerability reported through appropriate channels;
|
||||
|
||||
**(b)** **Assessment Period:** Investigation and verification (up to 30 days);
|
||||
|
||||
**(c)** **Remediation Period:** Development and deployment of fixes (30-90 days depending on complexity);
|
||||
|
||||
**(d)** **Public Disclosure:** Joint announcement of vulnerability and resolution (after fix deployment and reasonable notice period).
|
||||
|
||||
### 4.3 Public Acknowledgement
|
||||
|
||||
With your explicit consent, we may publicly acknowledge your contribution in discovering and reporting the vulnerability after it has been resolved. Such acknowledgement may include:
|
||||
|
||||
**(a)** Recognition in our security advisories or public statements;
|
||||
|
||||
**(b)** Listing in our security researchers hall of fame;
|
||||
|
||||
**(c)** Social media recognition and appreciation;
|
||||
|
||||
**(d)** References in relevant security documentation or case studies.
|
||||
|
||||
### 4.4 Researcher Discretion
|
||||
|
||||
You retain the right to:
|
||||
|
||||
**(a)** Request anonymity in all public communications and acknowledgements;
|
||||
|
||||
**(b)** Decline participation in joint disclosure activities;
|
||||
|
||||
**(c)** Publish your own disclosure after coordinated resolution, following responsible disclosure principles;
|
||||
|
||||
**(d)** Specify your preferred method and format for public acknowledgement.
|
||||
|
||||
## 5. LEGAL SAFE HARBOUR PROVISIONS
|
||||
|
||||
### 5.1 Authorisation for Security Research
|
||||
|
||||
We explicitly authorise security research and vulnerability disclosure activities conducted in accordance with this Policy and applicable laws. This authorisation is intended to encourage responsible security research whilst protecting both researchers and our organisation.
|
||||
|
||||
### 5.2 Scope of Safe Harbour Protection
|
||||
|
||||
Our safe harbour provisions apply to security research activities that:
|
||||
|
||||
**(a)** Comply with all requirements and restrictions outlined in this Policy;
|
||||
|
||||
**(b)** Are conducted in good faith for the purpose of improving security;
|
||||
|
||||
**(c)** Do not compromise the privacy, safety, or security of our users, employees, or systems;
|
||||
|
||||
**(d)** Do not violate applicable laws or regulations;
|
||||
|
||||
**(e)** Are conducted without commercial motivation or malicious intent.
|
||||
|
||||
### 5.3 Protected Activities
|
||||
|
||||
Under this safe harbour, we will not initiate legal action against researchers for activities including:
|
||||
|
||||
**(a)** Accessing systems or data necessary to identify and document security vulnerabilities;
|
||||
|
||||
**(b)** Circumventing security measures solely for the purpose of vulnerability research;
|
||||
|
||||
**(c)** Creating accounts or using services as reasonably necessary for security testing;
|
||||
|
||||
**(d)** Downloading or accessing data that is the direct result of a security vulnerability, provided such access is limited to demonstrating the issue.
|
||||
|
||||
### 5.4 Limitations and Exclusions
|
||||
|
||||
This safe harbour protection does not apply to:
|
||||
|
||||
**(a)** Activities that violate applicable laws, regardless of research intent;
|
||||
|
||||
**(b)** Research conducted on third-party systems or applications that integrate with our services;
|
||||
|
||||
**(c)** Activities that involve social engineering, phishing, or physical security testing;
|
||||
|
||||
**(d)** Accessing, modifying, or deleting data belonging to other users;
|
||||
|
||||
**(e)** Conducting denial-of-service attacks or similar disruptive activities;
|
||||
|
||||
**(f)** Activities conducted after we have requested cessation or identified security policy violations.
|
||||
|
||||
### 5.5 Compliance Requirements
|
||||
|
||||
To maintain safe harbour protection, researchers must:
|
||||
|
||||
**(a)** Report vulnerabilities through designated channels within a reasonable timeframe;
|
||||
|
||||
**(b)** Provide sufficient detail to allow us to reproduce and address the vulnerability;
|
||||
|
||||
**(c)** Avoid disclosing vulnerabilities publicly before coordinated resolution;
|
||||
|
||||
**(d)** Cooperate with our investigation and remediation efforts;
|
||||
|
||||
**(e)** Cease testing activities upon request from our security team.
|
||||
|
||||
## 6. BUG BOUNTY PROGRAMME
|
||||
|
||||
### 6.1 Current Programme Status
|
||||
|
||||
At present, we do not operate a formal monetary bug bounty programme. Our security efforts rely on the goodwill and community spirit of security researchers who contribute to improving our security posture on a voluntary basis.
|
||||
|
||||
### 6.2 Non-Monetary Recognition
|
||||
|
||||
While we do not currently offer financial rewards, we deeply appreciate security researchers' contributions and provide recognition through:
|
||||
|
||||
**(a)** **Hall of Fame Recognition:** Public acknowledgement in our security contributors hall of fame;
|
||||
|
||||
**(b)** **Community Recognition:** Acknowledgement in our community forums and social media channels;
|
||||
|
||||
**(c)** **Professional References:** With your consent, we may serve as a reference for your security research activities;
|
||||
|
||||
**(d)** **Networking Opportunities:** Introduction to other security professionals and organisations within our network.
|
||||
|
||||
### 6.3 Future Programme Development
|
||||
|
||||
We continuously evaluate the possibility of implementing a formal bug bounty programme. Factors influencing this decision include:
|
||||
|
||||
**(a)** The volume and quality of vulnerability reports received;
|
||||
|
||||
**(b)** Available resources for programme administration and reward distribution;
|
||||
|
||||
**(c)** Legal and regulatory considerations in relevant jurisdictions;
|
||||
|
||||
**(d)** Alignment with our organisational priorities and community values.
|
||||
|
||||
### 6.4 Alternative Contribution Opportunities
|
||||
|
||||
Security researchers interested in contributing to our security efforts may also consider:
|
||||
|
||||
**(a)** Contributing to our open-source security tools and documentation;
|
||||
|
||||
**(b)** Participating in community discussions about security best practices;
|
||||
|
||||
**(c)** Helping to educate other community members about security awareness;
|
||||
|
||||
**(d)** Collaborating on security-related content and educational materials.
|
||||
|
||||
## 7. DATA PROTECTION AND PRIVACY
|
||||
|
||||
### 7.1 Handling of Submitted Information
|
||||
|
||||
All information provided in vulnerability reports will be processed and protected in accordance with our Privacy Policy and applicable data protection laws. This includes:
|
||||
|
||||
**(a)** Implementing appropriate technical and organisational measures to protect report data;
|
||||
|
||||
**(b)** Limiting access to vulnerability information to authorised personnel only;
|
||||
|
||||
**(c)** Using vulnerability information solely for the purpose of investigation and remediation;
|
||||
|
||||
**(d)** Maintaining confidentiality of researcher information and contact details.
|
||||
|
||||
### 7.2 Data Retention Policies
|
||||
|
||||
We retain vulnerability reports and related communications:
|
||||
|
||||
**(a)** **Active Cases:** For the duration of the investigation and remediation process;
|
||||
|
||||
**(b)** **Resolved Cases:** For up to three (3) years following resolution for audit and reference purposes;
|
||||
|
||||
**(c)** **Legal Requirements:** As required by applicable laws and regulations;
|
||||
|
||||
**(d)** **Historical Analysis:** Anonymised trend data may be retained indefinitely for security improvement purposes.
|
||||
|
||||
### 7.3 Confidentiality Commitments
|
||||
|
||||
We commit to treating all vulnerability reports as confidential information and will not:
|
||||
|
||||
**(a)** Share report details with unauthorised third parties;
|
||||
|
||||
**(b)** Use vulnerability information for purposes other than remediation and security improvement;
|
||||
|
||||
**(c)** Disclose researcher identity or contact information without explicit consent;
|
||||
|
||||
**(d)** Publicly discuss specific vulnerability details before coordinated disclosure.
|
||||
|
||||
### 7.4 Researcher Privacy Rights
|
||||
|
||||
Security researchers maintain standard privacy rights regarding their personal information, including:
|
||||
|
||||
**(a)** The right to request access to personal data we hold about them;
|
||||
|
||||
**(b)** The right to request correction of inaccurate personal information;
|
||||
|
||||
**(c)** The right to request deletion of personal data in certain circumstances;
|
||||
|
||||
**(d)** The right to object to or restrict processing of personal data where legally applicable.
|
||||
|
||||
## 8. PROACTIVE SECURITY MEASURES
|
||||
|
||||
### 8.1 Security Monitoring and Assessment
|
||||
|
||||
To maintain the highest possible security standards and protect user data, we implement comprehensive proactive security measures across all our systems and applications.
|
||||
|
||||
### 8.2 Automated Security Scanning
|
||||
|
||||
Our security programme includes regular automated scanning and assessment using industry-standard tools:
|
||||
|
||||
**(a)** **Static Code Analysis:** Regular scanning of source code for potential security vulnerabilities using SonarQube and similar tools;
|
||||
|
||||
**(b)** **Dynamic Application Security Testing:** Ongoing testing of running applications to identify runtime vulnerabilities;
|
||||
|
||||
**(c)** **Infrastructure Scanning:** Regular assessment of our hosting infrastructure and network security;
|
||||
|
||||
**(d)** **Dependency Scanning:** Continuous monitoring of third-party libraries and components for known vulnerabilities.
|
||||
|
||||
### 8.3 Security Tool Integration
|
||||
|
||||
We utilise a comprehensive suite of security tools integrated into our development and deployment processes:
|
||||
|
||||
**(a)** **Gitleaks:** Automated detection of secrets, credentials, and sensitive information in code repositories;
|
||||
|
||||
**(b)** **Grype:** Secondary vulnerability scanning for dependencies and container images;
|
||||
|
||||
**(c)** **Snyk:** In-depth analysis of code and dependencies for security vulnerabilities and license compliance;
|
||||
|
||||
**(d)** **Syft:** Generation of Software Bills of Materials (SBOMs) for third-party security audits;
|
||||
|
||||
**(e)** **Trivy:** Comprehensive vulnerability scanning for containers, filesystems, and cloud configurations.
|
||||
|
||||
### 8.4 Public Security Reporting
|
||||
|
||||
We maintain transparency about our security posture through publicly accessible security reports and dashboards:
|
||||
|
||||
**(a)** **Quality Dashboard:** Real-time security and quality metrics available at https://quality.nhcarrigan.link;
|
||||
|
||||
**(b)** **Security Reports:** Comprehensive security scan results published at https://security.nhcarrigan.com;
|
||||
|
||||
**(c)** **Regular Updates:** Weekly scanning cycles ensure up-to-date security information;
|
||||
|
||||
**(d)** **Trend Analysis:** Historical data tracking to identify and address security trends over time.
|
||||
|
||||
### 8.5 Security Development Lifecycle
|
||||
|
||||
Our development processes incorporate security at every stage:
|
||||
|
||||
**(a)** **Secure Coding Standards:** All developers follow established secure coding guidelines and best practices;
|
||||
|
||||
**(b)** **Security Code Reviews:** Mandatory security-focused code reviews for all changes and new features;
|
||||
|
||||
**(c)** **Automated Testing:** Security tests integrated into continuous integration and deployment pipelines;
|
||||
|
||||
**(d)** **Regular Training:** Ongoing security awareness and training for all development team members.
|
||||
|
||||
## 9. COMPLIANCE AND REGULATORY CONSIDERATIONS
|
||||
|
||||
### 9.1 Legal Compliance Requirements
|
||||
|
||||
All security research and vulnerability disclosure activities must comply with applicable laws and regulations, including but not limited to:
|
||||
|
||||
**(a)** Computer Fraud and Abuse Act (CFAA) and similar legislation in various jurisdictions;
|
||||
|
||||
**(b)** Data protection and privacy laws (GDPR, CCPA, etc.);
|
||||
|
||||
**(c)** Export control regulations affecting security tools and techniques;
|
||||
|
||||
**(d)** Industry-specific regulations applicable to our services or user base.
|
||||
|
||||
### 9.2 International Considerations
|
||||
|
||||
Given the global nature of our services and user base, researchers should be aware that:
|
||||
|
||||
**(a)** Different jurisdictions may have varying legal frameworks for security research;
|
||||
|
||||
**(b)** Cross-border data transfer and access may be subject to additional regulations;
|
||||
|
||||
**(c)** Some security research techniques may be legal in one jurisdiction but prohibited in another;
|
||||
|
||||
**(d)** Researchers are responsible for ensuring their activities comply with laws in their jurisdiction.
|
||||
|
||||
### 9.3 Ethical Guidelines
|
||||
|
||||
Beyond legal compliance, we expect all security research to adhere to widely recognised ethical guidelines:
|
||||
|
||||
**(a)** **Minimise Harm:** Avoid actions that could compromise user privacy, data integrity, or system availability;
|
||||
|
||||
**(b)** **Respect Boundaries:** Cease testing when requested or when encountering systems outside our scope;
|
||||
|
||||
**(c)** **Professional Conduct:** Maintain professional standards in all communications and interactions;
|
||||
|
||||
**(d)** **Community Benefit:** Focus on activities that benefit the broader security community and user protection.
|
||||
|
||||
### 9.4 Reporting Regulatory Concerns
|
||||
|
||||
If vulnerability research reveals potential regulatory compliance issues or legal violations:
|
||||
|
||||
**(a)** Include such concerns in your initial vulnerability report;
|
||||
|
||||
**(b)** We will assess the regulatory implications as part of our investigation;
|
||||
|
||||
**(c)** We may need to report certain types of vulnerabilities to relevant regulatory authorities;
|
||||
|
||||
**(d)** Researchers will be kept informed of any regulatory reporting requirements that may affect disclosure timelines.
|
||||
|
||||
## 10. CONTACT INFORMATION AND SUPPORT
|
||||
|
||||
### 10.1 Primary Security Contact
|
||||
|
||||
For all security-related matters, including vulnerability reports, questions about this Policy, and general security inquiries:
|
||||
|
||||
**Email:** security@nhcarrigan.com
|
||||
|
||||
**Response Time:** We aim to respond to all security inquiries within 24 hours during business days
|
||||
|
||||
**Emergency Contact:** For critical security issues requiring immediate attention, mark your email with [URGENT] in the subject line
|
||||
|
||||
### 10.2 Alternative Contact Methods
|
||||
|
||||
If you are unable to use our primary email contact:
|
||||
|
||||
**General Support:** contact@nhcarrigan.com (clearly mark security-related messages)
|
||||
|
||||
**Community Forum:** https://forum.nhcarrigan.com (for general security discussions only, not vulnerability reports)
|
||||
|
||||
**Documentation:** This Policy and related security documentation is maintained at our official documentation site
|
||||
|
||||
### 10.3 Response Commitments and Service Levels
|
||||
|
||||
We commit to maintaining the following response standards:
|
||||
|
||||
**(a)** **Initial Acknowledgement:** All security reports acknowledged within 24-72 hours;
|
||||
|
||||
**(b)** **Status Updates:** Regular progress updates provided at least weekly for active investigations;
|
||||
|
||||
**(c)** **Technical Clarification:** Response to technical questions within 2-3 business days;
|
||||
|
||||
**(d)** **Escalation Path:** Clear escalation procedures for urgent matters or communication issues.
|
||||
|
||||
### 10.4 Communication Preferences and Requirements
|
||||
|
||||
To ensure effective communication:
|
||||
|
||||
**(a)** **Language:** All communications should be in English to ensure proper understanding and response;
|
||||
|
||||
**(b)** **Technical Detail:** Provide sufficient technical detail to enable reproduction and assessment;
|
||||
|
||||
**(c)** **Contact Information:** Include reliable contact information for follow-up questions;
|
||||
|
||||
**(d)** **Time Zone Considerations:** Our primary response times are based on Pacific Standard Time business hours.
|
||||
|
||||
### 10.5 Support Resources
|
||||
|
||||
Additional resources available to security researchers:
|
||||
|
||||
**(a)** **Documentation:** Comprehensive security policy documentation and guidelines;
|
||||
|
||||
**(b)** **Community Support:** Access to our community forums for general security discussions;
|
||||
|
||||
**(c)** **Educational Resources:** Links to security research best practices and legal guidelines;
|
||||
|
||||
**(d)** **Feedback Mechanisms:** Opportunities to provide feedback on our security policies and procedures.
|
||||
|
||||
## 11. POLICY UPDATES AND MAINTENANCE
|
||||
|
||||
### 11.1 Regular Review and Updates
|
||||
|
||||
This Security Policy is reviewed and updated regularly to ensure:
|
||||
|
||||
**(a)** **Legal Compliance:** Alignment with current laws and regulations;
|
||||
|
||||
**(b)** **Best Practices:** Incorporation of industry best practices and standards;
|
||||
|
||||
**(c)** **Community Feedback:** Response to input from security researchers and community members;
|
||||
|
||||
**(d)** **Operational Experience:** Refinement based on our experience with vulnerability reports and security incidents.
|
||||
|
||||
### 11.2 Change Notification Process
|
||||
|
||||
Changes to this Policy will be communicated through:
|
||||
|
||||
**(a)** **Direct Notification:** Email notification to researchers who have previously submitted reports;
|
||||
|
||||
**(b)** **Public Announcement:** Updates posted on our website and community forums;
|
||||
|
||||
**(c)** **Documentation Updates:** Version-controlled updates to our official documentation;
|
||||
|
||||
**(d)** **Industry Channels:** Notification through relevant security community channels where appropriate.
|
||||
|
||||
### 11.3 Effective Date and Implementation
|
||||
|
||||
Policy updates will:
|
||||
|
||||
**(a)** Include clear effective dates for all changes;
|
||||
|
||||
**(b)** Provide reasonable notice periods for significant changes;
|
||||
|
||||
**(c)** Maintain backward compatibility for ongoing vulnerability reports;
|
||||
|
||||
**(d)** Include transition procedures for any changes affecting active security research.
|
||||
|
||||
### 11.4 Feedback and Continuous Improvement
|
||||
|
||||
We welcome feedback on this Policy from:
|
||||
|
||||
**(a)** Security researchers who have participated in our vulnerability disclosure process;
|
||||
|
||||
**(b)** Legal and compliance professionals familiar with relevant regulations;
|
||||
|
||||
**(c)** Industry peers and security community members;
|
||||
|
||||
**(d)** Internal team members involved in security operations and incident response.
|
||||
|
||||
## 12. ACKNOWLEDGEMENTS AND RECOGNITION
|
||||
|
||||
### 12.1 Community Appreciation
|
||||
|
||||
We extend our sincere gratitude to the global security research community for their valuable contributions to improving the security of our systems and protecting our users. The collaborative approach to security research benefits everyone and represents the best of community-driven innovation.
|
||||
|
||||
### 12.2 Commitment to Excellence
|
||||
|
||||
This Security Policy represents our ongoing commitment to:
|
||||
|
||||
**(a)** **Transparency:** Maintaining open and honest communication about our security practices;
|
||||
|
||||
**(b)** **Collaboration:** Working cooperatively with researchers to address security concerns;
|
||||
|
||||
**(c)** **Continuous Improvement:** Regularly enhancing our security measures and response procedures;
|
||||
|
||||
**(d)** **User Protection:** Prioritising the security and privacy of our users above all other considerations.
|
||||
|
||||
### 12.3 Future Development
|
||||
|
||||
We are committed to the ongoing development and improvement of our security programme, including:
|
||||
|
||||
**(a)** Regular assessment of our security policies and procedures;
|
||||
|
||||
**(b)** Investment in security tools and technologies;
|
||||
|
||||
**(c)** Training and professional development for our security team;
|
||||
|
||||
**(d)** Engagement with the broader security community and industry initiatives.
|
||||
|
||||
**Last Updated:** 15 September 2025
|
||||
|
||||
**Effective Date:** 15 September 2025
|
||||
|
||||
**Policy Version:** 2.0
|
||||
|
||||
---
|
||||
|
||||
*By reporting a security vulnerability to us, you acknowledge that you have read, understood, and agree to comply with this Security Policy. This Policy is designed to promote responsible security research whilst protecting the interests of our users, our organisation, and the broader community. For questions about this Policy or to report security vulnerabilities, please contact us at security@nhcarrigan.com.*
|
||||
|
||||
@@ -0,0 +1,505 @@
|
||||
---
|
||||
title: Service Level Agreement and Warranty Disclaimer
|
||||
---
|
||||
|
||||
**DEFINING SERVICE EXPECTATIONS WHILST PROTECTING AGAINST UNFOUNDED WARRANTY CLAIMS**
|
||||
|
||||
## 1. INTRODUCTION AND SCOPE
|
||||
|
||||
### 1.1 Purpose and Application
|
||||
|
||||
This Service Level Agreement and Warranty Disclaimer ("SLA") establishes the terms and conditions governing the availability, performance, and reliability of services provided by nhcarrigan ("we," "us," "our," or "the Company"). This SLA applies to all users of our services, applications, and platforms (collectively, the "Services").
|
||||
|
||||
### 1.2 Integration with Other Policies
|
||||
|
||||
This SLA supplements and operates in conjunction with:
|
||||
|
||||
**(a)** Our Terms of Service, which govern the general terms of service usage;
|
||||
|
||||
**(b)** Our Privacy Policy, which governs data collection and processing;
|
||||
|
||||
**(c)** Our Acceptable Use Policy, which defines permissible usage patterns;
|
||||
|
||||
**(d)** All other applicable policies and agreements.
|
||||
|
||||
### 1.3 Scope of Services Covered
|
||||
|
||||
This SLA applies to:
|
||||
|
||||
**(a)** All websites and web applications operated by nhcarrigan;
|
||||
|
||||
**(b)** Application Programming Interfaces (APIs) and related services;
|
||||
|
||||
**(c)** Community platforms and interactive services;
|
||||
|
||||
**(d)** Support services and documentation platforms;
|
||||
|
||||
**(e)** Any other services explicitly designated as covered by this SLA.
|
||||
|
||||
### 1.4 Definitions
|
||||
|
||||
For the purposes of this SLA:
|
||||
|
||||
**(a)** "Availability" means the percentage of time Services are accessible and functional;
|
||||
|
||||
**(b)** "Downtime" means periods when Services are not accessible or functional due to our systems;
|
||||
|
||||
**(c)** "Maintenance Window" means scheduled periods for system maintenance or updates;
|
||||
|
||||
**(d)** "Service Credit" means any remedial measure provided for SLA violations;
|
||||
|
||||
**(e)** "Uptime" means the percentage of time Services are operational and accessible.
|
||||
|
||||
## 2. SERVICE AVAILABILITY COMMITMENTS
|
||||
|
||||
### 2.1 General Availability Targets
|
||||
|
||||
We endeavour to maintain the following availability targets for our Services:
|
||||
|
||||
**(a)** **Primary Services**: 99.5% uptime on a monthly basis, excluding scheduled maintenance;
|
||||
|
||||
**(b)** **API Services**: 99.0% uptime on a monthly basis, excluding scheduled maintenance;
|
||||
|
||||
**(c)** **Community Platforms**: 99.0% uptime on a monthly basis, excluding scheduled maintenance;
|
||||
|
||||
**(d)** **Documentation Services**: 98.0% uptime on a monthly basis, excluding scheduled maintenance.
|
||||
|
||||
### 2.2 Availability Calculation Methodology
|
||||
|
||||
Availability percentages are calculated as follows:
|
||||
|
||||
**(a)** **Measurement Period**: Monthly calendar periods from 00:00 UTC on the first day to 23:59 UTC on the last day;
|
||||
|
||||
**(b)** **Exclusions**: Scheduled maintenance windows, force majeure events, and user-caused outages;
|
||||
|
||||
**(c)** **Monitoring**: Continuous automated monitoring from multiple geographic locations;
|
||||
|
||||
**(d)** **Verification**: All calculations subject to verification through our monitoring systems.
|
||||
|
||||
### 2.3 Scheduled Maintenance
|
||||
|
||||
We reserve the right to perform scheduled maintenance with the following provisions:
|
||||
|
||||
**(a)** **Notice Period**: Minimum 24 hours advance notice for non-emergency maintenance;
|
||||
|
||||
**(b)** **Maintenance Windows**: Typically scheduled during low-usage periods;
|
||||
|
||||
**(c)** **Duration Limits**: Routine maintenance limited to 4 hours per month;
|
||||
|
||||
**(d)** **Emergency Maintenance**: May be performed without advance notice when necessary for security or stability.
|
||||
|
||||
### 2.4 Service Availability Exclusions
|
||||
|
||||
The following circumstances are excluded from availability calculations:
|
||||
|
||||
**(a)** **Scheduled Maintenance**: Planned system updates and maintenance activities;
|
||||
|
||||
**(b)** **Force Majeure**: Natural disasters, acts of terrorism, government actions, or other events beyond our control;
|
||||
|
||||
**(c)** **Third-Party Failures**: Outages caused by internet service providers, cloud platforms, or other external dependencies;
|
||||
|
||||
**(d)** **User-Caused Issues**: Problems resulting from user actions, misconfigurations, or violations of our usage policies;
|
||||
|
||||
**(e)** **Denial of Service Attacks**: Service disruptions caused by malicious attacks or abuse;
|
||||
|
||||
**(f)** **Beta or Experimental Services**: Services explicitly designated as beta, experimental, or pre-release.
|
||||
|
||||
## 3. PERFORMANCE STANDARDS
|
||||
|
||||
### 3.1 Response Time Targets
|
||||
|
||||
We endeavour to maintain the following response time targets:
|
||||
|
||||
**(a)** **Web Application Response**: Average page load time under 3 seconds for standard pages;
|
||||
|
||||
**(b)** **API Response Time**: Average API response time under 500 milliseconds for standard requests;
|
||||
|
||||
**(c)** **Database Query Performance**: Average database response time under 100 milliseconds;
|
||||
|
||||
**(d)** **Static Content Delivery**: Average content delivery time under 1 second globally.
|
||||
|
||||
### 3.2 Performance Measurement
|
||||
|
||||
Performance metrics are measured using:
|
||||
|
||||
**(a)** **Automated Monitoring**: Continuous performance monitoring from multiple locations;
|
||||
|
||||
**(b)** **Real User Monitoring**: Analysis of actual user experience data;
|
||||
|
||||
**(c)** **Synthetic Testing**: Regular automated testing of key user journeys;
|
||||
|
||||
**(d)** **Third-Party Verification**: Independent monitoring services where applicable.
|
||||
|
||||
### 3.3 Performance Factors
|
||||
|
||||
Performance may be affected by:
|
||||
|
||||
**(a)** **Geographic Location**: Distance from our servers and content delivery network;
|
||||
|
||||
**(b)** **Network Conditions**: Internet connectivity quality and bandwidth;
|
||||
|
||||
**(c)** **Device Capabilities**: Processing power and memory of user devices;
|
||||
|
||||
**(d)** **Usage Patterns**: High traffic volumes and concurrent user loads;
|
||||
|
||||
**(e)** **Content Complexity**: Size and complexity of requested resources.
|
||||
|
||||
## 4. WARRANTY DISCLAIMERS
|
||||
|
||||
### 4.1 Reference to Comprehensive Warranty Disclaimers
|
||||
|
||||
**IMPORTANT: Comprehensive warranty disclaimers, including all general, software, third-party service, and data warranties, are set forth in our Limitation of Liability and Indemnification Policy, which is incorporated herein by reference.**
|
||||
|
||||
### 4.2 SLA-Specific Disclaimers
|
||||
|
||||
In addition to the comprehensive disclaimers in our Liability Policy, we specifically disclaim any warranties regarding:
|
||||
|
||||
**(a)** **Specific Availability Levels**: While we endeavour to meet stated availability targets, we do not warrant specific uptime percentages;
|
||||
|
||||
**(b)** **Performance Metrics**: Target performance levels are goals, not guaranteed service levels;
|
||||
|
||||
**(c)** **Service Continuity**: We do not warrant uninterrupted service or elimination of all outages;
|
||||
|
||||
**(d)** **Remedy Completeness**: Service credits and remedies are your sole remedies for service level shortfalls.
|
||||
|
||||
## 5. SERVICE LIMITATIONS AND RESTRICTIONS
|
||||
|
||||
### 5.1 Usage Limitations
|
||||
|
||||
Our Services are subject to the following limitations:
|
||||
|
||||
**(a)** **Rate Limits**: API and automated access may be subject to rate limiting;
|
||||
|
||||
**(b)** **Resource Limits**: Storage, bandwidth, and processing resources may be limited;
|
||||
|
||||
**(c)** **Concurrent User Limits**: Some services may limit concurrent user connections;
|
||||
|
||||
**(d)** **Feature Restrictions**: Certain features may be limited or restricted based on usage patterns.
|
||||
|
||||
### 5.2 Geographic and Legal Restrictions
|
||||
|
||||
Services may be subject to:
|
||||
|
||||
**(a)** **Geographic Limitations**: Some services may not be available in all jurisdictions;
|
||||
|
||||
**(b)** **Export Control Compliance**: Restrictions based on export control and sanctions laws;
|
||||
|
||||
**(c)** **Local Law Compliance**: Limitations required by applicable local laws and regulations;
|
||||
|
||||
**(d)** **Content Restrictions**: Geographic restrictions on certain content or features.
|
||||
|
||||
### 5.3 Technical Limitations
|
||||
|
||||
Users should be aware of the following technical limitations:
|
||||
|
||||
**(a)** **Platform Dependencies**: Services may depend on third-party platforms and services;
|
||||
|
||||
**(b)** **Browser Compatibility**: Web services may not function identically across all browsers;
|
||||
|
||||
**(c)** **Device Limitations**: Mobile applications may have varying functionality across devices;
|
||||
|
||||
**(d)** **Network Requirements**: Services may require stable internet connectivity for full functionality.
|
||||
|
||||
## 6. SERVICE LEVEL REMEDIES AND CREDITS
|
||||
|
||||
### 6.1 Service Level Breach Determination
|
||||
|
||||
A Service Level breach occurs when:
|
||||
|
||||
**(a)** Monthly availability falls below the stated targets in Section 2.1;
|
||||
|
||||
**(b)** The shortfall is verified through our monitoring systems;
|
||||
|
||||
**(c)** The user has properly reported the issue through appropriate channels;
|
||||
|
||||
**(d)** The breach is not due to excluded circumstances listed in Section 2.4.
|
||||
|
||||
### 6.2 Available Remedies
|
||||
|
||||
**IMPORTANT: SERVICE CREDITS ARE YOUR SOLE AND EXCLUSIVE REMEDY FOR SERVICE LEVEL BREACHES.**
|
||||
|
||||
Available remedies for verified Service Level breaches include:
|
||||
|
||||
**(a)** **Service Extension**: Extension of service periods to compensate for downtime;
|
||||
|
||||
**(b)** **Service Credits**: Credits applicable to future services (where paid services are involved);
|
||||
|
||||
**(c)** **Priority Support**: Enhanced support priority for affected users;
|
||||
|
||||
**(d)** **Alternative Solutions**: Reasonable alternative arrangements where technically feasible.
|
||||
|
||||
### 6.3 Remedy Limitations
|
||||
|
||||
Service Level remedies are subject to the following limitations:
|
||||
|
||||
**(a)** **Maximum Credits**: Total credits shall not exceed 100% of monthly service fees (where applicable);
|
||||
|
||||
**(b)** **Request Timeline**: Remedy requests must be submitted within 30 days of the alleged breach;
|
||||
|
||||
**(c)** **Verification Required**: All remedy requests subject to verification through our monitoring data;
|
||||
|
||||
**(d)** **Good Faith Usage**: Remedies available only to users in good standing with all applicable policies.
|
||||
|
||||
### 6.4 Remedy Request Process
|
||||
|
||||
To request Service Level remedies:
|
||||
|
||||
**(a)** **Submission**: Submit requests to support@nhcarrigan.com with "SLA Remedy Request" in the subject line;
|
||||
|
||||
**(b)** **Documentation**: Provide detailed information about the service disruption experienced;
|
||||
|
||||
**(c)** **Verification**: Allow reasonable time for our team to verify the claim against monitoring data;
|
||||
|
||||
**(d)** **Resolution**: We will respond within 10 business days with our determination and any applicable remedies.
|
||||
|
||||
## 7. FORCE MAJEURE AND EXTERNAL FACTORS
|
||||
|
||||
### 7.1 Force Majeure Events
|
||||
|
||||
We shall not be liable for service disruptions caused by force majeure events including:
|
||||
|
||||
**(a)** **Natural Disasters**: Earthquakes, floods, hurricanes, volcanic eruptions, or other natural catastrophes;
|
||||
|
||||
**(b)** **Human Actions**: Wars, terrorism, civil unrest, labour strikes, or government actions;
|
||||
|
||||
**(c)** **Infrastructure Failures**: Power grid failures, internet backbone disruptions, or telecommunications outages;
|
||||
|
||||
**(d)** **Pandemic Events**: Public health emergencies that affect our operations or service delivery.
|
||||
|
||||
### 7.2 Third-Party Dependencies
|
||||
|
||||
Our Services rely on various third-party providers, and we cannot guarantee:
|
||||
|
||||
**(a)** **Cloud Platform Reliability**: Availability of underlying cloud infrastructure providers;
|
||||
|
||||
**(b)** **Internet Service Continuity**: Stability of internet service providers and network infrastructure;
|
||||
|
||||
**(c)** **Payment Processor Availability**: Functionality of payment processing services;
|
||||
|
||||
**(d)** **Content Delivery Networks**: Performance of content distribution services.
|
||||
|
||||
### 7.3 Cyber Security Threats
|
||||
|
||||
Service availability may be affected by:
|
||||
|
||||
**(a)** **Denial of Service Attacks**: Malicious attempts to disrupt service availability;
|
||||
|
||||
**(b)** **Security Incidents**: Necessary service restrictions to address security vulnerabilities;
|
||||
|
||||
**(c)** **Malicious Traffic**: Need to block or filter harmful or abusive traffic;
|
||||
|
||||
**(d)** **Threat Response**: Implementation of security measures that may affect service performance.
|
||||
|
||||
## 8. MONITORING AND REPORTING
|
||||
|
||||
### 8.1 Service Monitoring
|
||||
|
||||
We maintain comprehensive service monitoring including:
|
||||
|
||||
**(a)** **Automated Monitoring**: 24/7 automated monitoring of service availability and performance;
|
||||
|
||||
**(b)** **Geographic Distribution**: Monitoring from multiple global locations to assess user experience;
|
||||
|
||||
**(c)** **Real-Time Alerts**: Immediate notification systems for service disruptions;
|
||||
|
||||
**(d)** **Performance Metrics**: Continuous measurement of response times and system performance.
|
||||
|
||||
### 8.2 Status Communication
|
||||
|
||||
Service status information is communicated through:
|
||||
|
||||
**(a)** **Status Page**: Real-time service status available at designated status page;
|
||||
|
||||
**(b)** **Incident Updates**: Regular updates during service disruptions or maintenance;
|
||||
|
||||
**(c)** **Social Media**: Status updates through official social media channels;
|
||||
|
||||
**(d)** **Email Notifications**: Direct notifications to users for significant service impacts (where contact information is available).
|
||||
|
||||
### 8.3 Transparency Reports
|
||||
|
||||
We publish regular transparency reports including:
|
||||
|
||||
**(a)** **Monthly Availability Reports**: Summary of availability statistics for each service category;
|
||||
|
||||
**(b)** **Performance Summaries**: Analysis of performance trends and improvements;
|
||||
|
||||
**(c)** **Incident Reviews**: Post-incident analysis and improvement measures implemented;
|
||||
|
||||
**(d)** **Infrastructure Updates**: Information about infrastructure improvements and expansions.
|
||||
|
||||
## 9. USER RESPONSIBILITIES AND OBLIGATIONS
|
||||
|
||||
### 9.1 Proper Usage Requirements
|
||||
|
||||
To ensure optimal service performance, users must:
|
||||
|
||||
**(a)** **Comply with Usage Policies**: Adhere to all applicable usage policies and terms of service;
|
||||
|
||||
**(b)** **Use Services Appropriately**: Avoid activities that may degrade service performance for other users;
|
||||
|
||||
**(c)** **Report Issues Promptly**: Notify us of service issues through appropriate channels;
|
||||
|
||||
**(d)** **Maintain Account Security**: Implement appropriate security measures for account access.
|
||||
|
||||
### 9.2 System Requirements
|
||||
|
||||
Users are responsible for:
|
||||
|
||||
**(a)** **Compatible Systems**: Ensuring their systems meet minimum requirements for service access;
|
||||
|
||||
**(b)** **Network Connectivity**: Maintaining adequate internet connectivity for service usage;
|
||||
|
||||
**(c)** **Software Updates**: Keeping browsers and applications updated for optimal compatibility;
|
||||
|
||||
**(d)** **Security Software**: Managing security software that may interfere with service access.
|
||||
|
||||
### 9.3 Data Management
|
||||
|
||||
Users must:
|
||||
|
||||
**(a)** **Backup Important Data**: Maintain independent backups of critical data;
|
||||
|
||||
**(b)** **Verify Data Accuracy**: Confirm accuracy of data before relying on it for important decisions;
|
||||
|
||||
**(c)** **Understand Data Limitations**: Recognise the limitations of automated data processing;
|
||||
|
||||
**(d)** **Report Data Issues**: Promptly report suspected data corruption or inconsistencies.
|
||||
|
||||
## 10. LIMITATION OF LIABILITY
|
||||
|
||||
### 10.1 Reference to Comprehensive Liability Framework
|
||||
|
||||
**IMPORTANT: Comprehensive liability limitations, damage exclusions, maximum liability caps, and all related legal protections are set forth in our Limitation of Liability and Indemnification Policy, which is incorporated herein by reference and governs all liability matters related to service level performance.**
|
||||
|
||||
### 10.2 SLA-Specific Liability Clarifications
|
||||
|
||||
In addition to the comprehensive protections in our Liability Policy:
|
||||
|
||||
**(a)** **Service Credits as Sole Remedy**: Service credits and remedies specified in this SLA are your sole and exclusive remedies for service level breaches;
|
||||
|
||||
**(b)** **No Additional Damages**: No additional damages are available beyond the specific remedies outlined in Section 6 of this SLA;
|
||||
|
||||
**(c)** **Remedy Limitations**: All SLA remedies are subject to the overall liability limitations in our Liability Policy.
|
||||
|
||||
## 11. INDEMNIFICATION
|
||||
|
||||
### 11.1 Reference to Comprehensive Indemnification Framework
|
||||
|
||||
**IMPORTANT: All indemnification obligations, procedures, scope, and related provisions are set forth in our Limitation of Liability and Indemnification Policy, which is incorporated herein by reference and governs all indemnification matters related to SLA compliance and service usage.**
|
||||
|
||||
## 12. DISPUTE RESOLUTION
|
||||
|
||||
### 12.1 Initial Resolution Procedures
|
||||
|
||||
Before initiating formal legal proceedings, parties agree to attempt resolution through:
|
||||
|
||||
**(a)** **Direct Communication**: Good faith discussions between the parties for at least 30 days;
|
||||
|
||||
**(b)** **Technical Review**: Joint technical review of any service-related disputes;
|
||||
|
||||
**(c)** **Escalation Process**: Progressive escalation through appropriate management levels;
|
||||
|
||||
**(d)** **Documentation**: Maintenance of detailed records of resolution attempts.
|
||||
|
||||
### 12.2 Governing Law and Jurisdiction
|
||||
|
||||
This SLA shall be governed by:
|
||||
|
||||
**(a)** **Applicable Law**: The laws of Washington State, United States, without regard to conflict of law principles;
|
||||
|
||||
**(b)** **Jurisdiction**: Exclusive jurisdiction of federal or state courts located in Washington State;
|
||||
|
||||
**(c)** **Consent**: You consent to the jurisdiction of such courts and waive any objection to venue;
|
||||
|
||||
**(d)** **Enforcement**: This SLA may be enforced in any court of competent jurisdiction.
|
||||
|
||||
## 13. MODIFICATIONS AND UPDATES
|
||||
|
||||
### 13.1 Right to Modify
|
||||
|
||||
We reserve the right to modify this SLA at any time to:
|
||||
|
||||
**(a)** **Reflect Service Changes**: Update terms to reflect changes in service offerings or technology;
|
||||
|
||||
**(b)** **Legal Compliance**: Ensure compliance with applicable laws and regulations;
|
||||
|
||||
**(c)** **Business Requirements**: Adapt to changing business needs and operational requirements;
|
||||
|
||||
**(d)** **User Feedback**: Incorporate feedback and lessons learned from service operations.
|
||||
|
||||
### 13.2 Modification Notice
|
||||
|
||||
Material changes to this SLA will be communicated through:
|
||||
|
||||
**(a)** **Website Posting**: Prominent notice on our primary website;
|
||||
|
||||
**(b)** **Email Notification**: Direct notification to registered users where contact information is available;
|
||||
|
||||
**(c)** **Service Notifications**: In-application notifications where technically feasible;
|
||||
|
||||
**(d)** **Advance Notice**: Minimum 30 days advance notice for material changes affecting service levels.
|
||||
|
||||
### 13.3 Acceptance of Modifications
|
||||
|
||||
**(a)** **Continued Use**: Continued use of Services after modification notice constitutes acceptance;
|
||||
|
||||
**(b)** **Opt-Out Right**: You may discontinue service usage if you disagree with modifications;
|
||||
|
||||
**(c)** **Effective Date**: Modifications become effective on the date specified in the notice;
|
||||
|
||||
**(d)** **Version Control**: Current and historical versions available for reference.
|
||||
|
||||
## 14. CONTACT INFORMATION AND SUPPORT
|
||||
|
||||
### 14.1 SLA-Related Inquiries
|
||||
|
||||
For questions about this SLA or service level issues:
|
||||
|
||||
**Email:** sla@nhcarrigan.com
|
||||
|
||||
**Subject Line:** SLA Inquiry - [Brief Description]
|
||||
|
||||
**Response Time:** Within 2 business days for SLA-related inquiries
|
||||
|
||||
### 14.2 Service Level Remedy Requests
|
||||
|
||||
For Service Level remedy requests:
|
||||
|
||||
**Email:** support@nhcarrigan.com
|
||||
|
||||
**Subject Line:** SLA Remedy Request - [Service Name]
|
||||
|
||||
**Response Time:** Within 10 business days for remedy determinations
|
||||
|
||||
### 14.3 Technical Support
|
||||
|
||||
For general technical support:
|
||||
|
||||
**Email:** support@nhcarrigan.com
|
||||
|
||||
**Community Forum:** https://forum.nhcarrigan.com
|
||||
|
||||
**Response Time:** Within 48 hours for technical support requests
|
||||
|
||||
### 14.4 Legal and Compliance Matters
|
||||
|
||||
For legal matters related to this SLA:
|
||||
|
||||
**Email:** legal@nhcarrigan.com
|
||||
|
||||
**Subject Line:** Legal Matter - SLA
|
||||
|
||||
**Response Time:** Within 5 business days for legal inquiries
|
||||
|
||||
**Document Version:** 1.0
|
||||
|
||||
**Last Updated:** 15 September 2025
|
||||
|
||||
**Effective Date:** 15 September 2025
|
||||
|
||||
**Next Review Date:** 15 March 2026
|
||||
|
||||
---
|
||||
|
||||
*This Service Level Agreement and Warranty Disclaimer defines our service commitments whilst protecting against unfounded warranty claims. By using our Services, you acknowledge understanding of these terms and agree to the limitations and obligations described herein. For questions about service levels or to report issues, please contact us at sla@nhcarrigan.com.*
|
||||
@@ -2,28 +2,514 @@
|
||||
title: Data Subprocessors
|
||||
---
|
||||
|
||||
## 1. Subprocessors
|
||||
**TRANSPARENCY IN DATA PROCESSING RELATIONSHIPS**
|
||||
|
||||
The following entities process your data on our behalf. Interacting with our applications is subject to the privacy policies and terms of these entities.
|
||||
## 1. INTRODUCTION AND OVERVIEW
|
||||
|
||||
### 1.1. Primary Subprocessors
|
||||
### 1.1 Purpose and Scope
|
||||
|
||||
These entities directly store, manage, or handle our application data.
|
||||
This document provides comprehensive information about third-party entities that process personal data on behalf of nhcarrigan ("we," "us," "our," or "the Company"). By using our services, you acknowledge that your data may be processed by these subprocessors in accordance with their respective privacy policies and our contractual agreements.
|
||||
|
||||
| Entity | Data Processed |
|
||||
| ------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| DigitalOcean | Any data transmitted over the network to and from our applications. |
|
||||
| HubSpot | Data submitted to our Contact, Sales Inquiry, Sanction Appeals, Newsletter Sign-up, and Staff Application forms, as well as data transmitted via our embedded chat widgets. |
|
||||
| MongoDB | Any data provided to our applications when you interact with them. |
|
||||
| ProtonMail | Any information transmitted to and from our `nhcarrigan.com` email addresses. |
|
||||
| Stripe | Information provided during the identity and age verification processes necessary to access certain applications and community channels, and payment information for invoices. |
|
||||
### 1.2 Legal Framework
|
||||
|
||||
### 1.2. Secondary Subprocessors
|
||||
This disclosure is provided in accordance with:
|
||||
|
||||
In addition to our primary subprocessors, platforms and services you engage with in order to interface with our applications maintain their own privacy policies, and may store your data pursuant to those policies.
|
||||
**(a)** Data protection regulations requiring transparency about third-party processing;
|
||||
|
||||
Such platforms include, but are not limited to:
|
||||
**(b)** Our commitment to user privacy and informed consent;
|
||||
|
||||
- Codeberg
|
||||
- Discord
|
||||
- GitHub
|
||||
**(c)** Contractual obligations with our users regarding data processing;
|
||||
|
||||
**(d)** Industry best practices for data processing transparency.
|
||||
|
||||
### 1.3 Data Processing Principles
|
||||
|
||||
All subprocessor relationships are governed by:
|
||||
|
||||
**(a)** **Purpose Limitation:** Data processing is limited to specified, legitimate purposes;
|
||||
|
||||
**(b)** **Data Minimisation:** Only necessary data is shared with subprocessors;
|
||||
|
||||
**(c)** **Security Requirements:** All subprocessors must maintain appropriate security measures;
|
||||
|
||||
**(d)** **Contractual Protection:** Formal agreements govern all data processing relationships.
|
||||
|
||||
### 1.4 User Rights and Protections
|
||||
|
||||
Your rights regarding subprocessor data processing include:
|
||||
|
||||
**(a)** **Transparency:** Full disclosure of all entities processing your data;
|
||||
|
||||
**(b)** **Consent:** Your continued use constitutes consent to the processing described;
|
||||
|
||||
**(c)** **Control:** Rights to access, correct, and delete data processed by subprocessors;
|
||||
|
||||
**(d)** **Notice:** Advance notification of changes to subprocessor arrangements.
|
||||
|
||||
## 2. PRIMARY SUBPROCESSORS
|
||||
|
||||
### 2.1 Definition and Role
|
||||
|
||||
Primary subprocessors are third-party entities that directly process, store, or manage data on our behalf as part of our core service delivery. These relationships involve direct contractual arrangements and technical integrations.
|
||||
|
||||
### 2.2 Primary Subprocessor Details
|
||||
|
||||
#### 2.2.1 Anthropic
|
||||
|
||||
**Data Processing Role:** Artificial Intelligence and Natural Language Processing
|
||||
|
||||
**Types of Data Processed:**
|
||||
- Messages and commands sent to and from applications utilising AI integration services
|
||||
- User interactions with AI-powered features
|
||||
- Content analysis for service improvement and safety
|
||||
|
||||
**Processing Purpose:**
|
||||
- Providing AI-powered responses and functionality
|
||||
- Natural language understanding and generation
|
||||
- Content moderation and safety filtering
|
||||
- Service improvement and optimisation
|
||||
|
||||
**Data Transfer Mechanism:** Encrypted API communications
|
||||
|
||||
**Retention Period:** As specified in Anthropic's data retention policies
|
||||
|
||||
**Security Measures:** Industry-standard encryption and access controls
|
||||
|
||||
**Location:** United States
|
||||
|
||||
**Privacy Policy:** https://www.anthropic.com/privacy
|
||||
|
||||
#### 2.2.2 DigitalOcean
|
||||
|
||||
**Data Processing Role:** Infrastructure and Hosting Services
|
||||
|
||||
**Types of Data Processed:**
|
||||
- All data transmitted over networks to and from our applications
|
||||
- System logs and performance metrics
|
||||
- Backup data and system configurations
|
||||
- Network traffic metadata
|
||||
|
||||
**Processing Purpose:**
|
||||
- Providing cloud infrastructure and hosting services
|
||||
- Ensuring system availability and performance
|
||||
- Maintaining security and monitoring systems
|
||||
- Data backup and disaster recovery
|
||||
|
||||
**Data Transfer Mechanism:** Encrypted network transmission
|
||||
|
||||
**Retention Period:** As required for service provision and legal compliance
|
||||
|
||||
**Security Measures:** SOC 2 Type II compliance, encryption, access controls
|
||||
|
||||
**Location:** Multiple global data centres (primarily United States and Europe)
|
||||
|
||||
**Privacy Policy:** https://www.digitalocean.com/legal/privacy-policy
|
||||
|
||||
#### 2.2.3 MongoDB
|
||||
|
||||
**Data Processing Role:** Database Management and Storage
|
||||
|
||||
**Types of Data Processed:**
|
||||
- All structured data provided to our applications through user interactions
|
||||
- User account information and preferences
|
||||
- Application data and user-generated content
|
||||
- System configuration and metadata
|
||||
|
||||
**Processing Purpose:**
|
||||
- Providing database hosting and management services
|
||||
- Ensuring data availability and integrity
|
||||
- Facilitating data backup and recovery
|
||||
- Supporting application functionality
|
||||
|
||||
**Data Transfer Mechanism:** Encrypted database connections
|
||||
|
||||
**Retention Period:** As configured in our data retention policies
|
||||
|
||||
**Security Measures:** Encryption at rest and in transit, access controls, audit logging
|
||||
|
||||
**Location:** Configurable global regions (primarily United States)
|
||||
|
||||
**Privacy Policy:** https://www.mongodb.com/legal/privacy-policy
|
||||
|
||||
#### 2.2.4 Stripe
|
||||
|
||||
**Data Processing Role:** Payment Processing and Identity Verification
|
||||
|
||||
**Types of Data Processed:**
|
||||
- Payment information including credit card details and billing addresses
|
||||
- Identity verification information for age and identity confirmation
|
||||
- Transaction history and payment method data
|
||||
- Information necessary for regulatory compliance (KYC/AML)
|
||||
|
||||
**Processing Purpose:**
|
||||
- Processing payments and managing billing
|
||||
- Verifying user identity and age for service access
|
||||
- Preventing fraud and ensuring regulatory compliance
|
||||
- Managing subscriptions and recurring payments
|
||||
|
||||
**Data Transfer Mechanism:** PCI DSS compliant encrypted transmissions
|
||||
|
||||
**Retention Period:** As required by payment regulations and Stripe policies
|
||||
|
||||
**Security Measures:** PCI DSS Level 1 compliance, tokenisation, fraud detection
|
||||
|
||||
**Location:** Global processing infrastructure with data residency options
|
||||
|
||||
**Privacy Policy:** https://stripe.com/privacy
|
||||
|
||||
## 3. SECONDARY SUBPROCESSORS
|
||||
|
||||
### 3.1 Definition and Role
|
||||
|
||||
Secondary subprocessors are platforms and services that users interact with directly to access our services. While we do not have direct contractual control over these entities, user interaction with our services through these platforms may result in data processing by these entities under their own terms and policies.
|
||||
|
||||
### 3.2 Platform Integration Notice
|
||||
|
||||
When you access our services through third-party platforms, your interactions are subject to both our privacy policy and the privacy policies of these platforms. We recommend reviewing the privacy policies of all platforms you use to access our services.
|
||||
|
||||
### 3.3 Secondary Subprocessor Platforms
|
||||
|
||||
#### 3.3.1 Discord
|
||||
|
||||
**Relationship Type:** Community Platform Integration
|
||||
|
||||
**Data Processing Context:**
|
||||
- User interactions in Discord servers managed by or affiliated with nhcarrigan
|
||||
- Bot services and integrations provided through Discord
|
||||
- Community management and moderation activities
|
||||
|
||||
**User Responsibility:** Review Discord's Privacy Policy and Terms of Service
|
||||
|
||||
**Privacy Policy:** https://discord.com/privacy
|
||||
|
||||
#### 3.3.2 GitHub
|
||||
|
||||
**Relationship Type:** Development Platform and Code Repository
|
||||
|
||||
**Data Processing Context:**
|
||||
- Contributions to open-source projects
|
||||
- Issue reporting and feature requests
|
||||
- Code repository access and version control
|
||||
- Development collaboration activities
|
||||
|
||||
**User Responsibility:** Review GitHub's Privacy Statement and Terms of Service
|
||||
|
||||
**Privacy Policy:** https://docs.github.com/en/site-policy/privacy-policies/github-privacy-statement
|
||||
|
||||
#### 3.3.3 PayPal
|
||||
|
||||
**Relationship Type:** Alternative Payment Processing
|
||||
|
||||
**Data Processing Context:**
|
||||
- Payment processing for services and donations
|
||||
- Transaction history and payment verification
|
||||
- Dispute resolution and customer service
|
||||
|
||||
**User Responsibility:** Review PayPal's Privacy Statement and User Agreement
|
||||
|
||||
**Privacy Policy:** https://www.paypal.com/us/legalhub/privacy-full
|
||||
|
||||
#### 3.3.4 Twitch
|
||||
|
||||
**Relationship Type:** Live Streaming Platform Integration
|
||||
|
||||
**Data Processing Context:**
|
||||
- Live streaming services and chat interactions
|
||||
- Channel management and viewer analytics
|
||||
- Content delivery and broadcasting services
|
||||
|
||||
**User Responsibility:** Review Twitch's Privacy Notice and Terms of Service
|
||||
|
||||
**Privacy Policy:** https://www.twitch.tv/p/legal/privacy-notice
|
||||
|
||||
## 4. SUBPROCESSOR MANAGEMENT AND GOVERNANCE
|
||||
|
||||
### 4.1 Due Diligence Process
|
||||
|
||||
Before engaging any primary subprocessor, we conduct comprehensive due diligence including:
|
||||
|
||||
**(a)** **Security Assessment:** Evaluation of data security measures and certifications;
|
||||
|
||||
**(b)** **Privacy Review:** Analysis of privacy policies and data processing practices;
|
||||
|
||||
**(c)** **Compliance Verification:** Confirmation of regulatory compliance and certifications;
|
||||
|
||||
**(d)** **Contract Negotiation:** Establishment of data processing agreements with appropriate protections.
|
||||
|
||||
### 4.2 Ongoing Monitoring
|
||||
|
||||
We maintain ongoing oversight of subprocessor relationships through:
|
||||
|
||||
**(a)** **Regular Audits:** Periodic review of subprocessor security and privacy practices;
|
||||
|
||||
**(b)** **Performance Monitoring:** Assessment of service quality and compliance;
|
||||
|
||||
**(c)** **Incident Management:** Coordination on security incidents and data breaches;
|
||||
|
||||
**(d)** **Contract Management:** Regular review and update of contractual terms.
|
||||
|
||||
### 4.3 Data Processing Agreements
|
||||
|
||||
All primary subprocessors are bound by data processing agreements that include:
|
||||
|
||||
**(a)** **Purpose Limitation:** Specific restrictions on data use and processing purposes;
|
||||
|
||||
**(b)** **Security Requirements:** Mandatory security controls and incident response procedures;
|
||||
|
||||
**(c)** **Confidentiality:** Strict confidentiality and non-disclosure obligations;
|
||||
|
||||
**(d)** **Audit Rights:** Our right to audit subprocessor data processing practices.
|
||||
|
||||
### 4.4 Subprocessor Change Management
|
||||
|
||||
Changes to subprocessor arrangements are managed through:
|
||||
|
||||
**(a)** **Impact Assessment:** Evaluation of privacy and security implications;
|
||||
|
||||
**(b)** **User Notification:** Advance notice to users of significant changes;
|
||||
|
||||
**(c)** **Transition Planning:** Careful planning to minimise service disruption;
|
||||
|
||||
**(d)** **Documentation Updates:** Timely updates to this disclosure document.
|
||||
|
||||
## 5. DATA TRANSFER AND SECURITY
|
||||
|
||||
### 5.1 International Data Transfers
|
||||
|
||||
When data is transferred internationally to subprocessors, we ensure appropriate safeguards through:
|
||||
|
||||
**(a)** **Adequacy Decisions:** Reliance on jurisdictions with adequate data protection laws;
|
||||
|
||||
**(b)** **Standard Contractual Clauses:** Implementation of EU Standard Contractual Clauses where applicable;
|
||||
|
||||
**(c)** **Certification Schemes:** Use of subprocessors with recognised privacy certifications;
|
||||
|
||||
**(d)** **Binding Corporate Rules:** Acceptance of subprocessors with approved internal data transfer rules.
|
||||
|
||||
### 5.2 Security Requirements
|
||||
|
||||
All primary subprocessors must maintain security measures including:
|
||||
|
||||
**(a)** **Encryption:** Data encryption both in transit and at rest;
|
||||
|
||||
**(b)** **Access Controls:** Role-based access controls and multi-factor authentication;
|
||||
|
||||
**(c)** **Monitoring:** Continuous monitoring for security threats and incidents;
|
||||
|
||||
**(d)** **Incident Response:** Established procedures for responding to security incidents.
|
||||
|
||||
### 5.3 Compliance and Certifications
|
||||
|
||||
We prefer subprocessors with recognised compliance certifications such as:
|
||||
|
||||
**(a)** **SOC 2 Type II:** System and Organisation Controls for service organisations;
|
||||
|
||||
**(b)** **ISO 27001:** International standard for information security management;
|
||||
|
||||
**(c)** **PCI DSS:** Payment Card Industry Data Security Standard (for payment processors);
|
||||
|
||||
**(d)** **GDPR Compliance:** Demonstrated compliance with General Data Protection Regulation.
|
||||
|
||||
### 5.4 Data Breach Response
|
||||
|
||||
In the event of a data breach involving a subprocessor:
|
||||
|
||||
**(a)** **Immediate Notification:** Subprocessors must notify us within 24 hours;
|
||||
|
||||
**(b)** **Impact Assessment:** Joint assessment of the scope and impact of the breach;
|
||||
|
||||
**(c)** **User Notification:** Prompt notification to affected users where required;
|
||||
|
||||
**(d)** **Remediation:** Collaborative efforts to contain and remedy the breach.
|
||||
|
||||
## 6. USER RIGHTS AND CONTROL
|
||||
|
||||
### 6.1 Transparency Rights
|
||||
|
||||
Users have the right to:
|
||||
|
||||
**(a)** **Information:** Full transparency about subprocessor data processing activities;
|
||||
|
||||
**(b)** **Updates:** Regular updates about changes to subprocessor arrangements;
|
||||
|
||||
**(c)** **Access:** Information about how to exercise rights with each subprocessor;
|
||||
|
||||
**(d)** **Contact:** Direct communication channels for subprocessor-related concerns.
|
||||
|
||||
### 6.2 Data Subject Rights
|
||||
|
||||
Regarding data processed by subprocessors, users may:
|
||||
|
||||
**(a)** **Request Access:** Obtain information about data processing activities;
|
||||
|
||||
**(b)** **Seek Rectification:** Request correction of inaccurate data;
|
||||
|
||||
**(c)** **Demand Erasure:** Request deletion of personal data in certain circumstances;
|
||||
|
||||
**(d)** **Restrict Processing:** Limit how data is processed by subprocessors.
|
||||
|
||||
### 6.3 Exercise of Rights
|
||||
|
||||
To exercise rights regarding subprocessor data processing:
|
||||
|
||||
**(a)** **Primary Contact:** Contact us at privacy@nhcarrigan.com for coordination;
|
||||
|
||||
**(b)** **Direct Contact:** Contact subprocessors directly using their provided channels;
|
||||
|
||||
**(c)** **Documentation:** Provide sufficient information to verify identity and specify requests;
|
||||
|
||||
**(d)** **Response Time:** Allow reasonable time for investigation and response.
|
||||
|
||||
### 6.4 Complaint Mechanisms
|
||||
|
||||
If you have concerns about subprocessor data processing:
|
||||
|
||||
**(a)** **Internal Escalation:** Raise concerns through our customer support channels;
|
||||
|
||||
**(b)** **Supervisory Authorities:** Contact relevant data protection authorities;
|
||||
|
||||
**(c)** **Legal Remedies:** Pursue legal remedies available in your jurisdiction;
|
||||
|
||||
**(d)** **Alternative Resolution:** Participate in mediation or arbitration where available.
|
||||
|
||||
## 7. UPDATES AND CHANGES
|
||||
|
||||
### 7.1 Change Notification Process
|
||||
|
||||
We will notify users of changes to subprocessor arrangements through:
|
||||
|
||||
**(a)** **Email Notification:** Direct notification to registered users for significant changes;
|
||||
|
||||
**(b)** **Website Updates:** Updates to this document with change logs and effective dates;
|
||||
|
||||
**(c)** **Service Notifications:** In-app notifications where technically feasible;
|
||||
|
||||
**(d)** **Community Announcements:** Public announcements in community forums.
|
||||
|
||||
### 7.2 Types of Changes Requiring Notification
|
||||
|
||||
Changes requiring advance notification include:
|
||||
|
||||
**(a)** **New Subprocessors:** Addition of new primary subprocessors;
|
||||
|
||||
**(b)** **Changed Processing:** Significant changes to data processing purposes or methods;
|
||||
|
||||
**(c)** **Location Changes:** Changes to data processing locations or jurisdictions;
|
||||
|
||||
**(d)** **Security Changes:** Material changes to security measures or protections.
|
||||
|
||||
### 7.3 Objection Rights
|
||||
|
||||
If you object to changes in subprocessor arrangements:
|
||||
|
||||
**(a)** **Notification Period:** We typically provide 30 days' notice of significant changes;
|
||||
|
||||
**(b)** **Objection Process:** You may object within the notification period;
|
||||
|
||||
**(c)** **Alternative Arrangements:** We will consider reasonable alternative arrangements where possible;
|
||||
|
||||
**(d)** **Service Termination:** You may terminate services if objections cannot be accommodated.
|
||||
|
||||
### 7.4 Emergency Changes
|
||||
|
||||
In emergency situations requiring immediate subprocessor changes:
|
||||
|
||||
**(a)** **Immediate Implementation:** Changes may be implemented without prior notice;
|
||||
|
||||
**(b)** **Prompt Notification:** Users will be notified as soon as reasonably possible;
|
||||
|
||||
**(c)** **Explanation:** Full explanation of the circumstances requiring emergency changes;
|
||||
|
||||
**(d)** **Remediation Options:** Information about available remediation options.
|
||||
|
||||
## 8. CONTACT INFORMATION AND SUPPORT
|
||||
|
||||
### 8.1 Primary Contact
|
||||
|
||||
For questions about subprocessor data processing:
|
||||
|
||||
**Email:** privacy@nhcarrigan.com
|
||||
|
||||
**Subject Line:** Subprocessor Data Processing Inquiry
|
||||
|
||||
**Response Time:** Within 5 business days for standard inquiries
|
||||
|
||||
### 8.2 Rights Requests
|
||||
|
||||
For exercising data subject rights regarding subprocessor processing:
|
||||
|
||||
**Email:** privacy@nhcarrigan.com
|
||||
|
||||
**Subject Line:** Data Subject Rights - Subprocessor
|
||||
|
||||
**Required Information:** Please include your full name, account information, and specific request details
|
||||
|
||||
### 8.3 Complaints and Concerns
|
||||
|
||||
For complaints about subprocessor data processing:
|
||||
|
||||
**Email:** privacy@nhcarrigan.com
|
||||
|
||||
**Subject Line:** Subprocessor Complaint
|
||||
|
||||
**Alternative:** Contact relevant supervisory authorities in your jurisdiction
|
||||
|
||||
### 8.4 Technical Support
|
||||
|
||||
For technical issues related to third-party platform integrations:
|
||||
|
||||
**Email:** support@nhcarrigan.com
|
||||
|
||||
**Community Forum:** https://forum.nhcarrigan.com
|
||||
|
||||
**Response Time:** Within 48 hours for technical support requests
|
||||
|
||||
## 9. COMPLIANCE AND REGULATORY INFORMATION
|
||||
|
||||
### 9.1 Regulatory Framework
|
||||
|
||||
This subprocessor disclosure is maintained in compliance with:
|
||||
|
||||
**(a)** **General Data Protection Regulation (GDPR):** EU data protection requirements;
|
||||
|
||||
**(b)** **California Consumer Privacy Act (CCPA):** California privacy law requirements;
|
||||
|
||||
**(c)** **Other Applicable Laws:** Additional data protection laws in relevant jurisdictions;
|
||||
|
||||
**(d)** **Industry Standards:** Best practices for data processing transparency.
|
||||
|
||||
### 9.2 Regular Review
|
||||
|
||||
This document is reviewed and updated:
|
||||
|
||||
**(a)** **Quarterly:** Regular quarterly review for accuracy and completeness;
|
||||
|
||||
**(b)** **Change-Triggered:** Updates following any changes to subprocessor arrangements;
|
||||
|
||||
**(c)** **Annual Audit:** Comprehensive annual audit of all subprocessor relationships;
|
||||
|
||||
**(d)** **Regulatory Updates:** Updates following changes in applicable laws or regulations.
|
||||
|
||||
### 9.3 Documentation Standards
|
||||
|
||||
We maintain documentation standards including:
|
||||
|
||||
**(a)** **Version Control:** Clear versioning and change tracking for all updates;
|
||||
|
||||
**(b)** **Audit Trail:** Complete records of all changes and their justifications;
|
||||
|
||||
**(c)** **Legal Review:** Review by qualified legal counsel before publication;
|
||||
|
||||
**(d)** **Stakeholder Input:** Consideration of feedback from users and privacy advocates.
|
||||
|
||||
**Document Version:** 2.0
|
||||
|
||||
**Last Updated:** 15 September 2025
|
||||
|
||||
**Next Review Date:** 15 September 2026
|
||||
|
||||
**Effective Date:** 15 September 2025
|
||||
|
||||
---
|
||||
|
||||
*This document provides transparency about our data processing relationships to help you make informed decisions about using our services. By using our services, you acknowledge understanding of these subprocessor arrangements and consent to the data processing described herein. For questions or concerns about subprocessor data processing, please contact us at privacy@nhcarrigan.com.*
|
||||
|
||||
+248
-1049
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,47 @@
|
||||
---
|
||||
title: 00. Frequently Asked Questions
|
||||
---
|
||||
|
||||
This page outlines some of the frequently asked questions we see.
|
||||
|
||||
## Does the mentorship programme cost anything?
|
||||
|
||||
Nope! We offer this programme entirely for free. You *may* have to pay for things like hosting to deploy your app, but you will do that directly - we do not collect any tuition or academic fees.
|
||||
|
||||
That being said, if you would like to [donate so we can continue offering this free programme](https://donate.nhcarrigan.com/) we would greatly appreciate it!
|
||||
|
||||
## Why does Naomi take so long to respond?
|
||||
|
||||
We do our best to respond as quickly as possible. Please understand that Naomi does this completely for free, and works multiple paid jobs to cover her expenses.
|
||||
|
||||
As such, this means she is very busy and can be slow to respond. If we have not responded to you within 3 days, please feel free to ping us with a gentle reminder. Repeatedly pinging us with a greater frequency than every three days may result in sanctions.
|
||||
|
||||
Thank you for your patience and understanding.
|
||||
|
||||
## What if I change my mind?
|
||||
|
||||
You are welcome to leave the mentorship programme at any time! We are not going to hold you hostage, or charge you fines. We only ask that you let us know you wish to drop out and why, so we can track feedback and graduation rates.
|
||||
|
||||
We promise not to pressure you to stay, regardless of the reason you choose to drop out.
|
||||
|
||||
## I do not want to drop out, but I have a life situation going on...
|
||||
|
||||
Totally acceptable! We do not have activity requirements. If you need to take a break to address other circumstances, just let us know (so we don't ping you with reminders)!
|
||||
|
||||
## Will you kick us out at all?
|
||||
|
||||
Yes, but expulsion is done only under specific circumstances:
|
||||
|
||||
1. You completely ghost us - you have not communicated the need for a break, and are not responding to our messages. If you disappear for two weeks or more without informing us, we will have to remove you to make room for someone who is ready to commit.
|
||||
2. You violate our [Code of Conduct](https://docs.nhcarrigan.com/community/coc/). Sorry, but our rules foster a safe and inclusive learning environment, and if you choose not to obey them we cannot have you in our community spaces.
|
||||
3. You engage in malicious behaviour. If you intentionally push malware or viruses to your repository, or you design a project that actively harms people, we will not support that and you will be expelled.
|
||||
|
||||
## What if I have a question not covered here?
|
||||
|
||||
Ping us in #mentee-chat! We are always happy to answer questions!
|
||||
|
||||
:::tip[Helpful Links]
|
||||
- [Apply to join](https://forms.nhcarrigan.com/form/gNv4NYZmdiMWpkUcnknII2yYCvnYNGAmabG5O5He9Mo)
|
||||
- [Discord](https://chat.nhcarrigan.com/)
|
||||
- [Donate](https://donate.nhcarrigan.com/)
|
||||
:::
|
||||
@@ -0,0 +1,31 @@
|
||||
---
|
||||
title: 01. Onboarding
|
||||
---
|
||||
|
||||
Once your application has been reviewed and accepted, you will receive an email confirmation. You MUST reply to this confirmation with your GitHub username.
|
||||
|
||||
:::caution
|
||||
If you do not respond to the confirmation email with your GitHub username, we will not be able to complete your onboarding.
|
||||
:::
|
||||
|
||||
## Discord
|
||||
|
||||
You will need to join our [Discord community](https://chat.nhcarrigan.com/). This is where the bulk of our planning, coaching, and conversation will happen.
|
||||
|
||||
When you join, ping Naomi in the general chat channel and request the mentorship role. She will grant you this role, which allows you to access the necessary channels.
|
||||
|
||||
## GitHub
|
||||
|
||||
:::caution
|
||||
The repository we provide you is ONLY for your flagship project. You should NOT commit any other code, such as practise projects or leetcode solutions. This is the repository you will be listing on your resume for job applications, so you want it to be you at your best!
|
||||
:::
|
||||
|
||||
You will receive an invite to a dedicated repository under this organisation to hold the code for your flagship project. You will need to accept this invite within 7 days, or it will expire.
|
||||
|
||||
You will have maintainer access to your repository, so you can configure various settings like workflows and branch protections. You will not have access to destructive settings.
|
||||
|
||||
:::tip[Helpful Links]
|
||||
- [Apply to join](https://forms.nhcarrigan.com/form/gNv4NYZmdiMWpkUcnknII2yYCvnYNGAmabG5O5He9Mo)
|
||||
- [Discord](https://chat.nhcarrigan.com/)
|
||||
- [Donate](https://donate.nhcarrigan.com/)
|
||||
:::
|
||||
@@ -0,0 +1,36 @@
|
||||
---
|
||||
title: 02. Goal Setting
|
||||
---
|
||||
After your onboarding is complete, you will need to begin your goal-setting. Create a thread in the #goal-setting forum on our Discord, and name it as follows:
|
||||
|
||||
```markdown
|
||||
<full name> - Goals
|
||||
```
|
||||
|
||||
In your initial post, you will want to outline the following information:
|
||||
|
||||
- The type of role you want for your career (e.g. full-stack dev, front-end dev, mobile dev, game dev)
|
||||
- Your current learning state (what languages you know, what projects you have built)
|
||||
- Your interests outside of coding (hobbies, passions, etc)
|
||||
|
||||
Our team will use this information as the starting point for your road map. We may ask some follow up questions.
|
||||
|
||||
## Road Map
|
||||
|
||||
To finalise your goal setting conversation, we will provide a 12-week road map to outline your learning and completion of your flagship project. We will ask for your confirmation of the road map.
|
||||
|
||||
Be sure to take the time to read it thoroughly, and assess whether it seems achievable, aligns with your goals for the programme, and incorporates your interests.
|
||||
|
||||
:::note
|
||||
Plans must be solid, but reactions flexible.
|
||||
:::
|
||||
|
||||
The 12-week road map is not set in stone - we will adapt to changes in your situation, timeline requirements, etc. It merely gives us the scaffolding we need to best guide your journey.
|
||||
|
||||
Once you sign off on the road map, we will be ready to move to the project planning stage.
|
||||
|
||||
:::tip[Helpful Links]
|
||||
- [Apply to join](https://forms.nhcarrigan.com/form/gNv4NYZmdiMWpkUcnknII2yYCvnYNGAmabG5O5He9Mo)
|
||||
- [Discord](https://chat.nhcarrigan.com/)
|
||||
- [Donate](https://donate.nhcarrigan.com/)
|
||||
:::
|
||||
@@ -0,0 +1,30 @@
|
||||
---
|
||||
title: 03. Project Planning
|
||||
---
|
||||
|
||||
Once your goals are set, we will begin iterating on your flagship project. Create a post in the #project-plan forum channel, using the same naming convention:
|
||||
|
||||
```markdown
|
||||
<full name> - Project Plan
|
||||
```
|
||||
|
||||
In your post, you want to provide as much detail as you have about your project idea. If you do not have an idea yet, that is okay! Create your post with something like "I need help brainstorming a project idea". We will gladly work with you to find a project that furthers your goals and aligns with your interests.
|
||||
|
||||
Once your post is created, our team will work with you to flesh out and polish the idea into something refined and ready for work. You should end up with a project plan like:
|
||||
|
||||
```markdown
|
||||
A life task tracker app thats open source and self-hosted as well as a live version hosted on my website with user auth and such. Could have kanban boards and different views and such, and have tasks that depend on other tasks just like on a github projects board.
|
||||
|
||||
Could also link rewards to tasks / projects. e.g. Car Maintenance project with sub tasks of cleaning car, changing oil, buying car charger for cig lighter port etc, and then could link to an item that you will buy for yourself as a reward for when the entire project is complete, and itll have a link to that item when you mark the project as complete
|
||||
|
||||
At the end I could sneak some gamification elements in as an opt-in thing where you can level up and such by completing tasks / projects/ completing life goals).
|
||||
|
||||
```
|
||||
|
||||
Our team will give the final sign-off on your project plan, and you will be ready to start writing user stories!
|
||||
|
||||
:::tip[Helpful Links]
|
||||
- [Apply to join](https://forms.nhcarrigan.com/form/gNv4NYZmdiMWpkUcnknII2yYCvnYNGAmabG5O5He9Mo)
|
||||
- [Discord](https://chat.nhcarrigan.com/)
|
||||
- [Donate](https://donate.nhcarrigan.com/)
|
||||
:::
|
||||
@@ -0,0 +1,27 @@
|
||||
---
|
||||
title: 04. User Stories
|
||||
---
|
||||
|
||||
Creating user stories is a crucial step in planning your project. This helps you visualise and understand your application's requirements, broken down into digestible isolated chunks so you can maintain a smaller scope of work for each task.
|
||||
|
||||
Based on your project plan, you will want to create an *individual issue* on your GitHub repository for *each user story*. So, if you have 30 stories, you should have 30 issues.
|
||||
|
||||
## What is a user story?
|
||||
|
||||
A user story is an application requirement that is written from the perspective of an end user. Here are some examples:
|
||||
|
||||
- As an unauthenticated user, I can see a button to go through the login or registration flows.
|
||||
- As an authenticated user, I can fill out a form to schedule an appointment and select from available dates and times listed on a calendar.
|
||||
- As an administrator, I can review posts for their content and remove the ones that violate our policies.
|
||||
|
||||
## Why separate issues? Can I not use a single issue with a list?
|
||||
|
||||
Maintaining separate issues, or tickets, allows you to link each user story to a specific pull request. This is a common workflow, and ensures that your changes remain within the scope of a specific story.
|
||||
|
||||
Once you have your user stories all logged as individual issues, ping Naomi in the #mentee-chat for a final review. If we sign off on your issues, we will move into the technical breakdown step.
|
||||
|
||||
:::tip[Helpful Links]
|
||||
- [Apply to join](https://forms.nhcarrigan.com/form/gNv4NYZmdiMWpkUcnknII2yYCvnYNGAmabG5O5He9Mo)
|
||||
- [Discord](https://chat.nhcarrigan.com/)
|
||||
- [Donate](https://donate.nhcarrigan.com/)
|
||||
:::
|
||||
@@ -0,0 +1,98 @@
|
||||
---
|
||||
title: 05. Technical Breakdown
|
||||
---
|
||||
|
||||
Once your user stories are complete, Naomi will audit them. She may have some feedback, but generally she will sign off on them by editing the issue to include this template:
|
||||
|
||||
```markdown
|
||||
## 🎯 Acceptance Criteria
|
||||
- [ ] Criteria 1 (clear, testable condition)
|
||||
- [ ] Criteria 2
|
||||
- [ ] Criteria 3
|
||||
|
||||
---
|
||||
|
||||
## ⚙️ Technical Details
|
||||
- Proposed implementation approach:
|
||||
- [ ] e.g., API endpoint, UI component, database schema changes
|
||||
- Data considerations:
|
||||
- [ ] Models, validation, storage needs
|
||||
- Security/permissions:
|
||||
- [ ] Any auth or role checks?
|
||||
|
||||
---
|
||||
|
||||
## 🔗 Dependencies
|
||||
- [ ] Related tickets or features
|
||||
- [ ] External services or APIs
|
||||
- [ ] Libraries or frameworks required
|
||||
|
||||
---
|
||||
|
||||
## 🧪 Testing Notes
|
||||
- [ ] Unit tests to cover…
|
||||
- [ ] Integration tests to cover…
|
||||
- [ ] Manual QA steps…
|
||||
|
||||
---
|
||||
|
||||
## 📂 Additional Context
|
||||
- Links to designs, diagrams, or docs
|
||||
- Any constraints or assumptions
|
||||
- Open questions / things to clarify
|
||||
|
||||
```
|
||||
|
||||
This template is specifically designed to help you understand how to break down your user story into actionable components. Which means your next task is to fill it out!
|
||||
|
||||
Take your time and be as detailed as possible. Remember, the more planning you do now, the less factoring you need later.
|
||||
|
||||
## Example
|
||||
|
||||
Say I have a user story "As a user, I should be able to add a game to my library". I would **edit the issue body to fill in the template** like so:
|
||||
|
||||
```markdown
|
||||
🎯 Acceptance Criteria
|
||||
- [ ] User can add game to library
|
||||
- [ ] User can remove game from library
|
||||
|
||||
---
|
||||
|
||||
⚙️ Technical Details
|
||||
- Proposed implementation approach:
|
||||
- [ ] POST /library
|
||||
- [ ] DELETE /library
|
||||
- Data considerations:
|
||||
- [ ] User model must have library property
|
||||
- [ ] Library property must be array with game IDs
|
||||
- [ ] Each ID points to a Game model record
|
||||
- Security/permissions:
|
||||
- [ ] Validate JWT to ensure authenticated user is correct
|
||||
- [ ] Authenticated user can only add games to their own library
|
||||
|
||||
---
|
||||
|
||||
🔗 Dependencies
|
||||
- [ ] #2 - Authentication is required to edit my library
|
||||
- [ ] #5 - Profile UI necessary to get to this view
|
||||
|
||||
---
|
||||
|
||||
🧪 Testing Notes
|
||||
- [ ] POST and DELETE routes should be tested with mock data
|
||||
- [ ] UI should be tested to ensure functionality
|
||||
|
||||
---
|
||||
|
||||
📂 Additional Context
|
||||
|
||||
- Relational data model means using Mongo might not be the best choice. Should we re-evaluate?
|
||||
- Consider a GET route for displaying the library.
|
||||
|
||||
```
|
||||
|
||||
:::tip[Helpful Links]
|
||||
- [Apply to join](https://forms.nhcarrigan.com/form/gNv4NYZmdiMWpkUcnknII2yYCvnYNGAmabG5O5He9Mo)
|
||||
- [Discord](https://chat.nhcarrigan.com/)
|
||||
- [Donate](https://donate.nhcarrigan.com/)
|
||||
:::
|
||||
@@ -0,0 +1,45 @@
|
||||
---
|
||||
title: 06. Priority and Effort
|
||||
---
|
||||
|
||||
Your next step is to apply labels to your user stories that indicate the priority and effort level. These labels have NOT been created for you, so you will need to create the labels for your repository - we are not enforcing a specific naming convention, so use the labels that best align with your organisational style.
|
||||
|
||||
There are two things you want to have labelled on each issue: priority and effort.
|
||||
|
||||
## Priority
|
||||
|
||||
Assigning priority to your user stories is probably not what you might expect. You are not using something like "this is more fun to work on, so higher priority", or "this does not excite me so I will de-prioritise it".
|
||||
|
||||
Instead, you will look solely at what is blocking/blocked by each issue. For example, consider these three user stories:
|
||||
|
||||
1. As an unauthenticated user, I should be able to create an account or sign in to my existing account
|
||||
2. As an authenticated user, I should be able to customise my profile
|
||||
3. As an authenticated user, I should be able to create a new post
|
||||
4. As a user, I should be able to view someone's profile.
|
||||
|
||||
If we look at what is blocking what, user story 1 blocks stories 2 and 3! You cannot be an authenticated user if we do not provide a way to register and sign in.
|
||||
|
||||
So issue 1 would be a high priority, because it blocks work on 2 and 3. But 2 and 3 do not block each other, so we could consider them both a medium priority. Issue 4 is blocked by issue 2, because it makes no sense to allow the viewing of profiles if there are no profiles to customise! Following our logic, then, issue 4 would be a low priority.
|
||||
|
||||
Again, how you choose to "name" and assign priorities is up to you - the general idea is that you should be able to look at your priority labels and quickly determine what needs to be done next (because it is the highest priority).
|
||||
|
||||
## Effort
|
||||
|
||||
The next set of labels you need to apply involve determining the amount of effort required to complete the user story. Now, every organisation handles this differently. You may have heard of "story points" before, which are a way of indicating effort levels.
|
||||
|
||||
How you choose to label and quantify effort is up to you. For this example, we will use a points system. Given our existing user stories above, we might assign the following points:
|
||||
|
||||
1. Five points (building out an entire authentication flow is very complex).
|
||||
2. Three points
|
||||
3. Three points
|
||||
4. One point (showing a static page is less complex).
|
||||
|
||||
The purpose of applying these labels is to help you plan out the timeline of work. For example, if you have three high-priority tasks, but only have a few hours free on a Friday afternoon, you might consider completing the lowest-effort task because you have restricted time.
|
||||
|
||||
Once your priority and effort labels are applied, ping Naomi in the #mentee-chat again to discuss your decisions and categorisation. After we approve your labels, you are finally ready to start working on actual code!
|
||||
|
||||
:::tip[Helpful Links]
|
||||
- [Apply to join](https://forms.nhcarrigan.com/form/gNv4NYZmdiMWpkUcnknII2yYCvnYNGAmabG5O5He9Mo)
|
||||
- [Discord](https://chat.nhcarrigan.com/)
|
||||
- [Donate](https://donate.nhcarrigan.com/)
|
||||
:::
|
||||
@@ -0,0 +1,37 @@
|
||||
---
|
||||
title: 07. Writing Code
|
||||
---
|
||||
|
||||
You are finally ready to start writing some code... But wait! We still have a couple of things to consider.
|
||||
|
||||
## Branching Strategy
|
||||
|
||||
As is common when you are working on a team professionally, you are **not** able to push directly to your `main` branch. Instead, you are required to create a dedicated branch for your work and make a pull request to bring your changes back into `main`.
|
||||
|
||||
Each branch should be scoped to a *single* user story. This ensures that your pull requests remain in a manageable state and are not too massive to review.
|
||||
|
||||
## Pull Request Reviews
|
||||
|
||||
Every pull request will require a review from Naomi. This ensures that we have eyes on all of the work you do, and can be in lockstep with you as you ship new features. We will review your code as if you were in a professional setting - so we will look at best practises, code quality, feature completeness, etc.
|
||||
|
||||
Much like in a professional role, each pull request review will likely involve a bit of back-and-forth communication. Remember that this is a marathon, not a sprint, and every review comment we make is designed to help you learn and improve your skills.
|
||||
|
||||
## Next Steps
|
||||
|
||||
You will want to start by scaffolding your project - add any tooling structure (e.g. a `package.json` file for Node.js projects) and configuration (e.g. `black` for a Python project).
|
||||
|
||||
Then configure a CI file to run on every pull request to ensure things like your `lint`, `build`, and `test` steps all pass.
|
||||
|
||||
Setting all of this up NOW ensures that any code you write meets your quality requirements right out of the gate, and saves you from having to fix issues across dozens of files if you were to set up your tooling later.
|
||||
|
||||
## Yay! It is Coding Time!
|
||||
|
||||
You did it. You can start writing some actual code! Remember to work on a dedicated branch for each user story.
|
||||
|
||||
Commit early, commit often, push every time. The last thing you want to do is lose your hard work!
|
||||
|
||||
:::tip[Helpful Links]
|
||||
- [Apply to join](https://forms.nhcarrigan.com/form/gNv4NYZmdiMWpkUcnknII2yYCvnYNGAmabG5O5He9Mo)
|
||||
- [Discord](https://chat.nhcarrigan.com/)
|
||||
- [Donate](https://donate.nhcarrigan.com/)
|
||||
:::
|
||||
@@ -0,0 +1,37 @@
|
||||
---
|
||||
title: 08. Final Polish
|
||||
---
|
||||
|
||||
When you feel like your flagship project has reached a state where you can proudly show it off on your resume, ping Naomi yet again in the #mentee-chat.
|
||||
|
||||
## Code Cleanup
|
||||
|
||||
At this point, we will go through your project with a fine-toothed comb, adding new issues as we identify things that need to be resolved.
|
||||
|
||||
You'll need to circle back and address those issues - and we will rinse and repeat this cycle until your project is polished up and ready to go.
|
||||
|
||||
## Documentation
|
||||
|
||||
Then, we'll coach you on how to write documentation for your product. You will need to establish the standard documentation files:
|
||||
|
||||
- A [README.md](http://readme.md/), which provides a high-level overview of your project
|
||||
- [CONTRIBUTING.md](http://contributing.md/), which has the instructions for someone looking to come help work on your project
|
||||
- [LICENSE.md](http://license.md/), which determines what people can and cannot do with your software
|
||||
|
||||
We will also determine an approach for in-depth end user documentation.
|
||||
|
||||
## Hosting!
|
||||
|
||||
Finally, you need a live version of your application! Our team will help you figure out the best way to deploy your app, and which hosting providers will fit your needs.
|
||||
|
||||
:::caution
|
||||
You definitely want to consult with us BEFORE deploying your application, as we can provide guidance such as free hosting options, deployment pipelines, etc.
|
||||
:::
|
||||
|
||||
We will also help you set up a domain to point to your live project, if you are interested - note that domains generally cost money. So does hosting. We'll do our best to find free options for you, but that's not always viable.
|
||||
|
||||
:::tip[Helpful Links]
|
||||
- [Apply to join](https://forms.nhcarrigan.com/form/gNv4NYZmdiMWpkUcnknII2yYCvnYNGAmabG5O5He9Mo)
|
||||
- [Discord](https://chat.nhcarrigan.com/)
|
||||
- [Donate](https://donate.nhcarrigan.com/)
|
||||
:::
|
||||
@@ -0,0 +1,31 @@
|
||||
---
|
||||
title: 09. Career Prep
|
||||
---
|
||||
|
||||
Hurray! You made it! It is now time to start your job hunt in earnest! There are a few things we will do to help you get ready for this process.
|
||||
|
||||
## Resume Review
|
||||
|
||||
We will work with you to get a polished resume/CV ready to hand out to potential employers. And your resume will definitely include your flagship project!
|
||||
|
||||
## LinkedIn Prep
|
||||
|
||||
We will help you curate your LinkedIn profile to help you stand out and position you for success.
|
||||
|
||||
## Application Assistance
|
||||
|
||||
We will gladly help you refine your job search and application process. We cannot, and will not, complete job applications for you - but will totally help you figure out what to say.
|
||||
|
||||
## Mock Interviews
|
||||
|
||||
Once you start landing interviews, we will do some mock interviews to best prepare you to succeed in the real thing!
|
||||
|
||||
## JOB!!!!!
|
||||
|
||||
We will continue to do all of this, and refine and iterate on your flagship project, until we have reached the magical combo that gets you employed! 🎉
|
||||
|
||||
:::tip[Helpful Links]
|
||||
- [Apply to join](https://forms.nhcarrigan.com/form/gNv4NYZmdiMWpkUcnknII2yYCvnYNGAmabG5O5He9Mo)
|
||||
- [Discord](https://chat.nhcarrigan.com/)
|
||||
- [Donate](https://donate.nhcarrigan.com/)
|
||||
:::
|
||||
@@ -0,0 +1,23 @@
|
||||
---
|
||||
title: 10. Graduation
|
||||
---
|
||||
|
||||
Our mentorship programme is very flexible. There are no set deadlines, no requirements you must complete to "finish the programme", etc.
|
||||
|
||||
Instead, we focus on one thing and one thing only: reaching your career goals. As such, once you land your dev job, you have completed the mentorship programme!
|
||||
|
||||
:::tip
|
||||
It is entirely possible that you land a job before you even complete your flagship project. That repository is yours to keep forever, so you will be able to continue working on it as you like. But when you land your job, regardless of where you are at in your roadmap, you will have successfully graduated from our programme!
|
||||
:::
|
||||
|
||||
While we will gladly provide continued coaching, advice, and recommendations, we *will* remove you from the official programme once you are hired. This allows us to open up space for the next generation of developers looking to find their success just like you did!
|
||||
|
||||
We do maintain an alumni programme. You will still have access to post in the mentorship channels, but not to get help with your own plan - instead, you'll be helping coach and guide others! Succeeding as a developer requires leadership skills, and our hope with the alumni programme is to give you the space to develop those skills.
|
||||
|
||||
You will also go on our public list of alumni!
|
||||
|
||||
:::tip[Helpful Links]
|
||||
- [Apply to join](https://forms.nhcarrigan.com/form/gNv4NYZmdiMWpkUcnknII2yYCvnYNGAmabG5O5He9Mo)
|
||||
- [Discord](https://chat.nhcarrigan.com/)
|
||||
- [Donate](https://donate.nhcarrigan.com/)
|
||||
:::
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: Downloading and Editing Music
|
||||
title: Managing Local Music
|
||||
---
|
||||
|
||||
This serves as our documentation for how we manage our local music libraries on Linux.
|
||||
|
||||
@@ -0,0 +1,95 @@
|
||||
---
|
||||
title: AI Prompts
|
||||
---
|
||||
|
||||
Here are various prompts we use throughout our workflows.
|
||||
|
||||
## Documentation Generation Prompt
|
||||
|
||||
Open Claude Code in your project directory, then provide this prompt:
|
||||
|
||||
```md
|
||||
Please go through the entire `src` directory and use the codebase to generate documentation for me, given the following template:
|
||||
|
||||
---
|
||||
title: <app name>
|
||||
---
|
||||
|
||||
<app name> (hereinafter the "Application") is <description>
|
||||
|
||||
## 1. User Documentation
|
||||
|
||||
This section is for those interacting with a live instance of the Application.
|
||||
|
||||
## 2. Technical Documentation
|
||||
|
||||
This section is for those interested in running their own instance of the Application.
|
||||
|
||||
## 3. Legal Documentation
|
||||
|
||||
This section is for expansions to our legal policies specific to the Application.
|
||||
|
||||
## 4. Contributing Documentation
|
||||
|
||||
This section is for documentation related to contributing to the Application's codebase.
|
||||
```
|
||||
|
||||
## Comprehension Question Generation Prompt
|
||||
|
||||
We use this for some of our client work, but this is great for creating questions to quiz yourself on any document you've read.
|
||||
|
||||
````md
|
||||
You must create three comprehension check questions for the lecture script the user provides. Do not include any other information. Format the response as a code block so the user can easily copy the syntax.
|
||||
|
||||
Here is the format:
|
||||
|
||||
```
|
||||
### Question 1:
|
||||
|
||||
Which of the following is a key characteristic of relational databases?
|
||||
|
||||
**A.** Flexible schema
|
||||
|
||||
**B.** Document-based structure
|
||||
|
||||
**C.** Key-value pairs
|
||||
|
||||
**D.** Structured data in tables
|
||||
|
||||
Hint: Think about how data is organized in relational databases.
|
||||
|
||||
Answer: **D.** Structured data in tables
|
||||
|
||||
### Question 2:
|
||||
|
||||
Which of the following is a key characteristic of relational databases?
|
||||
|
||||
**A.** Flexible schema
|
||||
|
||||
**B.** Document-based structure
|
||||
|
||||
**C.** Key-value pairs
|
||||
|
||||
**D.** Structured data in tables
|
||||
|
||||
Hint: Think about how data is organized in relational databases.
|
||||
|
||||
Answer: **D.** Structured data in tables
|
||||
|
||||
### Question 3:
|
||||
|
||||
Which of the following is a key characteristic of relational databases?
|
||||
|
||||
**A.** Flexible schema
|
||||
|
||||
**B.** Document-based structure
|
||||
|
||||
**C.** Key-value pairs
|
||||
|
||||
**D.** Structured data in tables
|
||||
|
||||
Hint: Think about how data is organized in relational databases.
|
||||
|
||||
Answer: **D.** Structured data in tables
|
||||
```
|
||||
````
|
||||
@@ -0,0 +1,216 @@
|
||||
---
|
||||
title: Templates
|
||||
---
|
||||
|
||||
This page documents various templates we have found useful.
|
||||
|
||||
## DMCA Takedown
|
||||
|
||||
```md
|
||||
To whom it may concern:
|
||||
|
||||
We are writing to notify you of the copyright infringement and unlawful use of our copyrighted material that appear on the service for which you are the designated agent.
|
||||
|
||||
The infringing material, which we contend belong to us, includes our original visual assets.
|
||||
|
||||
The infringing material appears at the following location(s):
|
||||
|
||||
<url>
|
||||
|
||||
The original material is available at the following location(s):
|
||||
|
||||
<url>
|
||||
|
||||
This letter is the official notification under Section 512(c) of the Digital Millennium Copyright Act of 1998 ("DMCA") and we request the immediate removal of the aforementioned infringing materials from your servers.
|
||||
|
||||
We also request that you immediately notify the infringer of this notice and inform them to cease any further posting of the infringing material to your server in the future.
|
||||
|
||||
We are providing this notice in good faith and with the reasonable belief that we are the copyright holder of the material, and that the use of the described material in the manner complained is not authorised by us, our agents, or the law.
|
||||
|
||||
We swear, under penalty of perjury, that the information in this notification is accurate and that we are the owner of the copyrighted material involved.
|
||||
|
||||
If you have any questions, please feel free to reach out to us.
|
||||
```
|
||||
|
||||
## LinkedIn Cold Outreach Response
|
||||
|
||||
```md
|
||||
I would be more than happy to chat! Please fill out my meeting form so we can start the scheduling process!
|
||||
|
||||
https://forms.nhcarrigan.com/form/uUKZiJSDm6847iDOlpZkD5QF7cAjoTbTm0F4T0EdW0I
|
||||
```
|
||||
|
||||
## LinkedIn Post-Event Recommendation
|
||||
|
||||
```md
|
||||
I had the absolute pleasure of working with [Participant's Name] during our [event name], where [they] consistently impressed me with [their] dedication, technical growth, and collaborative spirit.
|
||||
|
||||
From the start, [Participant's Name] dove into the challenge with enthusiasm, applying [their] skills in [tech stack] to build real, impactful solutions. Whether working independently or as part of a team, [they] brought thoughtful ideas, clear communication, and a passion for learning that elevated everyone around [them].
|
||||
|
||||
The value of [Participant's Name]'s contributions are immeasurable. Throughout the event, they [explain loads of goals here].
|
||||
|
||||
By the end of the [event name], [Participant's Name] had delivered an outstanding project: [project name or brief description]. More than the final product, what stood out was [their] journey—embracing feedback, overcoming obstacles, and supporting others along the way.
|
||||
|
||||
I wholeheartedly recommend [Participant's Name] for any opportunity in tech. [They] bring not just technical ability, but the kind of energy and curiosity that makes any team stronger.
|
||||
```
|
||||
|
||||
## LinkedIn Mentorship Recommendation
|
||||
|
||||
```md
|
||||
I had the privilege of mentoring [Mentee's Name] through my 1:1 mentorship programme, and from our very first session, it was clear that [they] approached learning with curiosity, determination, and an eagerness to grow.
|
||||
|
||||
Over the course of the programme, [Mentee's Name] set clear goals and worked diligently toward them—building both technical skills in [specific tech stack, tools, or concepts] and the professional confidence to apply those skills in real-world scenarios. [They] embraced feedback, sought out challenges, and consistently demonstrated the resilience needed to push past obstacles.
|
||||
|
||||
What impressed me most was [their] commitment to personal and professional growth—not just in terms of technical ability, but also in communication, collaboration, and problem-solving. By the end of the mentorship, [Mentee's Name] had successfully delivered [describe final project or achievement], showing not only technical proficiency but also the ability to think critically and adapt to new situations.
|
||||
|
||||
I am confident that [Mentee's Name] will continue to excel in their career. They bring the kind of focus, curiosity, and dedication that make them a valuable asset to any team, and I am proud to have played a part in their journey.
|
||||
```
|
||||
|
||||
## Form Submission Declined Email
|
||||
|
||||
```md
|
||||
Hello,
|
||||
|
||||
Thank you for your submission to our <form> form.
|
||||
|
||||
We appreciate your interest in working with us. However, at this time we are not able to accept your submission.
|
||||
|
||||
Please note that due to the large volume of form submissions we process, we are unable to provide personalised feedback. Here are some common submission issues we see:
|
||||
|
||||
1. Low-effort Submission: Please ensure you are taking the time to provide detailed, well-thought responses. The more effort you put in, the more likely we will be able to accept it.
|
||||
2. Invalid Discord ID: Many of our submissions require you to provide your unique Discord ID - this is a 16 to 19 digit number that uniquely identifies your Discord account. If this is incorrect, we are unable to accept a submission. If you need help finding yours, please refer to https://dis.gd/findid
|
||||
3. Concerning Responses: If your responses to any of the form questions raise red flags, we decline your submission. Remember that you want to paint yourself in the best light here.
|
||||
|
||||
We encourage you to take the time to consider these common points of failure, and would welcome a resubmission from you at any time.
|
||||
|
||||
If you have any questions, please reach out in our Discord community: https://chat.nhcarrigan.com
|
||||
```
|
||||
|
||||
## Volunteer Application Rejection
|
||||
|
||||
```md
|
||||
Dear [Applicant’s Name],
|
||||
|
||||
Thank you so much for taking the time to apply for a volunteer role with NHCarrigan. We truly appreciate your interest in contributing your time and energy to our community.
|
||||
|
||||
After carefully reviewing your application, we’ve decided not to move forward with your candidacy for this volunteer position. Please don’t take this as a reflection of your value or potential—our selection process is highly competitive, and we often have to make very difficult decisions.
|
||||
|
||||
We still encourage you to stay engaged with our community spaces, events, and projects. There are always opportunities to connect, learn, and grow together, and we would love to see you continue to participate.
|
||||
|
||||
Thank you again for your interest and enthusiasm. We wish you the very best in all your endeavors and hope our paths cross again in the future.
|
||||
|
||||
Warm regards,
|
||||
Naomi Carrigan
|
||||
CEO, NHCarrigan
|
||||
```
|
||||
|
||||
## Meeting Request Confirmation
|
||||
|
||||
```md
|
||||
Hey <name>,
|
||||
|
||||
Thank you for reaching out to schedule a meeting! I am excited to connect with you and get to know who you are.
|
||||
|
||||
You may use this link to schedule a slot on my calendar: <linky>
|
||||
|
||||
It looks like we share the <CYC|fCC|both|neither> communities, so you may choose that as your meeting location if you wish.
|
||||
OR
|
||||
It does not look like we share any Discord communities, so you will need to select NHCarrigan Discord as your meeting location.
|
||||
|
||||
Please note that if you choose to meet in the NHCarrigan Discord, you will need to join our Discord community at https://chat.nhcarrigan.com in order to meet with us. When it is time for your scheduled meeting, you will need to join the "waiting-room" voice channel. We will drag you into our private voice chat when we are ready to chat with you.
|
||||
|
||||
If you have any questions, please do not hesitate to reach out to us.
|
||||
```
|
||||
|
||||
## Mentorship Application Acceptance
|
||||
|
||||
```md
|
||||
Hey <name>,
|
||||
|
||||
It is my pleasure to inform you that you have been selected to participate in our mentorship programme! We are excited to support you and watch you learn and grow!
|
||||
|
||||
In order to participate, you will need to join our Discord community at https://chat.nhcarrigan.com - then, ping Naomi in the general chat to request your mentorship role and access to the channels.
|
||||
|
||||
You will receive further instructions once you have been granted the role.
|
||||
|
||||
Keep an eye on the Discord community for announcements and opportunities to collaborate!
|
||||
|
||||
Congratulations again!
|
||||
```
|
||||
|
||||
## Discord Bot Donation Copy
|
||||
|
||||
These go in the bot SKUs:
|
||||
|
||||
### Subscription Name
|
||||
|
||||
```
|
||||
Sponsor Naomi
|
||||
```
|
||||
|
||||
### Subscription Description
|
||||
|
||||
```
|
||||
**How Your Support Makes a Difference**
|
||||
|
||||
1. Creating Free Software
|
||||
- Develop open-source tools accessible to everyone
|
||||
- Design Discord bots for community management and safe spaces
|
||||
- Create learning resources and accessibility-focused web applications
|
||||
|
||||
2. Building Inclusive Communities
|
||||
- Manage welcoming online spaces where diverse voices are celebrated
|
||||
- Organize virtual events, workshops, and mentorship programs
|
||||
- Implement inclusive community guidelines
|
||||
|
||||
3. Guiding Others in Tech
|
||||
- Provide mentorship to aspiring technologists from underrepresented groups
|
||||
- Create educational content (tutorials, blog posts, videos)
|
||||
- Offer career advice and emotional support
|
||||
|
||||
4. Your Contribution's Ripple Effect:
|
||||
- Challenges the status quo of the tech industry
|
||||
- Creates opportunities for underrepresented individuals in STEM
|
||||
- Fosters innovation through diverse perspectives
|
||||
- Builds a tech community that reflects and serves all of society
|
||||
|
||||
Every donation, regardless of size, contributes to this mission. Together, we're creating a more inclusive, accessible, and diverse future for technology.
|
||||
Thank you for considering a donation and being part of this important journey.
|
||||
```
|
||||
|
||||
### Benefit Name
|
||||
|
||||
```
|
||||
Your donation:
|
||||
```
|
||||
|
||||
### Benefit Description
|
||||
|
||||
```
|
||||
Helps a transfemme technology witch create free software, build inclusive communities, and guide others on their journey in tech.
|
||||
```
|
||||
|
||||
### Notes
|
||||
|
||||
- Use my avatar for subscription
|
||||
- Use pentatrans for benefit
|
||||
|
||||
## Discord Server Intro
|
||||
|
||||
```md
|
||||
Hello~! I'm Naomi, a 34 year old transfem software engineer and community manager based in Washington. All of my work (and therefore most of my life) is spent online, so I'm always looking for new spaces and people to vibe with. Remote work can feel dreadfully isolating, and this is my attempt to combat that feeling.
|
||||
|
||||
<insert bit about community here>
|
||||
```
|
||||
|
||||
## Guild Wars 2 Recruitment Ad
|
||||
|
||||
This has to be sent in two chat messages because of the length.
|
||||
|
||||
```
|
||||
Hiya friends~! Naomi's Newbies is a new guild that is really focused on helping newer players come to love the game, and supporting casual players who have busy schedules.
|
||||
```
|
||||
|
||||
```
|
||||
We have no activity requirement, no rep requirement, a Discord community, and more! If you are interested, please whisper me and I will gladly invite you!
|
||||
```
|
||||
@@ -0,0 +1,892 @@
|
||||
---
|
||||
title: Artists4Palestine Bot
|
||||
---
|
||||
|
||||
Artists4Palestine Bot (hereinafter the "Application") is a Discord bot designed to facilitate the Art for Palestine charity event. The Application serves as an automated bridge between Airtable, Trello, and Discord to manage art commission requests, artist assignments, delivery tracking, and support tickets for the charity event.
|
||||
|
||||
## 1. User Documentation
|
||||
|
||||
This section is for those interacting with a live instance of the Application.
|
||||
|
||||
### 1.1 Getting Started
|
||||
|
||||
The Art for Palestine Bot is available on the [Art for Palestine Discord server](https://discord.gg/kHNyb6Vyf8). Once you join the server, you will automatically be assigned the member role and can begin interacting with the bot's features.
|
||||
|
||||
### 1.2 Requesting Art Commissions
|
||||
|
||||
Art commission requests are submitted through an Airtable form (external to Discord). Once submitted, your request will automatically appear in the designated commission channel where artists can view and claim it. Your request should include:
|
||||
|
||||
- Your name
|
||||
- Preferred contact method (Email, Discord, or Twitter)
|
||||
- Your contact handle/username
|
||||
- Description of the art you would like drawn
|
||||
- Reference images (optional)
|
||||
- Any additional notes or requirements
|
||||
|
||||
### 1.3 Artist Features
|
||||
|
||||
#### 1.3.1 Claiming Art Commissions
|
||||
|
||||
As an artist, you can claim art commissions by reacting to commission posts in the art commission channel (ID: `1172568787330019340`).
|
||||
|
||||
**Important Notes:**
|
||||
- You can only claim up to 2 commissions at a time
|
||||
- Claiming a commission creates a private thread for coordination
|
||||
- The thread will include your mention and the requester's information
|
||||
|
||||
#### 1.3.2 Submitting Completed Artwork
|
||||
|
||||
Once you've completed the artwork:
|
||||
1. Post the completed artwork as an image attachment in the private thread
|
||||
2. The bot will automatically forward your submission to the distribution channel
|
||||
3. Your thread will be archived
|
||||
4. The commission will be removed from your active count
|
||||
|
||||
#### 1.3.3 Art Reminders
|
||||
|
||||
The bot sends automated reminders to help manage workload:
|
||||
- **Unclaimed Art Reminders**: Sent Monday, Wednesday, and Friday at 9:00 AM
|
||||
- **Unfinished Art Reminders**: Sent Saturday at 9:00 AM
|
||||
|
||||
### 1.4 Distribution Features
|
||||
|
||||
#### 1.4.1 Claiming Distributions
|
||||
|
||||
Distribution team members can claim distribution tasks by reacting to posts in the distribution channel (ID: `1173061747737903315`). Similar to art commissions:
|
||||
- Maximum 2 concurrent distributions per member
|
||||
- Creates a private coordination thread
|
||||
- Includes recipient and artwork details
|
||||
|
||||
#### 1.4.2 Confirming Deliveries
|
||||
|
||||
To confirm a distribution:
|
||||
1. Deliver the artwork to the recipient
|
||||
2. Post a confirmation image in the private thread
|
||||
3. The bot will close and archive the thread
|
||||
|
||||
#### 1.4.3 Distribution Reminders
|
||||
|
||||
- **Unclaimed Distribution Reminders**: Sent Monday, Wednesday, and Friday at 9:00 AM
|
||||
- **Unfinished Distribution Reminders**: Sent Saturday at 9:00 AM
|
||||
|
||||
### 1.5 Support Ticket System
|
||||
|
||||
#### 1.5.1 Opening a Ticket
|
||||
|
||||
Users can open support tickets using the ticket button in the designated ticket channel:
|
||||
1. Click the "Open Ticket" button
|
||||
2. Fill out the modal form with your issue description
|
||||
3. A private thread will be created for your ticket
|
||||
4. Support team members will be notified
|
||||
|
||||
#### 1.5.2 Ticket Workflow
|
||||
|
||||
- **For Users**: Describe your issue in the private thread and wait for a support team member to claim it
|
||||
- **For Support Team**: Click "Claim Ticket" to add your mention and take responsibility for the issue
|
||||
- Conversations in the ticket thread are automatically logged
|
||||
|
||||
#### 1.5.3 Closing Tickets
|
||||
|
||||
Support team members can close tickets using the "Close Ticket" button:
|
||||
- A log file of the entire conversation will be generated
|
||||
- The log is sent to the ticket archive channel
|
||||
- The thread is closed and archived
|
||||
|
||||
### 1.6 Moderation Commands
|
||||
|
||||
Moderation team members with the support role (ID: `1173582640843063366`) have access to these commands:
|
||||
|
||||
#### `!mute <user_id> <duration> <reason>`
|
||||
Temporarily timeout a user.
|
||||
|
||||
**Parameters:**
|
||||
- `user_id`: The Discord user ID to mute
|
||||
- `duration`: Duration with unit (e.g., `30m`, `2h`, `1d`)
|
||||
- Supported units: `s` (seconds), `m` (minutes), `h` (hours), `d` (days)
|
||||
- `reason`: Explanation for the timeout
|
||||
|
||||
**Example:**
|
||||
```
|
||||
!mute 123456789012345678 1h Spam in general channel
|
||||
```
|
||||
|
||||
#### `!unmute <user_id> <reason>`
|
||||
Remove a timeout from a user.
|
||||
|
||||
**Parameters:**
|
||||
- `user_id`: The Discord user ID to unmute
|
||||
- `reason`: Explanation for removing the timeout
|
||||
|
||||
**Example:**
|
||||
```
|
||||
!unmute 123456789012345678 Appeal accepted
|
||||
```
|
||||
|
||||
### 1.7 Palestine News Updates
|
||||
|
||||
The bot automatically fetches and posts news updates from Al Jazeera's Palestine live blog:
|
||||
- Updates are checked every 10 minutes
|
||||
- New articles are posted to the news channel
|
||||
- Prevents duplicate posts using article ID tracking
|
||||
|
||||
### 1.8 Getting Help
|
||||
|
||||
If you encounter issues or have questions:
|
||||
- Open a support ticket in the Discord server
|
||||
- Report bugs on [GitHub Issues](https://github.com/naomi-lgbt/nodejs-typescript-template/issues)
|
||||
- Contact via the [chat server](http://chat.nhcarrigan.com) or email at `contact@nhcarrigan.com`
|
||||
|
||||
---
|
||||
|
||||
## 2. Technical Documentation
|
||||
|
||||
This section is for those interested in running their own instance of the Application.
|
||||
|
||||
### 2.1 Prerequisites
|
||||
|
||||
Before running your own instance, ensure you have:
|
||||
|
||||
- **Node.js**: Version 22 (specified in `package.json`)
|
||||
- **pnpm**: Version 10 (package manager)
|
||||
- **Discord Bot Account**: With a bot token and appropriate permissions
|
||||
- **Airtable Account**: With API access
|
||||
- **Discord Webhooks**: Multiple webhooks configured for different channels
|
||||
|
||||
### 2.2 Required Discord Permissions
|
||||
|
||||
Your Discord bot requires the following Gateway Intents:
|
||||
- `GuildMessages`: Access to guild message events
|
||||
- `Guilds`: Access to guild/server data
|
||||
- `GuildMessageReactions`: Access to message reaction events
|
||||
- `MessageContent`: Privileged intent for full message content access
|
||||
- `GuildMembers`: Access to member data
|
||||
|
||||
### 2.3 Environment Configuration
|
||||
|
||||
Create a `.env` file in the project root with the following variables:
|
||||
|
||||
```env
|
||||
# Discord Bot Configuration
|
||||
TOKEN=your_discord_bot_token
|
||||
|
||||
# Discord Webhooks
|
||||
DEBUG=https://discord.com/api/webhooks/... # Debug/error logging
|
||||
COMM=https://discord.com/api/webhooks/... # Commission notifications
|
||||
DIST=https://discord.com/api/webhooks/... # Distribution notifications
|
||||
NEWS=https://discord.com/api/webhooks/... # Palestine news updates
|
||||
TICKET=https://discord.com/api/webhooks/... # Ticket logs
|
||||
|
||||
# Airtable Configuration
|
||||
AIRTABLE_KEY=your_airtable_api_key
|
||||
AIRTABLE_BASE_ID=your_base_id
|
||||
AIRTABLE_TABLE_ID=your_table_name
|
||||
|
||||
# Server Configuration (optional)
|
||||
NODE_ENV=production # Set to enable HTTPS server on port 10443
|
||||
```
|
||||
|
||||
### 2.4 Hardcoded Configuration
|
||||
|
||||
Several IDs are hardcoded in the `src/config/` directory and must be updated for your server:
|
||||
|
||||
**File: `src/config/Tickets.ts`**
|
||||
- `guildId`: Your Discord server ID
|
||||
- `supportRole`: Your support team role ID
|
||||
|
||||
**File: `src/config/Webhooks.ts`**
|
||||
- `artChannelId`: Channel for art commission posts
|
||||
- `distributionChannelId`: Channel for distribution posts
|
||||
|
||||
**File: `src/config/Trello.ts`**
|
||||
- Trello board, list, and label IDs (if using Trello integration)
|
||||
|
||||
### 2.5 Installation
|
||||
|
||||
1. Clone the repository:
|
||||
```bash
|
||||
git clone https://github.com/naomi-lgbt/nodejs-typescript-template.git
|
||||
cd nodejs-typescript-template
|
||||
```
|
||||
|
||||
2. Install dependencies:
|
||||
```bash
|
||||
pnpm install
|
||||
```
|
||||
|
||||
3. Configure environment variables (see section 2.3)
|
||||
|
||||
4. Build the TypeScript code:
|
||||
```bash
|
||||
pnpm build
|
||||
```
|
||||
|
||||
### 2.6 Running the Bot
|
||||
|
||||
Start the bot in production mode:
|
||||
```bash
|
||||
pnpm start
|
||||
```
|
||||
|
||||
This will:
|
||||
- Load environment variables from `.env`
|
||||
- Execute the compiled JavaScript from `prod/index.js`
|
||||
- Connect to Discord
|
||||
- Initialize event listeners and scheduled tasks
|
||||
- Start the HTTP server on port 10080 (HTTP) or 10443 (HTTPS if `NODE_ENV=production`)
|
||||
|
||||
### 2.7 Development Workflow
|
||||
|
||||
For development and testing:
|
||||
|
||||
**Linting:**
|
||||
```bash
|
||||
pnpm lint
|
||||
```
|
||||
Runs ESLint and Prettier to check code style and formatting.
|
||||
|
||||
**Testing:**
|
||||
```bash
|
||||
pnpm test
|
||||
```
|
||||
Runs Mocha test suite with TypeScript support (timeout: 10 seconds).
|
||||
|
||||
**Building:**
|
||||
```bash
|
||||
pnpm build
|
||||
```
|
||||
Compiles TypeScript files from `src/` to JavaScript in `prod/`.
|
||||
|
||||
### 2.8 Architecture Overview
|
||||
|
||||
#### 2.8.1 Project Structure
|
||||
|
||||
```
|
||||
a4p-bot/
|
||||
├── src/
|
||||
│ ├── index.ts # Main entry point, bot initialization
|
||||
│ ├── config/ # Configuration files (channels, webhooks, Trello)
|
||||
│ ├── events/ # Discord event handlers
|
||||
│ ├── modules/ # Core business logic
|
||||
│ │ ├── buttons/ # Button interaction handlers
|
||||
│ │ ├── messages/ # Message processing logic
|
||||
│ │ ├── modals/ # Modal form handlers
|
||||
│ │ └── reminders/ # Scheduled reminder tasks
|
||||
│ ├── interface/ # TypeScript interfaces and types
|
||||
│ ├── server/ # Express HTTP server
|
||||
│ └── utils/ # Utility functions
|
||||
├── prod/ # Compiled JavaScript output
|
||||
├── logs/ # Ticket conversation logs (runtime)
|
||||
└── .env # Environment variables (not committed)
|
||||
```
|
||||
|
||||
#### 2.8.2 Core Components
|
||||
|
||||
**Discord Bot (src/index.ts:1)**
|
||||
- Initializes Discord.js client with required intents
|
||||
- Registers event listeners for messages, reactions, interactions, and member joins
|
||||
- Creates webhook clients for different notification types
|
||||
- Starts HTTP server for monitoring
|
||||
|
||||
**Event Handlers (src/events/)**
|
||||
- `onReady.ts:1`: Initializes scheduled jobs, caches messages, sends startup notification
|
||||
- `onMessageCreate.ts:1`: Handles commands (!mute, !unmute) and ticket message logging
|
||||
- `onInteractionCreate.ts:1`: Routes button clicks and modal submissions
|
||||
- `onReactionAdd.ts:1`: Manages art commission and distribution claims
|
||||
- `onMemberAdd.ts:1`: Auto-assigns member role to new joiners
|
||||
|
||||
**Scheduled Tasks (node-schedule)**
|
||||
- Runs every 60 minutes: Check Airtable for new form submissions
|
||||
- Runs every 10 minutes: Fetch and post Palestine news updates
|
||||
- Monday/Wednesday/Friday 9 AM: Send unclaimed art and distribution reminders
|
||||
- Saturday 9 AM: Send unfinished art and distribution reminders
|
||||
|
||||
**Ticket System (src/modules/)**
|
||||
- `buttons/ticketOpen.ts:1`: Opens modal form for ticket creation
|
||||
- `modals/handleTicketModal.ts:1`: Creates private thread and initializes log file
|
||||
- `buttons/ticketClaim.ts:1`: Adds support member's mention to thread
|
||||
- `buttons/ticketClose.ts:1`: Generates log file, sends to archive, closes thread
|
||||
- `logTicketMessage.ts:1`: Appends messages to log file in real-time
|
||||
- `generateLogs.ts:1`: Reads log file and creates Discord attachment
|
||||
|
||||
**Airtable Integration (src/modules/checkAirtableRecords.ts:1)**
|
||||
- Polls Airtable API for new form submissions
|
||||
- Tracks latest record ID to avoid duplicate processing
|
||||
- Extracts form fields (name, contact info, request details, reference images)
|
||||
- Posts formatted messages to commission channel via webhook
|
||||
|
||||
**News Feed (src/utils/getNewsFeed.ts:1)**
|
||||
- Fetches latest articles from Al Jazeera Palestine live blog via GraphQL
|
||||
- Tracks last posted article ID to prevent duplicates
|
||||
- Sends new updates to news webhook channel
|
||||
|
||||
#### 2.8.3 Data Flow
|
||||
|
||||
```
|
||||
User Action (Discord) → Event Listener → Event Handler → Module Logic
|
||||
↓
|
||||
External API / Webhook Call
|
||||
↓
|
||||
Response/Notification
|
||||
↓
|
||||
Logging (Winston + Debug Webhook)
|
||||
```
|
||||
|
||||
```
|
||||
Scheduled Task → External API (Airtable/Al Jazeera) → Parse Response
|
||||
↓
|
||||
Send to Discord Webhook
|
||||
↓
|
||||
Update Cache/State
|
||||
```
|
||||
|
||||
### 2.9 Database
|
||||
|
||||
While Prisma ORM is installed as a dependency, the Application does not currently use a database. All state is managed in memory using cache objects attached to the extended Discord client:
|
||||
|
||||
- `bot.ticketLogs`: Maps channel IDs to log file message IDs
|
||||
- `bot.lastArticle`: Tracks the most recent news article ID
|
||||
|
||||
Ticket conversation logs are temporarily stored as text files in the `logs/` directory and deleted after being sent to the archive channel.
|
||||
|
||||
### 2.10 API Integrations
|
||||
|
||||
#### 2.10.1 Airtable REST API
|
||||
|
||||
**Endpoint:** `https://api.airtable.com/v0/{BASE_ID}/{TABLE_ID}`
|
||||
|
||||
**Method:** GET
|
||||
|
||||
**Headers:**
|
||||
```
|
||||
Authorization: Bearer {AIRTABLE_KEY}
|
||||
```
|
||||
|
||||
**Query Parameters:**
|
||||
- `maxRecords=100`: Limit results
|
||||
- `sort[0][field]=Created`: Sort by creation time
|
||||
- `sort[0][direction]=desc`: Newest first
|
||||
|
||||
**Response Structure (src/interface/AirtableResponse.ts:1):**
|
||||
```typescript
|
||||
{
|
||||
records: [{
|
||||
id: string;
|
||||
createdTime: string;
|
||||
fields: {
|
||||
Name: string;
|
||||
"Contact Method": "Email" | "Discord" | "Twitter";
|
||||
Handle: string;
|
||||
"What would you like us to draw?": string;
|
||||
"Anything Else?": string;
|
||||
Reference?: { url: string }[];
|
||||
}
|
||||
}]
|
||||
}
|
||||
```
|
||||
|
||||
#### 2.10.2 Al Jazeera GraphQL API
|
||||
|
||||
**Endpoint:** `https://www.aljazeera.com/graphql` (inferred from code)
|
||||
|
||||
**Operations:**
|
||||
- `SingleLiveBlogChildrensQuery`: Fetch live blog structure
|
||||
- `LiveBlogUpdateQuery`: Fetch latest blog updates
|
||||
|
||||
The bot extracts article content and posts to the news webhook channel.
|
||||
|
||||
### 2.11 HTTP Server
|
||||
|
||||
The Application includes a minimal Express server (src/server/serve.ts:1):
|
||||
|
||||
**Endpoints:**
|
||||
- `GET /` - Returns HTML landing page with project information
|
||||
|
||||
**Ports:**
|
||||
- HTTP: 10080 (default)
|
||||
- HTTPS: 10443 (when `NODE_ENV=production`)
|
||||
|
||||
Note: The server file includes a TODO comment suggesting deletion after Trello integration is complete.
|
||||
|
||||
### 2.12 Logging
|
||||
|
||||
The Application uses Winston for structured logging (src/utils/logHandler.ts:1):
|
||||
|
||||
**Log Levels:**
|
||||
- `info`: General information (bot startup, scheduled task execution)
|
||||
- `error`: Error conditions (API failures, Discord errors)
|
||||
|
||||
**Log Format:**
|
||||
```
|
||||
[TIMESTAMP] LEVEL: MESSAGE
|
||||
```
|
||||
|
||||
**Log Destinations:**
|
||||
- Console (stdout)
|
||||
- Debug webhook (errors only)
|
||||
|
||||
### 2.13 Error Handling
|
||||
|
||||
All errors are caught and:
|
||||
1. Logged to console via Winston
|
||||
2. Sent to the debug webhook with error details
|
||||
3. Presented to users with friendly messages (when applicable)
|
||||
|
||||
Example error flow (src/modules/checkAirtableRecords.ts):
|
||||
```typescript
|
||||
try {
|
||||
// API call
|
||||
} catch (error) {
|
||||
logHandler.error("Error message", error);
|
||||
debugHook.send({ content: "Error details" });
|
||||
}
|
||||
```
|
||||
|
||||
### 2.14 Performance Considerations
|
||||
|
||||
- **Message Caching**: Fetches messages in batches of 100 to reduce API calls
|
||||
- **Duplicate Prevention**: Tracks latest Airtable record ID and news article ID
|
||||
- **Rate Limiting**:
|
||||
- Airtable: 60-minute polling interval
|
||||
- News API: 10-minute polling interval
|
||||
- **Concurrent Limits**: Artists/distributors limited to 2 active tasks each
|
||||
|
||||
### 2.15 Security Considerations
|
||||
|
||||
- **Environment Variables**: Sensitive tokens stored in `.env` (not committed)
|
||||
- **Role Verification**: Commands require support role for execution (src/events/onMessageCreate.ts:1)
|
||||
- **Webhook Validation**: Checks webhook existence before use (src/utils/isValidWebhook.ts:1)
|
||||
- **Privileged Intents**: Requires approval from Discord for `MessageContent` intent
|
||||
|
||||
### 2.16 Troubleshooting
|
||||
|
||||
**Bot doesn't start:**
|
||||
- Verify `TOKEN` is valid in `.env`
|
||||
- Check Node.js version is 22
|
||||
- Ensure all dependencies are installed: `pnpm install`
|
||||
|
||||
**Webhooks not working:**
|
||||
- Verify webhook URLs are valid and accessible
|
||||
- Check webhook permissions in Discord channel settings
|
||||
- Use `isValidWebhook` utility for validation
|
||||
|
||||
**Airtable integration failing:**
|
||||
- Verify `AIRTABLE_KEY`, `AIRTABLE_BASE_ID`, and `AIRTABLE_TABLE_ID`
|
||||
- Check Airtable API permissions
|
||||
- Review Airtable API rate limits
|
||||
|
||||
**Scheduled tasks not running:**
|
||||
- Check server timezone matches expected cron schedule
|
||||
- Review `onReady.ts` for cron expression syntax
|
||||
- Check debug webhook for error messages
|
||||
|
||||
**Ticket logs not saving:**
|
||||
- Verify write permissions for `logs/` directory
|
||||
- Check disk space availability
|
||||
- Review console for Winston logging errors
|
||||
|
||||
---
|
||||
|
||||
## 3. Legal Documentation
|
||||
|
||||
This section is for expansions to our legal policies specific to the Application.
|
||||
|
||||
### 3.1 Terms of Service
|
||||
|
||||
The Application is subject to our global Terms of Service, which can be found at:
|
||||
|
||||
https://docs.nhcarrigan.com/#/terms
|
||||
|
||||
### 3.2 Privacy Policy
|
||||
|
||||
The Application's privacy practices are governed by our global Privacy Policy, which can be found at:
|
||||
|
||||
https://docs.nhcarrigan.com/#/privacy
|
||||
|
||||
#### 3.2.1 Data Collection
|
||||
|
||||
The Application collects and temporarily stores the following data:
|
||||
|
||||
**Discord Data:**
|
||||
- User IDs (for role assignment, moderation, and ticket management)
|
||||
- Message content in ticket threads (logged to text files)
|
||||
- Reaction events (for tracking commission/distribution claims)
|
||||
- Member join events (for auto-role assignment)
|
||||
|
||||
**Airtable Data:**
|
||||
- Form submission data (name, contact method, handle, art request details)
|
||||
- Reference images (URLs only)
|
||||
- Submission timestamps and record IDs
|
||||
|
||||
**Temporary Storage:**
|
||||
- Ticket conversation logs (stored as text files, deleted after archival)
|
||||
- In-memory cache for article IDs and ticket log mappings
|
||||
|
||||
**Data Retention:**
|
||||
- Ticket logs: Deleted immediately after being sent to the archive channel
|
||||
- Cached data: Cleared on bot restart
|
||||
- Airtable record IDs: Stored in memory to prevent duplicate processing
|
||||
|
||||
**Third-Party Services:**
|
||||
The Application integrates with:
|
||||
- Discord (message delivery and bot functionality)
|
||||
- Airtable (form submission retrieval)
|
||||
- Al Jazeera (public news feed)
|
||||
- Trello (configuration only, no active integration)
|
||||
|
||||
Users should review the privacy policies of these services for their data handling practices.
|
||||
|
||||
### 3.3 License
|
||||
|
||||
This software is licensed under our global software license:
|
||||
|
||||
https://docs.nhcarrigan.com/#/license
|
||||
|
||||
**Copyright:** Held by Naomi Carrigan
|
||||
|
||||
**License Type:** Proprietary (see link above for full terms)
|
||||
|
||||
### 3.4 Code of Conduct
|
||||
|
||||
All contributors and users must adhere to our Code of Conduct:
|
||||
|
||||
See: `CODE_OF_CONDUCT.md` in the repository root
|
||||
|
||||
### 3.5 Security Policy
|
||||
|
||||
Security vulnerabilities should be reported according to our Security Policy:
|
||||
|
||||
See: `SECURITY.md` in the repository root
|
||||
|
||||
For security concerns, please contact us through:
|
||||
- Chat Server: http://chat.nhcarrigan.com
|
||||
- Email: contact@nhcarrigan.com
|
||||
|
||||
### 3.6 Disclaimer
|
||||
|
||||
The Application is provided for the specific purpose of facilitating the Art for Palestine charity event. While we strive for reliability and accuracy, the Application is provided "as-is" without warranties of any kind.
|
||||
|
||||
**Moderation Actions:** The Application includes moderation features (mute/unmute). Server administrators and support team members are responsible for using these features in accordance with Discord's Terms of Service and Community Guidelines.
|
||||
|
||||
**External Content:** The Application fetches and displays news content from Al Jazeera. We do not control or endorse this content and are not responsible for its accuracy or appropriateness.
|
||||
|
||||
**Charity Event:** This Application is specifically designed for the Art for Palestine charity event. For questions about the event itself, please visit https://art4palestine.org or contact the event organizers.
|
||||
|
||||
---
|
||||
|
||||
## 4. Contributing Documentation
|
||||
|
||||
This section is for documentation related to contributing to the Application's codebase.
|
||||
|
||||
### 4.1 Contributing Guidelines
|
||||
|
||||
Our complete contributing guidelines can be found at:
|
||||
|
||||
https://docs.nhcarrigan.com/#/contributing
|
||||
|
||||
### 4.2 Getting Started with Development
|
||||
|
||||
1. **Fork the Repository**
|
||||
```bash
|
||||
# Visit GitHub and fork the repository to your account
|
||||
```
|
||||
|
||||
2. **Clone Your Fork**
|
||||
```bash
|
||||
git clone https://github.com/YOUR_USERNAME/nodejs-typescript-template.git
|
||||
cd nodejs-typescript-template
|
||||
```
|
||||
|
||||
3. **Install Dependencies**
|
||||
```bash
|
||||
pnpm install
|
||||
```
|
||||
|
||||
4. **Set Up Environment**
|
||||
- Create a `.env` file (see section 2.3)
|
||||
- Create a test Discord server and bot
|
||||
- Configure test webhooks
|
||||
|
||||
5. **Create a Branch**
|
||||
```bash
|
||||
git checkout -b feature/your-feature-name
|
||||
```
|
||||
|
||||
### 4.3 Code Style and Standards
|
||||
|
||||
The project enforces code style through automated tooling:
|
||||
|
||||
**ESLint Configuration:**
|
||||
- Extends `@nhcarrigan/eslint-config`
|
||||
- Maximum warnings allowed: 0 (all warnings treated as errors)
|
||||
- Checks both `src/` and `test/` directories
|
||||
|
||||
**Prettier Configuration:**
|
||||
- Extends `@nhcarrigan/prettier-config`
|
||||
- Enforces consistent formatting
|
||||
|
||||
**TypeScript Configuration:**
|
||||
- Extends `@nhcarrigan/typescript-config`
|
||||
- Strict type checking enabled
|
||||
- Root directory: `./src`
|
||||
- Output directory: `./prod`
|
||||
|
||||
**Running Linters:**
|
||||
```bash
|
||||
pnpm lint
|
||||
```
|
||||
|
||||
**Auto-Fixing Issues:**
|
||||
```bash
|
||||
# Fix ESLint issues
|
||||
npx eslint src test --fix
|
||||
|
||||
# Fix Prettier issues
|
||||
npx prettier src test --write
|
||||
```
|
||||
|
||||
### 4.4 Writing Tests
|
||||
|
||||
The project uses Mocha and Chai for testing:
|
||||
|
||||
**Test Structure:**
|
||||
- Test files: `test/**/*.spec.ts`
|
||||
- Test style: TDD (Test-Driven Development)
|
||||
- Timeout: 10 seconds per test
|
||||
- Type: TypeScript (via ts-mocha)
|
||||
|
||||
**Running Tests:**
|
||||
```bash
|
||||
pnpm test
|
||||
```
|
||||
|
||||
**Writing a Test:**
|
||||
```typescript
|
||||
import { expect } from "chai";
|
||||
import { suite, test } from "mocha";
|
||||
|
||||
suite("Feature Name", () => {
|
||||
test("should do something", () => {
|
||||
// Arrange
|
||||
const input = "test";
|
||||
|
||||
// Act
|
||||
const result = myFunction(input);
|
||||
|
||||
// Assert
|
||||
expect(result).to.equal("expected");
|
||||
});
|
||||
});
|
||||
```
|
||||
|
||||
### 4.5 Documentation Standards
|
||||
|
||||
**JSDoc Comments:**
|
||||
All functions, classes, and complex logic should include JSDoc comments:
|
||||
|
||||
```typescript
|
||||
/**
|
||||
* Brief description of the function.
|
||||
*
|
||||
* @param {Type} paramName - Parameter description
|
||||
* @returns {Type} Return value description
|
||||
*/
|
||||
function myFunction(paramName: Type): Type {
|
||||
// Implementation
|
||||
}
|
||||
```
|
||||
|
||||
**Inline Comments:**
|
||||
Use inline comments for complex logic:
|
||||
```typescript
|
||||
// Explanation of why this approach is used
|
||||
const result = complexOperation();
|
||||
```
|
||||
|
||||
**Commit Messages:**
|
||||
Follow conventional commit format:
|
||||
- `feat: Add new feature`
|
||||
- `fix: Resolve bug in ticket system`
|
||||
- `docs: Update README`
|
||||
- `chore: Update dependencies`
|
||||
- `refactor: Restructure event handlers`
|
||||
- `test: Add tests for webhook validation`
|
||||
|
||||
### 4.6 Pull Request Process
|
||||
|
||||
1. **Ensure All Checks Pass:**
|
||||
- Run `pnpm lint` (must pass with 0 warnings)
|
||||
- Run `pnpm test` (all tests must pass)
|
||||
- Run `pnpm build` (must compile without errors)
|
||||
|
||||
2. **Create Pull Request:**
|
||||
- Use a descriptive title
|
||||
- Provide detailed description of changes
|
||||
- Reference any related issues
|
||||
- Include screenshots/videos for UI changes
|
||||
|
||||
3. **Code Review:**
|
||||
- Address reviewer feedback
|
||||
- Make requested changes
|
||||
- Re-request review after updates
|
||||
|
||||
4. **Merge:**
|
||||
- Maintainers will merge approved PRs
|
||||
- Squash and merge is preferred for clean history
|
||||
|
||||
### 4.7 Areas for Contribution
|
||||
|
||||
The project welcomes contributions in these areas:
|
||||
|
||||
**Feature Enhancements:**
|
||||
- Trello integration completion (see TODO in `src/server/serve.ts`)
|
||||
- Database integration using Prisma (currently installed but unused)
|
||||
- Additional moderation commands
|
||||
- Enhanced reporting and analytics
|
||||
|
||||
**Bug Fixes:**
|
||||
- Report bugs via GitHub Issues
|
||||
- Include reproduction steps and environment details
|
||||
- PRs to fix bugs are highly appreciated
|
||||
|
||||
**Documentation:**
|
||||
- Improve code comments
|
||||
- Expand user guides
|
||||
- Add troubleshooting sections
|
||||
- Create video tutorials
|
||||
|
||||
**Testing:**
|
||||
- Increase test coverage
|
||||
- Add integration tests
|
||||
- Create test utilities
|
||||
|
||||
**Performance:**
|
||||
- Optimize message caching
|
||||
- Reduce webhook API calls
|
||||
- Improve scheduled task efficiency
|
||||
|
||||
### 4.8 Development Environment Setup
|
||||
|
||||
**Recommended Tools:**
|
||||
- **Editor:** VS Code (or any TypeScript-compatible editor)
|
||||
- **Extensions:**
|
||||
- ESLint
|
||||
- Prettier
|
||||
- TypeScript and JavaScript Language Features
|
||||
- **Node Version Manager:** nvm (for managing Node.js versions)
|
||||
- **Package Manager:** pnpm 10
|
||||
|
||||
**Discord Developer Portal Setup:**
|
||||
1. Create a new application at https://discord.com/developers/applications
|
||||
2. Create a bot user
|
||||
3. Enable required privileged intents: `Message Content`, `Server Members`
|
||||
4. Generate and save bot token
|
||||
5. Invite bot to test server with required permissions
|
||||
|
||||
**Webhook Setup:**
|
||||
1. Create test channels in your Discord server
|
||||
2. Go to channel settings → Integrations → Webhooks
|
||||
3. Create webhooks for: debug, comm, dist, news, ticket
|
||||
4. Copy webhook URLs to `.env`
|
||||
|
||||
### 4.9 Debugging
|
||||
|
||||
**Console Logging:**
|
||||
The project uses Winston for logging. To add debug logs:
|
||||
|
||||
```typescript
|
||||
import { logHandler } from "./utils/logHandler.js";
|
||||
|
||||
logHandler.info("Informational message");
|
||||
logHandler.error("Error message", error);
|
||||
```
|
||||
|
||||
**Discord Debug Webhook:**
|
||||
Error details are automatically sent to the debug webhook. Check this channel for runtime errors.
|
||||
|
||||
**VS Code Launch Configuration:**
|
||||
Create `.vscode/launch.json`:
|
||||
```json
|
||||
{
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{
|
||||
"type": "node",
|
||||
"request": "launch",
|
||||
"name": "Debug Bot",
|
||||
"runtimeArgs": ["-r", "dotenv/config"],
|
||||
"program": "${workspaceFolder}/prod/index.js",
|
||||
"preLaunchTask": "npm: build",
|
||||
"outFiles": ["${workspaceFolder}/prod/**/*.js"]
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### 4.10 Common Development Tasks
|
||||
|
||||
**Adding a New Command:**
|
||||
1. Add handler logic to `src/events/onMessageCreate.ts`
|
||||
2. Implement command functionality in `src/modules/`
|
||||
3. Update user documentation (section 1)
|
||||
4. Add tests in `test/`
|
||||
|
||||
**Adding a New Button:**
|
||||
1. Create button handler in `src/modules/buttons/`
|
||||
2. Export handler in button module
|
||||
3. Register handler in `src/events/onInteractionCreate.ts`
|
||||
4. Update user documentation
|
||||
|
||||
**Adding a New Event Listener:**
|
||||
1. Create event handler in `src/events/`
|
||||
2. Register listener in `src/index.ts`
|
||||
3. Add error handling
|
||||
4. Update technical documentation
|
||||
|
||||
**Modifying Configuration:**
|
||||
1. Update relevant file in `src/config/`
|
||||
2. Document changes in section 2.4
|
||||
3. Update environment variable documentation if needed
|
||||
|
||||
### 4.11 Release Process
|
||||
|
||||
(For maintainers)
|
||||
|
||||
1. **Version Bump:**
|
||||
- Update version in `package.json`
|
||||
- Follow semantic versioning (MAJOR.MINOR.PATCH)
|
||||
|
||||
2. **Changelog:**
|
||||
- Document all changes since last release
|
||||
- Include breaking changes, features, and bug fixes
|
||||
|
||||
3. **Testing:**
|
||||
- Run full test suite
|
||||
- Test in staging environment
|
||||
- Verify all integrations work
|
||||
|
||||
4. **Deployment:**
|
||||
- Build production bundle: `pnpm build`
|
||||
- Deploy to production server
|
||||
- Monitor logs for issues
|
||||
|
||||
5. **Tag Release:**
|
||||
```bash
|
||||
git tag -a v2.0.0 -m "Release version 2.0.0"
|
||||
git push origin v2.0.0
|
||||
```
|
||||
|
||||
### 4.12 Contact for Contributors
|
||||
|
||||
If you have questions about contributing:
|
||||
|
||||
- **GitHub Issues:** https://github.com/naomi-lgbt/nodejs-typescript-template/issues
|
||||
- **Chat Server:** http://chat.nhcarrigan.com
|
||||
- **Email:** contact@nhcarrigan.com
|
||||
|
||||
We review pull requests as soon as possible and appreciate all contributions to the project.
|
||||
|
||||
---
|
||||
|
||||
**Document Version:** 1.0.0
|
||||
**Last Updated:** 2025-10-29
|
||||
**Maintained By:** Naomi Carrigan
|
||||
@@ -0,0 +1,38 @@
|
||||
---
|
||||
title: Aeris
|
||||
---
|
||||
|
||||
Aeris (hereinafter the "Application") is an authentication service featuring magic links and support for multiple social media platforms
|
||||
|
||||
## 1. User Documentation
|
||||
|
||||
:::note
|
||||
This section is coming soon!
|
||||
:::
|
||||
|
||||
This section is for those interacting with a live instance of the Application.
|
||||
|
||||
## 2. Technical Documentation
|
||||
|
||||
:::note
|
||||
This section is coming soon!
|
||||
:::
|
||||
|
||||
This section is for those interested in running their own instance of the Application.
|
||||
|
||||
## 3. Legal Documentation
|
||||
|
||||
:::note
|
||||
This section is coming soon!
|
||||
:::
|
||||
|
||||
This section is for expansions to our legal policies specific to the Application.
|
||||
|
||||
## 4. Contributing Documentation
|
||||
|
||||
:::note
|
||||
This section is coming soon!
|
||||
:::
|
||||
|
||||
This section is for documentation related to contributing to the Application's codebase.
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
---
|
||||
title: Alouette
|
||||
---
|
||||
|
||||
Alouette (hereinafter the "Application") is a web server that allows you to set up arbitrary webhooks and format them to post on Discord.
|
||||
|
||||
## 1. User Documentation
|
||||
|
||||
:::note
|
||||
This section is coming soon!
|
||||
:::
|
||||
|
||||
This section is for those interacting with a live instance of the Application.
|
||||
|
||||
## 2. Technical Documentation
|
||||
|
||||
:::note
|
||||
This section is coming soon!
|
||||
:::
|
||||
|
||||
This section is for those interested in running their own instance of the Application.
|
||||
|
||||
## 3. Legal Documentation
|
||||
|
||||
:::note
|
||||
This section is coming soon!
|
||||
:::
|
||||
|
||||
This section is for expansions to our legal policies specific to the Application.
|
||||
|
||||
## 4. Contributing Documentation
|
||||
|
||||
:::note
|
||||
This section is coming soon!
|
||||
:::
|
||||
|
||||
This section is for documentation related to contributing to the Application's codebase.
|
||||
|
||||
@@ -0,0 +1,222 @@
|
||||
---
|
||||
title: Altaria
|
||||
---
|
||||
|
||||
Altaria (hereinafter the "Application") is a Discord bot that provides gentle reminders to users when they upload images without alt-text descriptions, promoting accessibility and inclusion within Discord communities.
|
||||
|
||||
## 1. User Documentation
|
||||
|
||||
This section is for those interacting with a live instance of the Application.
|
||||
|
||||
### What is Altaria?
|
||||
|
||||
Altaria is a friendly Discord bot designed to encourage the use of alt-text (alternative text) for images in Discord servers. Alt-text helps make content accessible to users who rely on screen readers and assistive technologies.
|
||||
|
||||
### How to Add Altaria to Your Server
|
||||
|
||||
1. Use the official invitation link: [Add to Discord](https://discord.com/oauth2/authorize?client_id=1405356559214837860)
|
||||
2. Select your server from the dropdown menu
|
||||
3. Grant the necessary permissions:
|
||||
- Read Messages/View Channels
|
||||
- Send Messages
|
||||
- Use Slash Commands
|
||||
|
||||
### How Altaria Works
|
||||
|
||||
- **Automatic Monitoring**: Altaria monitors messages in channels where it has permissions
|
||||
- **Image Detection**: When someone posts an image without alt-text, Altaria detects it automatically
|
||||
- **Gentle Reminders**: The bot responds with one of 100 carefully crafted, encouraging messages
|
||||
- **Educational Links**: Each reminder includes helpful resources about adding alt-text and writing descriptions
|
||||
|
||||
### Using Slash Commands
|
||||
|
||||
Altaria supports slash commands that provide information about the bot:
|
||||
- Type `/` and select an Altaria command to learn more about the bot's features and purpose
|
||||
|
||||
### Reminder Message Categories
|
||||
|
||||
Altaria's reminders fall into five themed categories:
|
||||
1. **Gentle Encouragement** (20 messages) - Soft, supportive reminders
|
||||
2. **Playful/Cute** (20 messages) - Fun, anime-inspired messages with emoticons
|
||||
3. **Educational** (20 messages) - Informative content about accessibility
|
||||
4. **Community Vibes** (20 messages) - Emphasizing collective responsibility
|
||||
5. **Thematic/Fantasy** (20 messages) - Creative, story-driven reminders
|
||||
|
||||
### Getting Help
|
||||
|
||||
If you need assistance:
|
||||
- Join the support server: [Discord Server](https://chat.nhcarrigan.com)
|
||||
- Review Discord's guide: [How to add alt-text](https://support.discord.com/hc/en-us/articles/211866427-How-do-I-upload-images-and-GIFs)
|
||||
- Use Cordelia for AI-generated descriptions: [Cordelia](https://cordelia.nhcarrigan.com)
|
||||
|
||||
## 2. Technical Documentation
|
||||
|
||||
This section is for those interested in running their own instance of the Application.
|
||||
|
||||
### Architecture Overview
|
||||
|
||||
Altaria is built using:
|
||||
- **Node.js** with TypeScript
|
||||
- **Discord.js** v14.21.0 for Discord API interaction
|
||||
- **Fastify** v5.5.0 for the web server
|
||||
- **@nhcarrigan/logger** for structured logging
|
||||
|
||||
### Project Structure
|
||||
|
||||
```
|
||||
src/
|
||||
├── index.ts # Main application entry point
|
||||
├── modules/
|
||||
│ └── checkAltText.ts # Core alt-text detection logic
|
||||
├── config/
|
||||
│ ├── blocks.ts # Discord UI blocks configuration
|
||||
│ └── reminders.ts # Collection of reminder messages
|
||||
├── utils/
|
||||
│ ├── errorHandler.ts # Error handling utilities
|
||||
│ ├── logger.ts # Logger configuration
|
||||
│ └── getRandomValue.ts # Random selection utility
|
||||
└── server/
|
||||
└── serve.ts # Web server for health checks
|
||||
```
|
||||
|
||||
### Core Functionality
|
||||
|
||||
#### Alt-Text Detection (`src/modules/checkAltText.ts:16`)
|
||||
- Filters messages for image attachments
|
||||
- Identifies images without descriptions
|
||||
- Sends randomized gentle reminders with educational resources
|
||||
|
||||
#### Random Reminder Selection (`src/utils/getRandomValue.ts:15`)
|
||||
- Securely selects random messages using Node.js crypto module
|
||||
- Ensures variety in user experience
|
||||
|
||||
#### Web Server (`src/server/serve.ts:54`)
|
||||
- Provides health monitoring endpoint on port 6022
|
||||
- Serves informational landing page with bot details
|
||||
|
||||
### Installation Requirements
|
||||
|
||||
- Node.js (compatible with ES modules)
|
||||
- pnpm package manager v10.14.0+
|
||||
- TypeScript 5.9.2+
|
||||
|
||||
### Environment Variables
|
||||
|
||||
- `BOT_TOKEN`: Discord bot token (required)
|
||||
- `LOG_TOKEN`: Logging service token (optional)
|
||||
|
||||
### Development Setup
|
||||
|
||||
1. Clone the repository
|
||||
2. Install dependencies: `pnpm install`
|
||||
3. Create environment file with required tokens
|
||||
4. Build: `pnpm run build`
|
||||
5. Start: `pnpm start`
|
||||
|
||||
### Deployment
|
||||
|
||||
- Production deployment uses 1Password CLI: `op run --env-file=./prod.env -- node prod/index.js`
|
||||
- Web server runs on port 6022 for health monitoring
|
||||
- Supports process monitoring and logging
|
||||
|
||||
### API Endpoints
|
||||
|
||||
- `GET /`: Landing page with bot information and invite link
|
||||
- Health check endpoint for monitoring services
|
||||
|
||||
## 3. Legal Documentation
|
||||
|
||||
This section is for expansions to our legal policies specific to the Application.
|
||||
|
||||
### License
|
||||
|
||||
This software is licensed under Naomi's Public License. Full details available at: https://docs.nhcarrigan.com/#/license
|
||||
|
||||
### Copyright
|
||||
|
||||
Copyright held by Naomi Carrigan (@nhcarrigan).
|
||||
|
||||
### Privacy Considerations
|
||||
|
||||
- Altaria only processes message content to detect image attachments
|
||||
- No message content or user data is stored permanently
|
||||
- Bot interactions are logged for debugging purposes only
|
||||
- Complies with Discord's Terms of Service and Developer Policy
|
||||
|
||||
### Data Processing
|
||||
|
||||
- **Message Scanning**: Bot analyses messages in real-time for image attachments
|
||||
- **Temporary Processing**: Message data is processed only for alt-text detection
|
||||
- **No Data Retention**: No user messages or personal data are stored
|
||||
- **Logging**: Error logs may contain anonymized debugging information
|
||||
|
||||
### Terms of Use
|
||||
|
||||
By adding Altaria to your Discord server, you agree to:
|
||||
- Allow the bot to read messages in authorized channels
|
||||
- Accept that the bot will send reminder messages about alt-text
|
||||
- Understand that the bot promotes accessibility and inclusion
|
||||
|
||||
## 4. Contributing Documentation
|
||||
|
||||
This section is for documentation related to contributing to the Application's codebase.
|
||||
|
||||
### Getting Started
|
||||
|
||||
1. Fork the repository on GitHub
|
||||
2. Clone your fork locally
|
||||
3. Install dependencies: `pnpm install`
|
||||
4. Read the [Contributing Guidelines](CONTRIBUTING.md)
|
||||
5. Review the [Code of Conduct](CODE_OF_CONDUCT.md)
|
||||
|
||||
### Development Workflow
|
||||
|
||||
1. Create a feature branch from `main`
|
||||
2. Make your changes following the coding standards
|
||||
3. Run linting: `pnpm run lint`
|
||||
4. Build the project: `pnpm run build`
|
||||
5. Test your changes thoroughly
|
||||
6. Submit a Pull Request
|
||||
|
||||
### Code Style Guidelines
|
||||
|
||||
- **TypeScript**: Strict typing enabled
|
||||
- **ESLint**: Uses `@nhcarrigan/eslint-config` with max 0 warnings
|
||||
- **Formatting**: Consistent code style enforced
|
||||
- **Comments**: JSDoc comments for functions and modules
|
||||
- **Error Handling**: Comprehensive error handling with UUID tracking
|
||||
|
||||
### Adding New Reminder Messages
|
||||
|
||||
To add new reminder messages to `src/config/reminders.ts:9`:
|
||||
|
||||
1. Choose an appropriate category (gentle, playful, educational, community, thematic)
|
||||
2. Follow the existing tone and length guidelines
|
||||
3. Include accessibility-focused messaging
|
||||
4. Test that messages display correctly in Discord
|
||||
5. Maintain the current array structure
|
||||
|
||||
### Testing Guidelines
|
||||
|
||||
- Test Discord interactions manually in a development server
|
||||
- Verify alt-text detection works for various image types
|
||||
- Ensure reminder messages display correctly
|
||||
- Test web server endpoints
|
||||
|
||||
### Submission Requirements
|
||||
|
||||
- All code must pass linting without warnings
|
||||
- Changes should include appropriate JSDoc documentation
|
||||
- Pull requests must include a clear description of changes
|
||||
- Follow existing patterns and conventions
|
||||
|
||||
### Contact for Contributors
|
||||
|
||||
- **Discord**: [Chat Server](https://chat.nhcarrigan.com)
|
||||
- **Forum**: [Discussion Forum](https://forum.nhcarrigan.com)
|
||||
- **Email**: contact@nhcarrigan.com
|
||||
- **Issues**: GitHub Issues for bug reports and feature requests
|
||||
|
||||
### Recognition
|
||||
|
||||
Contributors will be recognized in future releases and project documentation as appropriate.
|
||||
@@ -0,0 +1,441 @@
|
||||
---
|
||||
title: Amari
|
||||
---
|
||||
|
||||
Amari (hereinafter the "Application") is Naomi's Virtual Personal Assistant on Discord, designed to automate community management, content aggregation, mentorship program coordination, and integration with external services such as GitHub, RetroAchievements, and Baserow.
|
||||
|
||||
## 1. User Documentation
|
||||
|
||||
This section is for those interacting with a live instance of the Application.
|
||||
|
||||
### 1.1 Interacting with Amari
|
||||
|
||||
#### 1.1.1 Direct Messages
|
||||
|
||||
When you send a Direct Message to Amari, the bot will automatically forward your message to Naomi and respond with an acknowledgment. This provides a direct communication channel to reach Naomi through the bot.
|
||||
|
||||
Implementation: `src/modules/respondToDm.ts:19`
|
||||
|
||||
#### 1.1.2 Mentions
|
||||
|
||||
Amari monitors messages in the Discord server for mentions of "Naomi" or "@NHCarrigan" (user or role). When detected, the bot forwards the message to Naomi for review, helping ensure important messages are not missed. To prevent spam, Amari will not forward mentions from channels that have been active in the last 10 minutes.
|
||||
|
||||
Implementation: `src/modules/respondToMention.ts:20`
|
||||
|
||||
### 1.2 Mentorship Program
|
||||
|
||||
#### 1.2.1 Joining the Program
|
||||
|
||||
When you receive the Mentorship role, Amari will automatically send a welcome message in the mentee chat channel with onboarding instructions, including:
|
||||
- Accepting the GitHub repository invitation
|
||||
- Reading the mentorship wiki
|
||||
- Creating your initial goal post
|
||||
|
||||
Implementation: `src/modules/processMentorshipRole.ts:20`
|
||||
|
||||
#### 1.2.2 Forum Thread Management
|
||||
|
||||
Amari automatically manages thread tags in mentorship forums (Goals, Projects, Resume Reviews, and Discussions) to track whose turn it is to respond:
|
||||
- When Naomi responds to your thread, the tag changes to "Waiting on Member"
|
||||
- When you respond, the tag changes to "Waiting on Naomi"
|
||||
|
||||
Implementation: `src/modules/updateMentorshipThread.ts:43`
|
||||
|
||||
#### 1.2.3 Progress Reminders
|
||||
|
||||
Every weekday (Monday-Friday) at 9:00 AM, Amari posts progress reminders in configured channels. These reminders prompt you to share:
|
||||
1. What you accomplished yesterday
|
||||
2. What you're working on today
|
||||
3. Any blockers or issues you need help with
|
||||
|
||||
Implementation: `src/modules/postProgressReminders.ts:16`
|
||||
|
||||
### 1.3 Content and News
|
||||
|
||||
#### 1.3.1 Tech News Feed
|
||||
|
||||
Amari automatically posts new articles from two sources every hour:
|
||||
- **FreeCodeCamp News**: Articles are filtered for inappropriate content before posting
|
||||
- **Hacker News**: Latest posts with comment links
|
||||
|
||||
Implementation: `src/modules/postNews.ts:40` and `src/modules/postNews.ts:95`
|
||||
|
||||
#### 1.3.2 RetroAchievements
|
||||
|
||||
If Naomi unlocks any RetroAchievements, Amari posts them to the gaming channel every 10 minutes. These posts include:
|
||||
- Achievement title and description
|
||||
- Game title and console
|
||||
- Point value
|
||||
- Badge images
|
||||
|
||||
Implementation: `src/modules/checkAchievements.ts:87`
|
||||
|
||||
### 1.4 Form Submissions
|
||||
|
||||
When you submit a form through the Baserow system, Amari posts a notification to the form submissions channel. Supported forms include:
|
||||
- Sanction Appeals
|
||||
- Commission Requests
|
||||
- Contact Requests
|
||||
- Event Requests
|
||||
- Meeting Requests
|
||||
- Mentorship Requests
|
||||
- Staff Applications
|
||||
- Testimonials
|
||||
- ASCII Submissions
|
||||
- Contributor Applications
|
||||
- Guild Wars Officer/Leader Applications
|
||||
- Product and Community Feedback
|
||||
- Community Nominations
|
||||
|
||||
Implementation: `src/modules/processFormSubmission.ts:22` and `src/config/forms.ts:9`
|
||||
|
||||
## 2. Technical Documentation
|
||||
|
||||
This section is for those interested in running their own instance of the Application.
|
||||
|
||||
### 2.1 Prerequisites
|
||||
|
||||
- Node.js (compatible with the version specified in package.json)
|
||||
- pnpm 10.15.0 or higher
|
||||
- A Discord Bot Token
|
||||
- GitHub App credentials (Client ID and Private Key)
|
||||
- RetroAchievements API Key (optional, for achievements feature)
|
||||
- Baserow webhook secret (optional, for form submissions)
|
||||
|
||||
### 2.2 Environment Variables
|
||||
|
||||
The following environment variables must be configured:
|
||||
|
||||
| Variable | Required | Description |
|
||||
|----------|----------|-------------|
|
||||
| `BOT_TOKEN` | Yes | Discord bot token |
|
||||
| `GH_CLIENT_ID` | Yes | GitHub App client ID |
|
||||
| `GH_PRIVATE_KEY` | Yes | GitHub App private key (with newlines as `\\n`) |
|
||||
| `GH_WEBHOOK_SECRET` | No | Secret for validating GitHub webhook payloads |
|
||||
| `RA_KEY` | No | RetroAchievements API key |
|
||||
| `BASEROW_SECRET` | No | Secret for validating Baserow webhook payloads |
|
||||
|
||||
### 2.3 Installation
|
||||
|
||||
1. Clone the repository
|
||||
2. Install dependencies:
|
||||
```bash
|
||||
pnpm install
|
||||
```
|
||||
|
||||
3. Build the TypeScript code:
|
||||
```bash
|
||||
pnpm run build
|
||||
```
|
||||
|
||||
4. Configure environment variables (see section 2.2)
|
||||
|
||||
5. Start the application:
|
||||
```bash
|
||||
pnpm start
|
||||
```
|
||||
|
||||
Implementation: `src/index.ts:1`
|
||||
|
||||
### 2.4 Configuration
|
||||
|
||||
#### 2.4.1 Discord IDs
|
||||
|
||||
All Discord-specific IDs (channels, roles, users, guilds, tags) are configured in `src/config/ids.ts`. You will need to update these IDs to match your Discord server setup:
|
||||
|
||||
- **Channels**: Form submissions, gaming, general, mentee chat, forums, news
|
||||
- **Roles**: Mentorship, nhcarrigan, representing
|
||||
- **Users**: Amari (bot), Naomi, nhcarrigan
|
||||
- **Tags**: Forum tags for tracking thread status
|
||||
|
||||
Implementation: `src/config/ids.ts:7`
|
||||
|
||||
#### 2.4.2 Form IDs
|
||||
|
||||
Form submission notifications are configured in `src/config/forms.ts`. Map Baserow table IDs to human-readable form names.
|
||||
|
||||
Implementation: `src/config/forms.ts:9`
|
||||
|
||||
#### 2.4.3 Progress Reminders
|
||||
|
||||
Progress reminder channels are configured in `src/config/progressReminders.ts`. Configure which channels should receive reminders, associated role IDs, and whether to create threads.
|
||||
|
||||
Implementation: `src/config/progressReminders.ts:1`
|
||||
|
||||
#### 2.4.4 DM Response
|
||||
|
||||
The automatic response sent when users DM the bot is configured in `src/config/responses.ts`.
|
||||
|
||||
Implementation: `src/config/responses.ts:1`
|
||||
|
||||
### 2.5 Architecture
|
||||
|
||||
#### 2.5.1 Core Components
|
||||
|
||||
The Application consists of several key components:
|
||||
|
||||
1. **Discord Bot** (`discord.js`): Handles all Discord interactions
|
||||
2. **GitHub Integration** (`octokit`): Manages GitHub webhooks and API interactions
|
||||
3. **Web Server** (`fastify`): Receives webhooks and serves health monitoring page
|
||||
4. **Scheduled Jobs** (`node-schedule`): Executes periodic tasks (news, reminders, etc.)
|
||||
5. **Analytics** (`@nhcarrigan/discord-analytics`): Tracks bot usage metrics
|
||||
|
||||
Main entry point: `src/index.ts:1`
|
||||
|
||||
#### 2.5.2 Event Handlers
|
||||
|
||||
The bot responds to the following Discord events:
|
||||
|
||||
- `ClientReady`: Initialize scheduled jobs and cache data (src/index.ts:65)
|
||||
- `MessageCreate`: Handle guild messages and DMs (src/index.ts:89)
|
||||
- `InteractionCreate`: Handle button interactions (src/index.ts:97)
|
||||
- `UserUpdate`: Process guild tag changes (src/index.ts:117)
|
||||
- `GuildMemberUpdate`: Process mentorship role assignments (src/index.ts:121)
|
||||
- `GuildMemberAdd`: Log when mentees join (src/index.ts:125)
|
||||
- `GuildMemberRemove`: Log when mentees leave (src/index.ts:129)
|
||||
|
||||
#### 2.5.3 Scheduled Tasks
|
||||
|
||||
The following tasks run on a schedule:
|
||||
|
||||
- **Hourly** (0 * * * *): Post news from FreeCodeCamp and Hacker News
|
||||
- **Daily at Midnight** (0 0 * * *): Audit and cache guild tags
|
||||
- **Weekdays at 9 AM** (0 9 * * 1-5): Post progress reminders
|
||||
- **Every 10 minutes** (interval): Check RetroAchievements and clear recently active channels
|
||||
|
||||
Implementation: `src/index.ts:70-86`
|
||||
|
||||
#### 2.5.4 Web Server Endpoints
|
||||
|
||||
The Fastify web server provides the following endpoints:
|
||||
|
||||
- `GET /`: Health monitoring page with bot information
|
||||
- `POST /github`: Webhook endpoint for GitHub events (issues, pull requests)
|
||||
- `POST /form`: Webhook endpoint for Baserow form submissions
|
||||
|
||||
The server listens on port 7044.
|
||||
|
||||
Implementation: `src/server/serve.ts:61`
|
||||
|
||||
### 2.6 Content Filtering
|
||||
|
||||
FreeCodeCamp News posts are filtered for inappropriate content using a comprehensive regular expression that detects violations of the Code of Conduct. The regex is defined in `src/modules/postNews.ts:23` and checks for:
|
||||
|
||||
- Harassment, bullying, and discrimination
|
||||
- Hate speech and slurs
|
||||
- Explicit, violent, or illegal content
|
||||
- Spam, scams, and fraud
|
||||
- Drug-related content
|
||||
- Violence and illegal activities
|
||||
|
||||
Posts matching these patterns are automatically rejected and not posted to Discord.
|
||||
|
||||
### 2.7 GitHub Integration
|
||||
|
||||
When GitHub webhooks are received:
|
||||
|
||||
1. **New Issues** (`opened` action): Amari automatically assigns Naomi to the issue
|
||||
2. **New Pull Requests** (`opened` action): Amari automatically requests Naomi as a reviewer
|
||||
|
||||
Implementation: `src/modules/processGitHubEvent.ts:31`
|
||||
|
||||
### 2.8 Development
|
||||
|
||||
#### 2.8.1 Available Scripts
|
||||
|
||||
- `pnpm run build`: Compile TypeScript to JavaScript
|
||||
- `pnpm start`: Start the production server (uses 1Password for environment variables)
|
||||
- `pnpm run lint`: Run ESLint with zero warnings policy
|
||||
- `pnpm test`: Run tests (currently placeholder)
|
||||
|
||||
#### 2.8.2 Code Structure
|
||||
|
||||
```
|
||||
src/
|
||||
├── config/ # Configuration files (IDs, forms, responses, reminders)
|
||||
├── events/ # Discord event handlers
|
||||
├── interfaces/ # TypeScript interfaces
|
||||
├── modules/ # Core functionality modules
|
||||
├── server/ # Fastify web server
|
||||
├── utils/ # Utility functions
|
||||
└── index.ts # Application entry point
|
||||
```
|
||||
|
||||
#### 2.8.3 Dependencies
|
||||
|
||||
Key dependencies:
|
||||
- `discord.js` v14.22.0: Discord API wrapper
|
||||
- `fastify` v5.5.0: Web server framework
|
||||
- `octokit` v5.0.3: GitHub API client
|
||||
- `node-schedule` v2.1.1: Cron job scheduler
|
||||
- `rss-parser` v3.13.0: RSS feed parser
|
||||
- `@retroachievements/api` v2.6.0: RetroAchievements API client
|
||||
- `@nhcarrigan/discord-analytics` v0.0.6: Analytics tracking
|
||||
- `@nhcarrigan/logger` v1.1.1: Logging utility
|
||||
|
||||
## 3. Legal Documentation
|
||||
|
||||
This section is for expansions to our legal policies specific to the Application.
|
||||
|
||||
### 3.1 License
|
||||
|
||||
This software is licensed under Naomi's Public License. The full license text is available in the `LICENSE.md` file in the repository root.
|
||||
|
||||
Copyright held by Naomi Carrigan.
|
||||
|
||||
### 3.2 Code of Conduct
|
||||
|
||||
All users interacting with the Application, whether through Discord or by contributing to the codebase, must adhere to the Code of Conduct defined in `CODE_OF_CONDUCT.md`.
|
||||
|
||||
### 3.3 Content Filtering
|
||||
|
||||
The Application implements automated content filtering for RSS feeds to ensure posted content complies with the community's Code of Conduct. While this filtering attempts to catch policy violations, it may not be perfect. Users should report any inappropriate content that bypasses the filters.
|
||||
|
||||
### 3.4 Data Collection
|
||||
|
||||
The Application collects the following data for operational purposes:
|
||||
|
||||
- Discord user IDs and message content (forwarded to Naomi for mentions/DMs)
|
||||
- GitHub usernames (for webhook processing)
|
||||
- Form submission data (row IDs and table identifiers)
|
||||
- Analytics metrics (event counts and associated metadata)
|
||||
|
||||
All data is processed in accordance with Naomi's privacy policies.
|
||||
|
||||
### 3.5 Third-Party Services
|
||||
|
||||
The Application integrates with several third-party services:
|
||||
|
||||
- **Discord**: Communication platform (Terms of Service apply)
|
||||
- **GitHub**: Code hosting and webhook integration (Terms of Service apply)
|
||||
- **RetroAchievements**: Gaming achievement tracking (Terms of Service apply)
|
||||
- **Baserow**: Form submission processing (Terms of Service apply)
|
||||
|
||||
Users of the Application are subject to the terms of service of these platforms.
|
||||
|
||||
## 4. Contributing Documentation
|
||||
|
||||
This section is for documentation related to contributing to the Application's codebase.
|
||||
|
||||
### 4.1 Getting Started
|
||||
|
||||
Before contributing, please:
|
||||
|
||||
1. Read the `CONTRIBUTING.md` file for contribution guidelines
|
||||
2. Review the `CODE_OF_CONDUCT.md` to understand community standards
|
||||
3. Familiarize yourself with the codebase structure (see section 2.8.2)
|
||||
|
||||
### 4.2 Development Setup
|
||||
|
||||
1. Fork the repository
|
||||
2. Clone your fork locally
|
||||
3. Install dependencies: `pnpm install`
|
||||
4. Create a feature branch: `git checkout -b feature/your-feature-name`
|
||||
5. Make your changes
|
||||
6. Run linting: `pnpm run lint`
|
||||
7. Build the project: `pnpm run build`
|
||||
8. Test your changes with a local instance
|
||||
|
||||
### 4.3 Code Standards
|
||||
|
||||
The project enforces the following standards:
|
||||
|
||||
- **TypeScript**: All code must be written in TypeScript
|
||||
- **ESLint**: Code must pass linting with zero warnings (`@nhcarrigan/eslint-config`)
|
||||
- **TypeScript Config**: Uses `@nhcarrigan/typescript-config`
|
||||
- **File Headers**: All files must include copyright header with license and author information
|
||||
|
||||
Example header:
|
||||
```typescript
|
||||
/**
|
||||
* @copyright NHCarrigan
|
||||
* @license Naomi's Public License
|
||||
* @author Naomi Carrigan
|
||||
*/
|
||||
```
|
||||
|
||||
### 4.4 Module Guidelines
|
||||
|
||||
When creating or modifying modules:
|
||||
|
||||
1. **Single Responsibility**: Each module should handle one specific feature
|
||||
2. **Error Handling**: Use try-catch blocks and log errors with the logger utility
|
||||
3. **Type Safety**: Define interfaces for all data structures
|
||||
4. **Documentation**: Include JSDoc comments for all exported functions
|
||||
5. **Testing**: Consider how your changes can be tested (when tests are implemented)
|
||||
|
||||
### 4.5 Adding New Features
|
||||
|
||||
When adding new features:
|
||||
|
||||
1. **Configuration**: Add any new IDs or configuration to appropriate config files
|
||||
2. **Interfaces**: Define TypeScript interfaces in the `src/interfaces/` directory
|
||||
3. **Modules**: Create new modules in `src/modules/` for self-contained functionality
|
||||
4. **Events**: Add event handlers in `src/events/` if needed
|
||||
5. **Server Routes**: Add new endpoints in `src/server/serve.ts` if needed
|
||||
6. **Documentation**: Update this documentation file to reflect new features
|
||||
|
||||
### 4.6 Submitting Changes
|
||||
|
||||
1. Commit your changes with descriptive commit messages
|
||||
2. Push to your fork
|
||||
3. Create a Pull Request to the main repository
|
||||
4. Amari will automatically request Naomi as a reviewer
|
||||
5. Address any review feedback
|
||||
6. Once approved, your changes will be merged
|
||||
|
||||
### 4.7 Key Files for Contributors
|
||||
|
||||
- `src/index.ts`: Main application entry point
|
||||
- `src/config/ids.ts`: Discord server IDs configuration
|
||||
- `src/interfaces/amari.ts`: Core application state interface
|
||||
- `src/server/serve.ts`: Web server and webhook handlers
|
||||
- `src/modules/`: Individual feature implementations
|
||||
- `package.json`: Dependencies and scripts
|
||||
|
||||
### 4.8 Common Tasks
|
||||
|
||||
#### Adding a New Form Type
|
||||
|
||||
1. Add the table ID and name to `src/config/forms.ts`
|
||||
2. The form notification will automatically work via `src/modules/processFormSubmission.ts`
|
||||
|
||||
#### Adding a New Scheduled Task
|
||||
|
||||
1. Add the schedule in `src/index.ts` within the `ClientReady` event handler
|
||||
2. Use `node-schedule` cron syntax
|
||||
3. Create a new module in `src/modules/` for the task logic
|
||||
|
||||
#### Adding a New Discord Event Handler
|
||||
|
||||
1. Create a handler module in `src/modules/` or `src/events/`
|
||||
2. Register the event listener in `src/index.ts`
|
||||
3. Use the `Amari` interface for accessing bot state
|
||||
|
||||
#### Modifying Webhook Endpoints
|
||||
|
||||
1. Update the route handler in `src/server/serve.ts`
|
||||
2. Define interfaces for payloads in `src/interfaces/`
|
||||
3. Ensure proper authentication checking with secrets
|
||||
|
||||
### 4.9 Support and Questions
|
||||
|
||||
If you have questions about contributing:
|
||||
|
||||
- Open a GitHub issue for bugs or feature requests
|
||||
- Join the Discord server at https://chat.nhcarrigan.com for discussions
|
||||
- Email contact@nhcarrigan.com for private inquiries
|
||||
|
||||
### 4.10 Analytics and Logging
|
||||
|
||||
The Application uses custom logging and analytics:
|
||||
|
||||
- **Logger**: Use `logger.log()`, `logger.error()`, `logger.metric()` from `src/utils/logger.ts`
|
||||
- **Metrics**: Log user actions with `logger.metric()` for analytics tracking
|
||||
- **Error Handling**: Always catch and log errors to help with debugging
|
||||
|
||||
Example:
|
||||
```typescript
|
||||
await logger.metric("processed_event", 1, { user: userId });
|
||||
await logger.error("module name", error);
|
||||
```
|
||||
@@ -0,0 +1,38 @@
|
||||
---
|
||||
title: Amirei
|
||||
---
|
||||
|
||||
Amirei (hereinafter the "Application") is a quick social link aggregator for 'link in bio' pages.
|
||||
|
||||
## 1. User Documentation
|
||||
|
||||
:::note
|
||||
This section is coming soon!
|
||||
:::
|
||||
|
||||
This section is for those interacting with a live instance of the Application.
|
||||
|
||||
## 2. Technical Documentation
|
||||
|
||||
:::note
|
||||
This section is coming soon!
|
||||
:::
|
||||
|
||||
This section is for those interested in running their own instance of the Application.
|
||||
|
||||
## 3. Legal Documentation
|
||||
|
||||
:::note
|
||||
This section is coming soon!
|
||||
:::
|
||||
|
||||
This section is for expansions to our legal policies specific to the Application.
|
||||
|
||||
## 4. Contributing Documentation
|
||||
|
||||
:::note
|
||||
This section is coming soon!
|
||||
:::
|
||||
|
||||
This section is for documentation related to contributing to the Application's codebase.
|
||||
|
||||
@@ -0,0 +1,319 @@
|
||||
---
|
||||
title: Aria Iuvo
|
||||
---
|
||||
|
||||
Aria Iuvo (hereinafter the "Application") is a Discord bot designed to provide seamless message translation capabilities using LibreTranslate. The bot allows users to translate Discord messages to their preferred language through an intuitive right-click context menu interface. Developed by NHCarrigan, Aria Iuvo supports over 25 languages and offers both free and premium functionality through Discord's subscription system.
|
||||
|
||||
## 1. User Documentation
|
||||
|
||||
This section is for those interacting with a live instance of the Application.
|
||||
|
||||
### Getting Started
|
||||
|
||||
To use Aria Iuvo, [add the bot to your Discord account](https://discord.com/oauth2/authorize?client_id=1338596130207957035) using the provided authorization link. The bot operates as a user-installable application, meaning it can be used across any Discord server or direct message where you have access.
|
||||
|
||||
### Core Features
|
||||
|
||||
#### Message Translation
|
||||
- **Context Menu Access**: Right-click on any message, select "Apps", then choose "Translate Message"
|
||||
- **Automatic Language Detection**: The bot automatically detects the source language of the message
|
||||
- **User Locale Targeting**: Messages are translated to your Discord interface language
|
||||
- **Confidence Reporting**: Translation results include the detection confidence percentage
|
||||
|
||||
#### About Command
|
||||
- Use the `/about` slash command to view bot information
|
||||
- Displays current version, commit hash, and helpful links
|
||||
- Available in 25+ languages matching your Discord locale
|
||||
|
||||
#### Premium Features
|
||||
- **Subscription Required**: Message translation requires an active premium subscription
|
||||
- **Subscription Management**: Use the premium button in bot responses to manage subscriptions
|
||||
|
||||
### Supported Languages
|
||||
|
||||
Aria Iuvo supports translation between the following languages:
|
||||
- English (en)
|
||||
- Spanish (es)
|
||||
- French (Français)
|
||||
- German (Deutsch)
|
||||
- Italian (Italiano)
|
||||
- Portuguese (pt)
|
||||
- Russian (Русский)
|
||||
- Chinese Simplified (zh)
|
||||
- Chinese Traditional (zt)
|
||||
- Japanese (日本語)
|
||||
- Korean (한국어)
|
||||
- Dutch (Nederlands)
|
||||
- Polish (Polski)
|
||||
- Czech (Čeština)
|
||||
- Danish (Dansk)
|
||||
- Swedish (Svenska)
|
||||
- Finnish (Suomi)
|
||||
- Greek (Ελληνικά)
|
||||
- Bulgarian (Български)
|
||||
- Romanian (Română)
|
||||
- Hungarian (Magyar)
|
||||
- Lithuanian (Lietuvių)
|
||||
- Ukrainian (Українська)
|
||||
- Turkish (Türkçe)
|
||||
- Thai (ไทย)
|
||||
- Hindi (हिन्दी)
|
||||
- Indonesian (Bahasa Indonesia)
|
||||
|
||||
### Error Handling
|
||||
|
||||
- **No Message Content**: The bot will notify you if the selected message contains no translatable text
|
||||
- **Unsupported Language**: If your locale isn't supported, you'll receive a notification
|
||||
- **Network Issues**: Connection problems are logged and users receive error notifications
|
||||
- **Rate Limiting**: The bot handles API rate limits gracefully
|
||||
|
||||
## 2. Technical Documentation
|
||||
|
||||
This section is for those interested in running their own instance of the Application.
|
||||
|
||||
### System Architecture
|
||||
|
||||
Aria Iuvo is built using modern TypeScript and Node.js technologies with the following key components:
|
||||
|
||||
#### Core Technologies
|
||||
- **Runtime**: Node.js with ES modules
|
||||
- **Language**: TypeScript with strict configuration
|
||||
- **Discord Library**: discord.js v14+
|
||||
- **Translation Service**: LibreTranslate API
|
||||
- **Web Framework**: Fastify (for health monitoring)
|
||||
- **Package Manager**: pnpm
|
||||
|
||||
#### Project Structure
|
||||
```
|
||||
src/
|
||||
├── index.ts # Main entry point and Discord client setup
|
||||
├── commands/ # Slash command definitions
|
||||
│ ├── about.ts # About command configuration
|
||||
│ └── translate.ts # Context menu command configuration
|
||||
├── modules/ # Core functionality implementations
|
||||
│ ├── about.ts # About command logic
|
||||
│ ├── translate.ts # Translation processing logic
|
||||
│ └── getLocale.ts # Locale resolution utilities
|
||||
├── config/ # Configuration files
|
||||
│ └── locales.ts # Supported locales and mappings
|
||||
├── i18n/ # Internationalization
|
||||
│ └── responses.ts # Localized response strings
|
||||
├── server/ # Web server components
|
||||
│ └── serve.ts # Health monitoring server
|
||||
└── utils/ # Utility functions
|
||||
├── i18n.ts # Translation utilities
|
||||
├── logger.ts # Logging functionality
|
||||
└── replyToError.ts # Error response handling
|
||||
```
|
||||
|
||||
### Environment Setup
|
||||
|
||||
#### Required Environment Variables
|
||||
```bash
|
||||
DISCORD_TOKEN=your_discord_bot_token
|
||||
TRANSLATE_TOKEN=your_libretranslate_api_key
|
||||
```
|
||||
|
||||
#### Installation Steps
|
||||
1. Clone the repository
|
||||
2. Install dependencies: `pnpm install`
|
||||
3. Configure environment variables
|
||||
4. Build the project: `pnpm run build`
|
||||
5. Start the application: `pnpm run start`
|
||||
|
||||
#### Development Workflow
|
||||
- **Linting**: `pnpm run lint` (ESLint with @nhcarrigan/eslint-config)
|
||||
- **Testing**: `pnpm run test` (Vitest with coverage)
|
||||
- **Building**: `pnpm run build` (TypeScript compilation)
|
||||
|
||||
### API Integration
|
||||
|
||||
#### LibreTranslate Service
|
||||
- **Detection Endpoint**: `https://trans.nhcarrigan.com/detect`
|
||||
- **Translation Endpoint**: `https://trans.nhcarrigan.com/translate`
|
||||
- **Authentication**: API key-based authentication
|
||||
- **Request Format**: URL-encoded form data
|
||||
|
||||
#### Discord Integration
|
||||
- **Application Type**: User-installable bot
|
||||
- **Interaction Types**: Message context menus, slash commands
|
||||
- **Permission Model**: Minimal intents required (no message content access)
|
||||
- **Premium Integration**: Discord's SKU-based subscription system
|
||||
|
||||
### Monitoring and Health Checks
|
||||
|
||||
#### Web Server
|
||||
- **Port**: 5001
|
||||
- **Endpoint**: `/` (serves HTML status page)
|
||||
- **Framework**: Fastify with logging disabled
|
||||
- **Purpose**: Health monitoring and basic bot information
|
||||
|
||||
#### Logging System
|
||||
- **Error Handling**: Comprehensive error logging with structured data
|
||||
- **Process Monitoring**: Unhandled rejection and exception tracking
|
||||
- **Subscription Events**: User subscription/unsubscription logging
|
||||
|
||||
### Deployment Considerations
|
||||
|
||||
#### Production Requirements
|
||||
- Node.js 22+ runtime environment
|
||||
- Access to LibreTranslate API service
|
||||
- Discord bot token with appropriate permissions
|
||||
- Environment variable management (1Password integration shown)
|
||||
|
||||
#### Scaling Considerations
|
||||
- Stateless design enables horizontal scaling
|
||||
- Rate limiting handled at API level
|
||||
- Minimal memory footprint due to no message caching
|
||||
|
||||
## 3. Legal Documentation
|
||||
|
||||
This section is for expansions to our legal policies specific to the Application.
|
||||
|
||||
### Licensing
|
||||
|
||||
Aria Iuvo is licensed under Naomi's Public License, as referenced in the global software license documentation available at [docs.nhcarrigan.com](https://docs.nhcarrigan.com/#/license).
|
||||
|
||||
### Data Handling
|
||||
|
||||
#### Message Processing
|
||||
- **Temporary Processing**: Messages are sent to LibreTranslate for translation only
|
||||
- **No Storage**: The bot does not store or cache message content
|
||||
- **Ephemeral Responses**: All bot responses are ephemeral (only visible to the requesting user)
|
||||
|
||||
#### User Data
|
||||
- **Minimal Collection**: Only Discord user IDs and locale preferences are processed
|
||||
- **Subscription Data**: Premium subscription status is managed through Discord's system
|
||||
- **No Personal Information**: No additional personal data is collected or stored
|
||||
|
||||
#### Third-Party Services
|
||||
- **LibreTranslate**: Message content is temporarily sent to LibreTranslate for processing
|
||||
- **Discord**: All interactions are governed by Discord's Terms of Service and Privacy Policy
|
||||
|
||||
### Copyright and Attribution
|
||||
|
||||
- **Copyright Holder**: Naomi Carrigan (nhcarrigan)
|
||||
- **Source Code**: Available at [git.nhcarrigan.com/nhcarrigan/aria-iuvo](https://git.nhcarrigan.com/nhcarrigan/aria-iuvo)
|
||||
- **Attribution**: Uses LibreTranslate for translation services
|
||||
|
||||
## 4. Contributing Documentation
|
||||
|
||||
This section is for documentation related to contributing to the Application's codebase.
|
||||
|
||||
### Development Environment
|
||||
|
||||
#### Prerequisites
|
||||
- Node.js 22 or higher
|
||||
- pnpm package manager
|
||||
- Git version control
|
||||
- TypeScript knowledge
|
||||
- Discord.js familiarity
|
||||
|
||||
#### Code Standards
|
||||
- **Linting**: ESLint with @nhcarrigan/eslint-config
|
||||
- **Type Safety**: Strict TypeScript configuration
|
||||
- **Testing**: Vitest with coverage requirements
|
||||
- **Documentation**: JSDoc comments for all public functions
|
||||
|
||||
### Contribution Workflow
|
||||
|
||||
#### Getting Started
|
||||
1. Fork the repository
|
||||
2. Create a feature branch from main
|
||||
3. Set up development environment
|
||||
4. Make your changes following code standards
|
||||
5. Run tests and linting
|
||||
6. Submit a pull request
|
||||
|
||||
#### Code Style Guidelines
|
||||
- **Naming Conventions**: camelCase for variables, PascalCase for types
|
||||
- **File Organization**: Logical separation by functionality
|
||||
- **Import Style**: ES modules with explicit extensions
|
||||
- **Error Handling**: Comprehensive try-catch blocks with logging
|
||||
|
||||
#### Internationalization (i18n)
|
||||
|
||||
##### Adding New Languages
|
||||
1. Add locale to `supportedLocales` array in `config/locales.ts`
|
||||
2. Add mapping if needed in `mappedLocales` object
|
||||
3. Add translations to `responses` object in `i18n/responses.ts`
|
||||
4. Update command localizations in `commands/` files
|
||||
|
||||
##### Translation Structure
|
||||
```typescript
|
||||
[Locale.NewLanguage]: {
|
||||
"button": {
|
||||
code: "Source Code Translation",
|
||||
support: "Help Translation",
|
||||
},
|
||||
"command-error": "Error message translation",
|
||||
"embed": {
|
||||
commit: "Commit translation",
|
||||
description: "Bot description translation",
|
||||
title: "About title translation",
|
||||
version: "Version translation",
|
||||
},
|
||||
"no-message-content": "No content message translation",
|
||||
"subscription-required": "Subscription required translation",
|
||||
"translation": "Translation format string",
|
||||
"unsupported-locale": "Unsupported locale translation",
|
||||
}
|
||||
```
|
||||
|
||||
### Testing Guidelines
|
||||
|
||||
#### Test Structure
|
||||
- **Unit Tests**: Located in `test/` directory
|
||||
- **Coverage Requirements**: Maintained through Vitest
|
||||
- **Locale Testing**: Verify i18n functionality
|
||||
- **Integration Testing**: Test Discord interaction flows
|
||||
|
||||
#### Running Tests
|
||||
```bash
|
||||
# Run all tests with coverage
|
||||
pnpm run test
|
||||
|
||||
# Run tests in watch mode (development)
|
||||
npx vitest --watch
|
||||
|
||||
# Check test coverage
|
||||
npx vitest run --coverage
|
||||
```
|
||||
|
||||
### Bug Reports and Feature Requests
|
||||
|
||||
#### Issue Templates
|
||||
- **Bug Reports**: Include steps to reproduce, expected vs actual behavior
|
||||
- **Feature Requests**: Describe use case, proposed implementation
|
||||
- **Translation Issues**: Specify locale and incorrect translation
|
||||
|
||||
#### Communication Channels
|
||||
- **Issues**: GitHub/Git repository issue tracker
|
||||
- **Support**: [chat.nhcarrigan.com](https://chat.nhcarrigan.com)
|
||||
- **Email**: contact@nhcarrigan.com
|
||||
|
||||
### Release Process
|
||||
|
||||
#### Version Management
|
||||
- **Semantic Versioning**: Following semver conventions
|
||||
- **Changelog**: Maintained for all releases
|
||||
- **Git Tags**: Version tags for release tracking
|
||||
|
||||
#### Deployment Pipeline
|
||||
- **Build Verification**: All tests must pass
|
||||
- **Linting Check**: No linting errors allowed
|
||||
- **Type Checking**: TypeScript compilation must succeed
|
||||
- **Manual Testing**: Discord integration verification
|
||||
|
||||
### Documentation Standards
|
||||
|
||||
#### Code Documentation
|
||||
- **JSDoc**: All public functions and complex logic
|
||||
- **README**: Project overview and quick start guide
|
||||
- **CONTRIBUTING**: Detailed contribution guidelines
|
||||
- **This Document**: Comprehensive application documentation
|
||||
|
||||
#### Maintenance
|
||||
- **Regular Updates**: Documentation updated with code changes
|
||||
- **Accuracy**: All examples and instructions verified
|
||||
- **Accessibility**: Clear language and structured formatting
|
||||
@@ -0,0 +1,38 @@
|
||||
---
|
||||
title: Aurelia
|
||||
---
|
||||
|
||||
Aurelia (hereinafter the "Application") is a blogging platform with markdown editor
|
||||
|
||||
## 1. User Documentation
|
||||
|
||||
:::note
|
||||
This section is coming soon!
|
||||
:::
|
||||
|
||||
This section is for those interacting with a live instance of the Application.
|
||||
|
||||
## 2. Technical Documentation
|
||||
|
||||
:::note
|
||||
This section is coming soon!
|
||||
:::
|
||||
|
||||
This section is for those interested in running their own instance of the Application.
|
||||
|
||||
## 3. Legal Documentation
|
||||
|
||||
:::note
|
||||
This section is coming soon!
|
||||
:::
|
||||
|
||||
This section is for expansions to our legal policies specific to the Application.
|
||||
|
||||
## 4. Contributing Documentation
|
||||
|
||||
:::note
|
||||
This section is coming soon!
|
||||
:::
|
||||
|
||||
This section is for documentation related to contributing to the Application's codebase.
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
---
|
||||
title: Aureline
|
||||
---
|
||||
|
||||
Aureline (hereinafter the "Application") is a web app that allows you to create/upload digital badges and certifications and grant them to users
|
||||
|
||||
## 1. User Documentation
|
||||
|
||||
:::note
|
||||
This section is coming soon!
|
||||
:::
|
||||
|
||||
This section is for those interacting with a live instance of the Application.
|
||||
|
||||
## 2. Technical Documentation
|
||||
|
||||
:::note
|
||||
This section is coming soon!
|
||||
:::
|
||||
|
||||
This section is for those interested in running their own instance of the Application.
|
||||
|
||||
## 3. Legal Documentation
|
||||
|
||||
:::note
|
||||
This section is coming soon!
|
||||
:::
|
||||
|
||||
This section is for expansions to our legal policies specific to the Application.
|
||||
|
||||
## 4. Contributing Documentation
|
||||
|
||||
:::note
|
||||
This section is coming soon!
|
||||
:::
|
||||
|
||||
This section is for documentation related to contributing to the Application's codebase.
|
||||
|
||||
@@ -0,0 +1,212 @@
|
||||
---
|
||||
title: Becca Lyria
|
||||
---
|
||||
|
||||
Becca Lyria (hereinafter the "Application") is an AI-powered Discord bot that provides an interactive text-based role-playing game experience through direct messages. The bot utilizes Anthropic's Claude AI to create dynamic, personalized RPG adventures for users.
|
||||
|
||||
## 1. User Documentation
|
||||
|
||||
This section is for those interacting with a live instance of the Application.
|
||||
|
||||
### Overview
|
||||
|
||||
Becca Lyria is a user-installable Discord bot that transforms your DMs into an immersive text-based RPG experience. Acting as a wise mage named Becca with a cold and calculating personality, the bot serves as your personal dungeon master, weaving interactive stories that adapt to your choices and actions.
|
||||
|
||||
### Getting Started
|
||||
|
||||
1. **Installation**: [Add Becca Lyria to your Discord account](https://discord.com/oauth2/authorize?client_id=1343341112437248041)
|
||||
2. **Subscription**: The bot requires an active subscription to use its features
|
||||
3. **Start Playing**: Use the `/start` command to begin your adventure
|
||||
|
||||
### Available Commands
|
||||
|
||||
- **`/start`** - Start a new RPG scenario. Becca will create a fresh adventure and send it to your DMs
|
||||
- **`/about`** - Learn more about the bot, including version information and useful links
|
||||
- **`/clear`** - Clear your current adventure history to start fresh
|
||||
|
||||
### How to Play
|
||||
|
||||
1. Send Becca a `/start` command to begin a new adventure
|
||||
2. Once the story begins in your DMs, simply respond naturally to continue the narrative
|
||||
3. The bot maintains conversation history (up to 20 messages) to provide context-aware responses
|
||||
4. Use `/clear` to reset your adventure history when you want to start over
|
||||
5. The bot supports free-form text adventures - you can attempt any action you can imagine
|
||||
|
||||
### Features
|
||||
|
||||
- **AI-Powered Storytelling**: Powered by Claude 3.5 Sonnet for rich, dynamic narratives
|
||||
- **Conversation Memory**: Maintains context from recent messages for coherent storytelling
|
||||
- **Free-Form Gameplay**: No restrictive multiple choice options - express your actions naturally
|
||||
- **Personalized Experience**: The bot adapts to your playstyle and incorporates your Discord display name
|
||||
- **Privacy-Focused**: All gameplay happens in private DMs
|
||||
|
||||
### Subscription Model
|
||||
|
||||
Becca Lyria operates on a premium subscription model through Discord's monetization system. Users must have an active subscription to access the bot's RPG features.
|
||||
|
||||
## 2. Technical Documentation
|
||||
|
||||
This section is for those interested in running their own instance of the Application.
|
||||
|
||||
### Architecture Overview
|
||||
|
||||
Becca Lyria is built as a modern Discord bot using TypeScript and several key technologies:
|
||||
|
||||
**Core Technologies:**
|
||||
- **Node.js/TypeScript**: Main runtime and development language
|
||||
- **Discord.js**: Discord API interaction library
|
||||
- **Anthropic SDK**: Integration with Claude AI models
|
||||
- **Fastify**: Web server for health monitoring
|
||||
- **PNPM**: Package management
|
||||
|
||||
**AI Integration:**
|
||||
- **Provider**: Anthropic Claude (claude-3-5-sonnet-latest for conversations, claude-sonnet-4-20250514 for story starts)
|
||||
- **Context Management**: Maintains up to 20 messages of conversation history
|
||||
- **Personality System**: Configurable personality traits for consistent character behavior
|
||||
|
||||
### Project Structure
|
||||
|
||||
```
|
||||
src/
|
||||
├── index.ts # Main entry point and Discord client setup
|
||||
├── commands/ # Slash command definitions
|
||||
│ ├── about.ts
|
||||
│ ├── clear.ts
|
||||
│ └── start.ts
|
||||
├── config/
|
||||
│ └── personality.ts # AI personality configuration
|
||||
├── events/
|
||||
│ └── message.ts # Direct message event handling
|
||||
├── modules/ # Command implementation logic
|
||||
│ ├── about.ts
|
||||
│ ├── clear.ts
|
||||
│ └── start.ts
|
||||
├── server/
|
||||
│ └── serve.ts # Health monitoring web server
|
||||
└── utils/ # Utility functions
|
||||
├── ai.ts # Anthropic client configuration
|
||||
├── calculateCost.ts # Usage cost tracking
|
||||
├── isSubscribed.ts # Subscription verification
|
||||
├── logger.ts # Logging utility
|
||||
└── replyToError.ts # Error handling
|
||||
```
|
||||
|
||||
### Environment Variables
|
||||
|
||||
The application requires several environment variables:
|
||||
|
||||
- `DISCORD_TOKEN`: Discord bot token
|
||||
- `AI_TOKEN`: Anthropic API key
|
||||
- `LOG_TOKEN`: Logging service token (optional)
|
||||
|
||||
### Key Features Implementation
|
||||
|
||||
**Subscription System:**
|
||||
- Integrates with Discord's premium features
|
||||
- SKU ID: `1343347225698500744`
|
||||
- Entitlement checking for both interactions and messages
|
||||
- Special bypass for bot owner (ID: `465650873650118659`)
|
||||
|
||||
**Conversation Management:**
|
||||
- Fetches last 20 messages from DM channel
|
||||
- Supports history clearing with special `<Clear History>` marker
|
||||
- Converts message history to Anthropic's message format
|
||||
- Maintains role context (user vs assistant)
|
||||
|
||||
**Error Handling:**
|
||||
- Comprehensive error logging with custom logger
|
||||
- Graceful error responses to users
|
||||
- Unhandled rejection and exception catching
|
||||
|
||||
**Cost Tracking:**
|
||||
- Monitors AI usage with token counting
|
||||
- Calculates costs based on Anthropic pricing (input: $3/1M tokens, output: $15/1M tokens)
|
||||
- Logs usage statistics per user
|
||||
|
||||
### Development Setup
|
||||
|
||||
1. **Prerequisites**: Node.js, PNPM
|
||||
2. **Installation**: `pnpm install`
|
||||
3. **Build**: `pnpm run build`
|
||||
4. **Development**: Configure environment variables in `dev.env`
|
||||
5. **Production**: Configure environment variables in `prod.env`
|
||||
6. **Start**: `pnpm start` (requires 1Password CLI for env injection)
|
||||
|
||||
### Deployment Considerations
|
||||
|
||||
- Web server runs on port 5010 for health checks
|
||||
- Requires Discord bot permissions for DMs and message content
|
||||
- Needs stable Anthropic API access
|
||||
- Logging integration with nhcarrigan logging service
|
||||
|
||||
## 3. Legal Documentation
|
||||
|
||||
This section is for expansions to our legal policies specific to the Application.
|
||||
|
||||
### Data Processing
|
||||
|
||||
Your conversation history is transmitted to Anthropic AI for processing and response generation. The content of your messages may be retained by them for model improvement.
|
||||
|
||||
### Subscription Model
|
||||
Becca operates as a paid service with a $5/month subscription fee per Discord server. This subscription model ensures:
|
||||
- Sustainable development and maintenance
|
||||
- Priority support for subscribers
|
||||
- Regular feature updates and improvements
|
||||
- Infrastructure costs coverage
|
||||
|
||||
### Service Availability
|
||||
- Best-effort uptime with monitoring systems
|
||||
- Planned maintenance notifications
|
||||
- Support through designated Discord server
|
||||
- Community-driven feedback and feature requests
|
||||
|
||||
## 4. Contributing Documentation
|
||||
|
||||
This section is for documentation related to contributing to the Application's codebase.
|
||||
|
||||
### Development Standards
|
||||
|
||||
**Code Quality:**
|
||||
- TypeScript with strict configuration
|
||||
- ESLint with @nhcarrigan/eslint-config
|
||||
- Maximum function length limits enforced
|
||||
- Comprehensive JSDoc documentation required
|
||||
|
||||
**Testing:**
|
||||
- Vitest framework configured
|
||||
- Istanbul coverage reporting
|
||||
- Currently no tests implemented (placeholder exists)
|
||||
|
||||
**Licensing:**
|
||||
- Licensed under Naomi's Public License
|
||||
- Copyright held by Naomi Carrigan
|
||||
- See LICENSE.md for full terms
|
||||
|
||||
### Contribution Process
|
||||
|
||||
1. **Issues**: Report bugs and request features through GitHub issues
|
||||
2. **Pull Requests**: Fork, develop, and submit PRs for review
|
||||
3. **Code Review**: All changes require review before merging
|
||||
4. **Guidelines**: Follow established [contributing guidelines](CONTRIBUTING.md)
|
||||
5. **Conduct**: Adhere to [Code of Conduct](CODE_OF_CONDUCT.md)
|
||||
|
||||
### Development Workflow
|
||||
|
||||
**Commands:**
|
||||
- `pnpm run build`: Compile TypeScript to production JavaScript
|
||||
- `pnpm run lint`: Run ESLint with zero warnings tolerance
|
||||
- `pnpm run test`: Run test suite (currently placeholder)
|
||||
- `pnpm start`: Start production build with environment injection
|
||||
|
||||
**Architecture Patterns:**
|
||||
- Event-driven Discord bot architecture
|
||||
- Modular command system with separate definition and implementation
|
||||
- Utility-first approach for common functionality
|
||||
- Separation of concerns between commands, events, and business logic
|
||||
|
||||
### Contact Information
|
||||
|
||||
- **Chat Server**: [http://chat.nhcarrigan.com](http://chat.nhcarrigan.com)
|
||||
- **Email**: contact@nhcarrigan.com
|
||||
- **Source Code**: [https://git.nhcarrigan.com/nhcarrigan/becca-lyria](https://git.nhcarrigan.com/nhcarrigan/becca-lyria)
|
||||
- **Documentation**: [https://docs.nhcarrigan.com/](https://docs.nhcarrigan.com/)
|
||||
@@ -0,0 +1,95 @@
|
||||
---
|
||||
title: "Beccalia: Origins"
|
||||
---
|
||||
|
||||
Beccalia: Origins (hereinafter the "Game") is originally planned as the story of Becca and Rosalia growing up, this game was only released as a demo.
|
||||
|
||||
## 1. Player Documentation
|
||||
|
||||
This section is for players who are exploring or playing the Game.
|
||||
|
||||
### Controls
|
||||
|
||||
- **Keyboard / Gamepad:**
|
||||
- Arrow keys / D-Pad: Move character
|
||||
- Z / Enter / A: Confirm / Interact
|
||||
- X / Esc / B: Cancel / Menu
|
||||
- C / Space / Y: Open menu (if applicable)
|
||||
- Shift / L / R: Dash (if enabled)
|
||||
|
||||
- **Touch UI (Mobile / Tablet):**
|
||||
- Tap to move or interact
|
||||
- On-screen buttons for menu and actions
|
||||
|
||||
### Troubleshooting
|
||||
|
||||
- Ensure your device meets RPG Maker MZ requirements.
|
||||
- If the game crashes, try restarting the app or clearing temporary files.
|
||||
- Ask us on discord if persistent issues occur.
|
||||
|
||||
---
|
||||
|
||||
## 2. Developer Documentation
|
||||
|
||||
This section is for those interested in running, modifying, or extending the Game.
|
||||
|
||||
### Engine & Dependencies
|
||||
|
||||
- **Engine:** RPG Maker MZ
|
||||
- **Plugins Used:** none
|
||||
- **Assets:** All original
|
||||
|
||||
### Setup Instructions
|
||||
|
||||
1. Open RPG Maker MZ.
|
||||
2. Load the project folder `beccalia-origins`.
|
||||
3. Use the "Playtest" button to run the Game locally.
|
||||
4. To export, use the "Deployment" feature for target platforms.
|
||||
|
||||
### Directory Structure
|
||||
|
||||
- `data/` — database files (maps, events, actors, items, skills, etc.)
|
||||
- `img/` — graphics (characters, tilesets, animations, pictures, etc.)
|
||||
- `audio/` — music and sound effects
|
||||
- `js/` — plugins and core scripts
|
||||
- `www/` — exported HTML5 build (if deployed for web)
|
||||
|
||||
---
|
||||
|
||||
## 3. Legal Documentation
|
||||
|
||||
This section expands on legal or licensing information specific to the Game.
|
||||
|
||||
### Licensing
|
||||
|
||||
This Game is created using RPG Maker MZ. The game code and original content are the property of NHCarrigan. RPG Maker MZ runtime assets are licensed under the terms provided by KADOKAWA Corporation. All original graphics, music, and story content belong to NHCarrigan and are protected by copyright.
|
||||
|
||||
### Third-Party Notices
|
||||
|
||||
- Any third-party assets, music, or plugins included are credited in game.
|
||||
|
||||
## 4. Contributing Documentation
|
||||
|
||||
This section is for contributors or collaborators on the Game.
|
||||
|
||||
### How to Contribute
|
||||
|
||||
- Fork or copy the project folder.
|
||||
- Submit patches or mods via Git.
|
||||
|
||||
- Include a changelog and clear notes on modifications.
|
||||
|
||||
### Coding Standards
|
||||
|
||||
- Plugins in `js/plugins/` should follow standard JS conventions.
|
||||
- Comment custom scripts clearly for readability.
|
||||
|
||||
### Art & Audio Guidelines
|
||||
|
||||
- Maintain original resolutions where possible (48x48 tiles, etc.).
|
||||
- Use consistent naming for files in `img/` and `audio/`.
|
||||
|
||||
### Contact
|
||||
|
||||
- For collaboration or questions, ask us on discord.
|
||||
|
||||
@@ -0,0 +1,95 @@
|
||||
---
|
||||
title: "Beccalia: Prologue"
|
||||
---
|
||||
|
||||
Beccalia: Prologue (hereinafter the "Game") is an introductory story that sets the stage for the Beccalia universe, featuring Becca and Rosalia.
|
||||
|
||||
## 1. Player Documentation
|
||||
|
||||
This section is for players who are exploring or playing the Game.
|
||||
|
||||
### Controls
|
||||
|
||||
- **Keyboard / Gamepad:**
|
||||
- Arrow keys / D-Pad: Move character
|
||||
- Z / Enter / A: Confirm / Interact
|
||||
- X / Esc / B: Cancel / Menu
|
||||
- C / Space / Y: Open menu (if applicable)
|
||||
- Shift / L / R: Dash (if enabled)
|
||||
|
||||
- **Touch UI (Mobile / Tablet):**
|
||||
- Tap to move or interact
|
||||
- On-screen buttons for menu and actions
|
||||
|
||||
### Troubleshooting
|
||||
|
||||
- Ensure your device meets RPG Maker MZ requirements.
|
||||
- If the game crashes, try restarting the app or clearing temporary files.
|
||||
- Ask us on discord if persistent issues occur.
|
||||
|
||||
---
|
||||
|
||||
## 2. Developer Documentation
|
||||
|
||||
This section is for those interested in running, modifying, or extending the Game.
|
||||
|
||||
### Engine & Dependencies
|
||||
|
||||
- **Engine:** RPG Maker MZ
|
||||
- **Plugins Used:** none
|
||||
- **Assets:** All original
|
||||
|
||||
### Setup Instructions
|
||||
|
||||
1. Open RPG Maker MZ.
|
||||
2. Load the project folder `beccalia-prologue`.
|
||||
3. Use the "Playtest" button to run the Game locally.
|
||||
4. To export, use the "Deployment" feature for target platforms.
|
||||
|
||||
### Directory Structure
|
||||
|
||||
- `data/` — database files (maps, events, actors, items, skills, etc.)
|
||||
- `img/` — graphics (characters, tilesets, animations, pictures, etc.)
|
||||
- `audio/` — music and sound effects
|
||||
- `js/` — plugins and core scripts
|
||||
- `www/` — exported HTML5 build (if deployed for web)
|
||||
|
||||
---
|
||||
|
||||
## 3. Legal Documentation
|
||||
|
||||
This section expands on legal or licensing information specific to the Game.
|
||||
|
||||
### Licensing
|
||||
|
||||
This Game is created using RPG Maker MZ. The game code and original content are the property of NHCarrigan. RPG Maker MZ runtime assets are licensed under the terms provided by KADOKAWA Corporation. All original graphics, music, and story content belong to NHCarrigan and are protected by copyright.
|
||||
|
||||
### Third-Party Notices
|
||||
|
||||
- Any third-party assets, music, or plugins included are credited in game.
|
||||
|
||||
## 4. Contributing Documentation
|
||||
|
||||
This section is for contributors or collaborators on the Game.
|
||||
|
||||
### How to Contribute
|
||||
|
||||
- Fork or copy the project folder.
|
||||
- Submit patches or mods via Git.
|
||||
|
||||
- Include a changelog and clear notes on modifications.
|
||||
|
||||
### Coding Standards
|
||||
|
||||
- Plugins in `js/plugins/` should follow standard JS conventions.
|
||||
- Comment custom scripts clearly for readability.
|
||||
|
||||
### Art & Audio Guidelines
|
||||
|
||||
- Maintain original resolutions where possible (48x48 tiles, etc.).
|
||||
- Use consistent naming for files in `img/` and `audio/`.
|
||||
|
||||
### Contact
|
||||
|
||||
- For collaboration or questions, ask us on discord.
|
||||
|
||||
@@ -0,0 +1,144 @@
|
||||
---
|
||||
title: Naomi's Blog
|
||||
---
|
||||
|
||||
Naomi's Blog (hereinafter the "Application") is a personal blog platform built with Next.js that showcases the personal musings of a transfem software engineer. The Application serves markdown-based blog posts with a clean, accessible interface and focuses on storytelling and technical experiences.
|
||||
|
||||
## 1. User Documentation
|
||||
|
||||
### Overview
|
||||
Naomi's Blog is a personal blog featuring posts about software engineering, technology, and personal experiences. The blog is accessible at https://blog.nhcarrigan.com and provides a clean, minimalist interface for reading articles.
|
||||
|
||||
### Navigation
|
||||
- **Home Page**: Displays a chronological list of all blog posts with titles, publication dates, and summaries
|
||||
- **Individual Posts**: Click on any post title to read the full article
|
||||
- **Return Navigation**: Each post page includes a "← Back to home" link to return to the main listing
|
||||
|
||||
### Post Structure
|
||||
Each blog post includes:
|
||||
- **Title**: The main heading of the article
|
||||
- **Publication Date**: Displayed in British format (e.g., "Wednesday, 21 May 2025")
|
||||
- **Summary**: A brief excerpt visible on the home page
|
||||
- **Content**: Full markdown-rendered content with support for:
|
||||
- Headers and text formatting
|
||||
- Links and images
|
||||
- Code blocks and syntax highlighting
|
||||
- HTML elements when needed
|
||||
|
||||
### Accessibility Features
|
||||
- Semantic HTML structure with proper heading hierarchy
|
||||
- Underlined links for clear navigation
|
||||
- Clean typography using Inter font
|
||||
- Responsive design that works across devices
|
||||
|
||||
## 2. Technical Documentation
|
||||
|
||||
### Architecture
|
||||
Naomi's Blog is built using:
|
||||
- **Framework**: Next.js 15.1.6 with App Router
|
||||
- **Language**: TypeScript 5.x
|
||||
- **Styling**: Tailwind CSS with custom CSS variables
|
||||
- **Content**: Markdown files with frontmatter parsing via gray-matter
|
||||
- **Markdown Rendering**: react-markdown with rehype-raw and remark-gfm plugins
|
||||
|
||||
### Project Structure
|
||||
```
|
||||
src/
|
||||
├── app/
|
||||
│ ├── layout.tsx # Root layout with metadata and styling
|
||||
│ ├── page.tsx # Home page listing all posts
|
||||
│ ├── globals.css # Global styles and CSS variables
|
||||
│ └── post/[slug]/
|
||||
│ └── page.tsx # Dynamic post pages
|
||||
├── components/
|
||||
│ └── rule.tsx # Custom horizontal rule component
|
||||
└── lib/
|
||||
└── posts.ts # Post data fetching utilities
|
||||
|
||||
posts/ # Markdown blog posts
|
||||
```
|
||||
|
||||
### Installation & Setup
|
||||
1. **Prerequisites**: Node.js and pnpm package manager
|
||||
2. **Install dependencies**: `pnpm install`
|
||||
3. **Development server**: `pnpm dev` (runs on port 3003)
|
||||
4. **Build for production**: `pnpm build`
|
||||
5. **Start production server**: `pnpm start`
|
||||
|
||||
### Content Management
|
||||
- **Adding Posts**: Create `.md` files in the `posts/` directory
|
||||
- **Frontmatter Format**:
|
||||
```yaml
|
||||
---
|
||||
title: "Your Post Title"
|
||||
date: "YYYY-MM-DD"
|
||||
summary: "Brief description of the post"
|
||||
---
|
||||
```
|
||||
- **Content**: Write in Markdown with GitHub Flavoured Markdown support
|
||||
- **Automatic Processing**: Posts are automatically sorted by date (newest first)
|
||||
|
||||
### Key Features
|
||||
- **Static Generation**: Posts are processed at build time for optimal performance
|
||||
- **SEO Optimized**: Proper metadata, Open Graph, and Twitter Card support
|
||||
- **TypeScript**: Full type safety throughout the application
|
||||
- **Responsive Design**: Mobile-friendly layout
|
||||
- **Custom Styling**: Branded colors and typography
|
||||
|
||||
## 3. Legal Documentation
|
||||
|
||||
### License
|
||||
The Application is distributed under **Naomi's Public License** as indicated in the source code headers.
|
||||
|
||||
### Copyright
|
||||
All source code is copyright © nhcarrigan (Naomi Carrigan).
|
||||
|
||||
### Third-Party Dependencies
|
||||
The Application uses the following open-source libraries:
|
||||
- **Next.js**: MIT License
|
||||
- **React**: MIT License
|
||||
- **TypeScript**: Apache License 2.0
|
||||
- **Tailwind CSS**: MIT License
|
||||
- **gray-matter**: MIT License
|
||||
- **react-markdown**: MIT License
|
||||
- **rehype-raw**: MIT License
|
||||
- **remark-gfm**: MIT License
|
||||
|
||||
### Content Policy
|
||||
Blog post content represents the personal opinions and experiences of the author. Content guidelines and policies specific to this Application may be added here as needed.
|
||||
|
||||
## 4. Contributing Documentation
|
||||
|
||||
### Development Guidelines
|
||||
- **Code Style**: ESLint configuration (`@nhcarrigan/eslint-config`) enforces consistent formatting
|
||||
- **Type Safety**: All code must pass TypeScript checks with no warnings
|
||||
- **Testing**: Run `pnpm lint` to verify code standards (note: test suite is pending implementation)
|
||||
|
||||
### Code Organization
|
||||
- **Components**: React components go in `src/components/`
|
||||
- **Utilities**: Helper functions belong in `src/lib/`
|
||||
- **Pages**: Follow Next.js App Router conventions in `src/app/`
|
||||
- **Styles**: Global styles in `src/app/globals.css`, component styles via Tailwind classes
|
||||
|
||||
### Pull Request Process
|
||||
1. **Fork & Branch**: Create feature branches from main
|
||||
2. **Code Quality**: Ensure ESLint passes with zero warnings
|
||||
3. **Type Safety**: All TypeScript must compile without errors
|
||||
4. **Documentation**: Update relevant documentation for significant changes
|
||||
5. **Testing**: Verify the application builds and runs correctly
|
||||
|
||||
### File Header Requirements
|
||||
All source files must include the standard copyright header:
|
||||
```typescript
|
||||
/**
|
||||
* @copyright nhcarrigan
|
||||
* @license Naomi's Public License
|
||||
* @author Naomi Carrigan
|
||||
*/
|
||||
```
|
||||
|
||||
### Dependency Management
|
||||
- Use `pnpm` for package management
|
||||
- Keep dependencies up to date and security-focused
|
||||
- Prefer established, well-maintained packages
|
||||
- Document any new dependencies and their purpose
|
||||
@@ -0,0 +1,293 @@
|
||||
---
|
||||
title: Boost Monitor
|
||||
---
|
||||
|
||||
Boost Monitor (hereinafter the "Application") is a Discord bot that automatically manages special roles for server boosters. The Application monitors server members and removes booster-exclusive roles (such as custom color roles) when a member stops boosting the server.
|
||||
|
||||
## 1. User Documentation
|
||||
|
||||
This section is for those interacting with a live instance of the Application.
|
||||
|
||||
### Overview
|
||||
|
||||
The Discord Boost Monitor operates automatically in the background of your Discord server. It requires no direct user interaction once configured by server administrators.
|
||||
|
||||
### How It Works
|
||||
|
||||
1. **Automatic Monitoring**: The bot monitors all member updates in the Discord server
|
||||
2. **Boost Detection**: When a member's boost status changes, the bot checks if they still have the server booster role
|
||||
3. **Role Management**: If a member no longer has the booster role, the bot automatically removes any configured booster-exclusive roles (such as custom color roles)
|
||||
|
||||
### Key Features
|
||||
|
||||
- **Automated Role Removal**: No manual intervention needed when members stop boosting
|
||||
- **Configurable Roles**: Server-specific booster and color role IDs can be configured
|
||||
- **Status Monitoring**: Health check endpoint available at the bot's web interface
|
||||
- **Debug Webhooks**: Sends status updates and error reports to configured Discord webhooks
|
||||
|
||||
### Accessing the Bot
|
||||
|
||||
The bot runs as a background service and does not have traditional user-facing commands. Server administrators can monitor its status through:
|
||||
|
||||
- **Web Interface**: HTTPS endpoint showing bot status and information
|
||||
- **Debug Webhook**: Real-time updates sent to configured Discord webhook
|
||||
- **Server Logs**: Winston-based logging for troubleshooting
|
||||
|
||||
## 2. Technical Documentation
|
||||
|
||||
This section is for those interested in running their own instance of the Application.
|
||||
|
||||
### Prerequisites
|
||||
|
||||
- **Node.js**: Version 22 or higher
|
||||
- **pnpm**: Version 9 or higher
|
||||
- **Discord Bot Token**: From the Discord Developer Portal
|
||||
- **SSL Certificates**: For HTTPS server (Let's Encrypt or similar)
|
||||
- **Sentry Account** (optional): For error tracking
|
||||
|
||||
### Installation
|
||||
|
||||
1. Clone the repository:
|
||||
```bash
|
||||
git clone https://github.com/nhcarrigan/oogie-woogie-boostie-woostie.git
|
||||
cd oogie-woogie-boostie-woostie
|
||||
```
|
||||
|
||||
2. Install dependencies:
|
||||
```bash
|
||||
pnpm install
|
||||
```
|
||||
|
||||
3. Configure environment variables by creating a `.env` file:
|
||||
```bash
|
||||
cp sample.env .env
|
||||
```
|
||||
|
||||
4. Edit `.env` with your configuration:
|
||||
```env
|
||||
DISCORD_TOKEN="your-discord-bot-token"
|
||||
SENTRY_DSN="your-sentry-dsn"
|
||||
DEBUG_HOOK="your-discord-webhook-url"
|
||||
```
|
||||
|
||||
### Configuration
|
||||
|
||||
#### Role Configuration
|
||||
|
||||
Edit `src/config/roles.ts` to configure your server-specific role IDs:
|
||||
|
||||
- **colourRoles**: Array of role IDs that should be removed when a member stops boosting (src/config/roles.ts:1-10)
|
||||
- **boosterRole**: The ID of your server's booster role (src/config/roles.ts:12)
|
||||
|
||||
Example:
|
||||
```typescript
|
||||
export const colourRoles = [
|
||||
"883281643098484736", // Red role
|
||||
"883283836887261204", // Blue role
|
||||
// Add your color role IDs here
|
||||
];
|
||||
|
||||
export const boosterRole = "712431541531181177"; // Your booster role ID
|
||||
```
|
||||
|
||||
#### SSL Certificates
|
||||
|
||||
The bot expects SSL certificates at the following locations:
|
||||
- Certificate: `/etc/letsencrypt/live/oogie.nhcarrigan.com/cert.pem`
|
||||
- Private Key: `/etc/letsencrypt/live/oogie.nhcarrigan.com/privkey.pem`
|
||||
|
||||
Update the paths in `src/server/serve.ts:18-22` if your certificates are located elsewhere.
|
||||
|
||||
### Building and Running
|
||||
|
||||
1. Build the TypeScript code:
|
||||
```bash
|
||||
pnpm build
|
||||
```
|
||||
|
||||
2. Start the bot:
|
||||
```bash
|
||||
pnpm start
|
||||
```
|
||||
|
||||
3. For development with linting:
|
||||
```bash
|
||||
pnpm lint
|
||||
```
|
||||
|
||||
### Architecture
|
||||
|
||||
#### Core Components
|
||||
|
||||
- **Main Entry Point** (`src/index.ts`): Initializes the Discord client, sets up event listeners, and starts the web server
|
||||
- **Role Manager** (`src/modules/manageRoles.ts`): Core logic for detecting boost status and removing roles
|
||||
- **Web Server** (`src/server/serve.ts`): Fastify-based HTTPS server for health monitoring
|
||||
- **Error Handler** (`src/utils/errorHandler.ts`): Centralized error handling with Sentry integration and Discord webhook notifications
|
||||
- **Log Handler** (`src/utils/logHandler.ts`): Winston-based logging with timestamps and color coding
|
||||
|
||||
#### Bot Intents
|
||||
|
||||
The bot requires the following Discord gateway intents (src/index.ts:22):
|
||||
- `Guilds`: Access to guild information
|
||||
- `GuildMembers`: Access to member updates (privileged intent)
|
||||
|
||||
Note: The `GuildMembers` intent must be enabled in your bot's Discord Developer Portal settings.
|
||||
|
||||
#### Event Flow
|
||||
|
||||
1. Bot connects to Discord and fetches guild members (src/index.ts:25-39)
|
||||
2. Bot listens for `guildMemberUpdate` events (src/index.ts:42-44)
|
||||
3. On member update, `manageRoles` function checks boost status (src/modules/manageRoles.ts:13-26)
|
||||
4. If member is not boosting, configured color roles are removed
|
||||
5. Errors are logged and sent to Sentry and debug webhook
|
||||
|
||||
#### Web Server
|
||||
|
||||
The Fastify server runs on port 3443 with HTTPS and provides:
|
||||
- Health check endpoint at `/` (src/server/serve.ts:27-66)
|
||||
- Simple HTML page with bot information and links
|
||||
- Status notifications sent to debug webhook on startup
|
||||
|
||||
### Monitoring and Debugging
|
||||
|
||||
#### Sentry Integration
|
||||
|
||||
All errors are automatically captured and sent to Sentry (src/index.ts:9-17), providing:
|
||||
- Stack trace rewriting for better debugging
|
||||
- Full error context and stack traces
|
||||
- 100% transaction sampling rate
|
||||
|
||||
#### Discord Webhooks
|
||||
|
||||
Debug webhooks are used for:
|
||||
- Bot startup confirmation (src/index.ts:26-31)
|
||||
- Member count logging (src/index.ts:35-39)
|
||||
- Server startup notification (src/server/serve.ts:73-80)
|
||||
- Error notifications with embeds (src/utils/errorHandler.ts:22-38)
|
||||
|
||||
#### Logging
|
||||
|
||||
Winston logger provides console output with:
|
||||
- Timestamps in `YYYY-MM-DD HH:mm:ss` format
|
||||
- Color-coded log levels
|
||||
- NPM-style log levels (silly, verbose, info, warn, error)
|
||||
|
||||
### Deployment Considerations
|
||||
|
||||
1. **Privileged Intents**: Ensure `GuildMembers` intent is enabled in Discord Developer Portal
|
||||
2. **SSL Certificates**: Keep certificates up-to-date (consider using certbot for Let's Encrypt)
|
||||
3. **Environment Variables**: Secure your `.env` file and never commit it to version control
|
||||
4. **Port Access**: Ensure port 3443 is accessible for health monitoring
|
||||
5. **Process Management**: Consider using PM2 or systemd for process management
|
||||
6. **Single Guild**: Bot is designed for single-guild operation (src/index.ts:33)
|
||||
|
||||
## 3. Legal Documentation
|
||||
|
||||
This section is for expansions to our legal policies specific to the Application.
|
||||
|
||||
### Software License
|
||||
|
||||
This Application is licensed under the global software license maintained by Naomi Carrigan. Full license details can be found at: https://docs.nhcarrigan.com/#/license
|
||||
|
||||
Copyright is held by Naomi Carrigan.
|
||||
|
||||
### Privacy Considerations
|
||||
|
||||
The Application processes the following Discord data:
|
||||
- **Guild member information**: Required for detecting boost status changes
|
||||
- **Role information**: Required for managing booster-exclusive roles
|
||||
- **Member update events**: Monitored to detect boost status changes
|
||||
|
||||
This data is processed in real-time and is not permanently stored by the Application outside of:
|
||||
- Error logs sent to Sentry
|
||||
- Debug messages sent to Discord webhooks
|
||||
- Console logs from Winston logger
|
||||
|
||||
For full privacy policy details, see: PRIVACY.md
|
||||
|
||||
### Terms of Service
|
||||
|
||||
The Application operates as an automated moderation tool for Discord servers. Server administrators are responsible for:
|
||||
- Configuring appropriate role IDs
|
||||
- Informing server members about automated role management
|
||||
- Ensuring compliance with Discord's Terms of Service
|
||||
|
||||
For full terms of service, see: TERMS.md
|
||||
|
||||
### Security Policy
|
||||
|
||||
Security vulnerabilities should be reported according to the guidelines in: SECURITY.md
|
||||
|
||||
## 4. Contributing Documentation
|
||||
|
||||
This section is for documentation related to contributing to the Application's codebase.
|
||||
|
||||
### Getting Started
|
||||
|
||||
Full contributing guidelines are available at: https://docs.nhcarrigan.com/#/contributing
|
||||
|
||||
### Development Setup
|
||||
|
||||
1. Fork and clone the repository
|
||||
2. Install dependencies with `pnpm install`
|
||||
3. Create a `.env` file from `sample.env`
|
||||
4. Make your changes in a feature branch
|
||||
5. Run linting with `pnpm lint` before committing
|
||||
6. Build the project with `pnpm build` to ensure TypeScript compiles
|
||||
|
||||
### Code Style
|
||||
|
||||
The project uses:
|
||||
- **ESLint**: `@nhcarrigan/eslint-config` (max 0 warnings)
|
||||
- **Prettier**: `@nhcarrigan/prettier-config`
|
||||
- **TypeScript**: `@nhcarrigan/typescript-config`
|
||||
|
||||
Run `pnpm lint` to check code style before submitting PRs.
|
||||
|
||||
### Project Structure
|
||||
|
||||
```
|
||||
src/
|
||||
├── index.ts # Main entry point
|
||||
├── config/
|
||||
│ └── roles.ts # Role ID configuration
|
||||
├── modules/
|
||||
│ └── manageRoles.ts # Core role management logic
|
||||
├── server/
|
||||
│ └── serve.ts # Fastify web server
|
||||
└── utils/
|
||||
├── errorHandler.ts # Centralized error handling
|
||||
└── logHandler.ts # Winston logging configuration
|
||||
```
|
||||
|
||||
### Testing
|
||||
|
||||
Currently, the project does not have automated tests (package.json:11). When contributing new features, consider:
|
||||
- Manual testing with a test Discord server
|
||||
- Verifying role removal works correctly
|
||||
- Testing error handling paths
|
||||
- Checking webhook notifications
|
||||
|
||||
### Submitting Changes
|
||||
|
||||
1. Ensure code passes linting: `pnpm lint`
|
||||
2. Build successfully: `pnpm build`
|
||||
3. Review the Code of Conduct: CODE_OF_CONDUCT.md
|
||||
4. Submit a Pull Request with:
|
||||
- Clear description of changes
|
||||
- Rationale for the changes
|
||||
- Any testing performed
|
||||
|
||||
### Code of Conduct
|
||||
|
||||
All contributors must adhere to the Code of Conduct outlined in: CODE_OF_CONDUCT.md
|
||||
|
||||
### Reporting Issues
|
||||
|
||||
Bug reports and feature requests can be submitted at: https://github.com/nhcarrigan/oogie-woogie-boostie-woostie/issues
|
||||
|
||||
### Contact
|
||||
|
||||
For questions or support:
|
||||
- **Chat Server**: http://chat.nhcarrigan.com
|
||||
- **Email**: contact@nhcarrigan.com
|
||||
@@ -0,0 +1,218 @@
|
||||
---
|
||||
title: Caelia
|
||||
---
|
||||
|
||||
Caelia (hereinafter the "Application") is a Discord bot that provides gentle reminders when users utilize non-inclusive language in their messages, helping promote more welcoming and inclusive community spaces.
|
||||
|
||||
## 1. User Documentation
|
||||
|
||||
This section is for those interacting with a live instance of the Application.
|
||||
|
||||
### What is Caelia?
|
||||
|
||||
Caelia is a Discord bot designed to help create more inclusive communities by gently notifying users when they may have used language that could be considered non-inclusive. The bot uses the Alex.js library to analyze messages and provide helpful suggestions for more inclusive alternatives.
|
||||
|
||||
### How to Add Caelia to Your Server
|
||||
|
||||
1. Visit the authorization link: https://discord.com/oauth2/authorize?client_id=1408530011572535346
|
||||
2. Select your server and grant the necessary permissions
|
||||
3. Caelia will automatically begin monitoring messages in channels where she has access
|
||||
|
||||
### Required Permissions
|
||||
|
||||
- **Read Messages**: To analyse message content
|
||||
- **Send Messages**: To provide feedback and suggestions
|
||||
- **View Channels**: To monitor designated channels
|
||||
|
||||
### Using Caelia
|
||||
|
||||
Once added to your server, Caelia works automatically:
|
||||
|
||||
- She monitors messages in real-time
|
||||
- When potentially non-inclusive language is detected, she replies with gentle suggestions
|
||||
- Code blocks and links are ignored during analysis
|
||||
- Bot messages and system messages are not analysed
|
||||
|
||||
### Slash Commands
|
||||
|
||||
- `/about` - Learn about Caelia and her functionality
|
||||
|
||||
### Getting Help
|
||||
|
||||
If you need assistance or believe Caelia has made an error, you can:
|
||||
- Join the support Discord server: https://chat.nhcarrigan.com
|
||||
- Contact support via email: contact@nhcarrigan.com
|
||||
|
||||
## 2. Technical Documentation
|
||||
|
||||
This section is for those interested in running their own instance of the Application.
|
||||
|
||||
### System Requirements
|
||||
|
||||
- Node.js (version compatible with TypeScript 5.9.2)
|
||||
- npm/pnpm package manager
|
||||
- Discord Bot Token
|
||||
- Environment variables configuration
|
||||
|
||||
### Installation
|
||||
|
||||
1. Clone the repository
|
||||
2. Install dependencies: `pnpm install`
|
||||
3. Set up environment variables (see Configuration section)
|
||||
4. Build the project: `pnpm run build`
|
||||
5. Start the application: `pnpm start`
|
||||
|
||||
### Configuration
|
||||
|
||||
The application requires the following environment variable:
|
||||
- `BOT_TOKEN`: Your Discord bot token
|
||||
|
||||
### Architecture Overview
|
||||
|
||||
The application consists of several key modules:
|
||||
|
||||
#### Core Components
|
||||
|
||||
- **`src/index.ts`**: Main entry point that initializes the Discord client and event handlers
|
||||
- **`src/modules/processMessage.ts`**: Handles message analysis using Alex.js for inclusive language checking
|
||||
- **`src/modules/processInteraction.ts`**: Processes slash command interactions
|
||||
- **`src/server/serve.ts`**: Fastify web server for health monitoring and bot information
|
||||
- **`src/config/alex.ts`**: Configuration for the Alex.js language analysis library
|
||||
- **`src/utils/logger.ts`**: Logging utilities
|
||||
|
||||
#### Message Processing Flow
|
||||
|
||||
1. Discord message received via `Events.MessageCreate`
|
||||
2. Message content filtered (removes code blocks and links)
|
||||
3. Alex.js analyses content for non-inclusive language
|
||||
4. If issues found, bot responds with suggestions and feedback link
|
||||
5. Errors are logged and handled gracefully
|
||||
|
||||
#### Web Server
|
||||
|
||||
A Fastify server runs on port 7055 providing:
|
||||
- Health check endpoint
|
||||
- Bot information and invite link
|
||||
- Links to source code and documentation
|
||||
|
||||
### Dependencies
|
||||
|
||||
#### Production Dependencies
|
||||
- `discord.js`: Discord API wrapper
|
||||
- `alex`: Inclusive language analysis
|
||||
- `extra-markdown-text`: Markdown processing utilities
|
||||
- `fastify`: Web server framework
|
||||
- `@nhcarrigan/logger`: Logging utilities
|
||||
|
||||
#### Development Dependencies
|
||||
- `typescript`: TypeScript compiler
|
||||
- `eslint`: Code linting
|
||||
- Various type definitions and configuration packages
|
||||
|
||||
### Scripts
|
||||
|
||||
- `pnpm build`: Compile TypeScript to JavaScript
|
||||
- `pnpm lint`: Run ESLint with zero warnings tolerance
|
||||
- `pnpm start`: Start the production server
|
||||
- `pnpm test`: Run tests (currently placeholder)
|
||||
|
||||
### Deployment
|
||||
|
||||
The application is configured for production deployment using:
|
||||
- 1Password CLI for environment variable management
|
||||
- Production environment file (`prod.env`)
|
||||
- Compiled output in `prod/` directory
|
||||
|
||||
## 3. Legal Documentation
|
||||
|
||||
This section is for expansions to our legal policies specific to the Application.
|
||||
|
||||
### License
|
||||
|
||||
This software is licensed under Naomi's Public License. All code is copyright NHCarrigan and authored by Naomi Carrigan.
|
||||
|
||||
### Data Handling
|
||||
|
||||
- Caelia analyses message content in real-time but does not store message data
|
||||
- Only processes text content, ignoring code blocks and URLs
|
||||
- No personal data is collected or retained
|
||||
- All processing occurs in memory and is not persisted
|
||||
|
||||
### Privacy Considerations
|
||||
|
||||
- Message analysis is performed locally within the bot's runtime
|
||||
- No message content is transmitted to external services beyond Discord's API
|
||||
- The Alex.js library runs locally and does not send data externally
|
||||
- Error logging may contain message metadata but not content
|
||||
|
||||
### Service Availability
|
||||
|
||||
- The bot is provided as-is with no guarantees of uptime
|
||||
- Support is provided on a best-effort basis
|
||||
- Service may be interrupted for maintenance or updates
|
||||
|
||||
## 4. Contributing Documentation
|
||||
|
||||
This section is for documentation related to contributing to the Application's codebase.
|
||||
|
||||
### Development Setup
|
||||
|
||||
1. Fork the repository
|
||||
2. Clone your fork locally
|
||||
3. Install dependencies: `pnpm install`
|
||||
4. Set up your development environment variables
|
||||
5. Run linting: `pnpm run lint`
|
||||
6. Build the project: `pnpm run build`
|
||||
|
||||
### Code Style
|
||||
|
||||
The project uses:
|
||||
- ESLint with `@nhcarrigan/eslint-config` for code quality
|
||||
- TypeScript with strict configuration
|
||||
- Maximum 0 warnings policy for linting
|
||||
|
||||
### Project Structure
|
||||
|
||||
```
|
||||
src/
|
||||
├── config/ # Configuration files
|
||||
│ └── alex.ts # Alex.js configuration
|
||||
├── modules/ # Core application modules
|
||||
│ ├── processMessage.ts # Message analysis logic
|
||||
│ └── processInteraction.ts # Slash command handling
|
||||
├── server/ # Web server components
|
||||
│ └── serve.ts # Fastify server setup
|
||||
├── utils/ # Utility functions
|
||||
│ └── logger.ts # Logging utilities
|
||||
└── index.ts # Application entry point
|
||||
```
|
||||
|
||||
### Contributing Guidelines
|
||||
|
||||
1. Follow the existing code style and patterns
|
||||
2. Ensure all linting passes with zero warnings
|
||||
3. Test your changes thoroughly
|
||||
4. Update documentation as needed
|
||||
5. Submit pull requests with clear descriptions
|
||||
|
||||
### Key Areas for Contribution
|
||||
|
||||
- **Language Rules**: Enhancing Alex.js configuration for better accuracy
|
||||
- **Error Handling**: Improving error recovery and user experience
|
||||
- **Performance**: Optimizing message processing speed
|
||||
- **Features**: Adding new functionality while maintaining simplicity
|
||||
- **Documentation**: Improving user and developer documentation
|
||||
|
||||
### Reporting Issues
|
||||
|
||||
- Use GitHub issues for bug reports
|
||||
- Join the Discord support server for discussions: https://chat.nhcarrigan.com
|
||||
- Email support: contact@nhcarrigan.com
|
||||
|
||||
### Code Review Process
|
||||
|
||||
All contributions require:
|
||||
- Code review by project maintainers
|
||||
- Passing lint checks (`pnpm run lint`)
|
||||
- Successful build (`pnpm run build`)
|
||||
- Adherence to project conventions and patterns
|
||||
@@ -0,0 +1,38 @@
|
||||
---
|
||||
title: Calenelle
|
||||
---
|
||||
|
||||
Calenelle (hereinafter the "Application") is a group coordination app with event scheduling and such.
|
||||
|
||||
## 1. User Documentation
|
||||
|
||||
:::note
|
||||
This section is coming soon!
|
||||
:::
|
||||
|
||||
This section is for those interacting with a live instance of the Application.
|
||||
|
||||
## 2. Technical Documentation
|
||||
|
||||
:::note
|
||||
This section is coming soon!
|
||||
:::
|
||||
|
||||
This section is for those interested in running their own instance of the Application.
|
||||
|
||||
## 3. Legal Documentation
|
||||
|
||||
:::note
|
||||
This section is coming soon!
|
||||
:::
|
||||
|
||||
This section is for expansions to our legal policies specific to the Application.
|
||||
|
||||
## 4. Contributing Documentation
|
||||
|
||||
:::note
|
||||
This section is coming soon!
|
||||
:::
|
||||
|
||||
This section is for documentation related to contributing to the Application's codebase.
|
||||
|
||||
@@ -0,0 +1,373 @@
|
||||
---
|
||||
title: Callista
|
||||
---
|
||||
|
||||
Callista (hereinafter the "Application") is a Discord bot that allows users to bookmark messages so they can find them later. The Application provides a simple interface for saving message links via DM, with optional note-taking capabilities to help organize and remember why messages were bookmarked.
|
||||
|
||||
## 1. User Documentation
|
||||
|
||||
This section is for those interacting with a live instance of the Application.
|
||||
|
||||
### 1.1 Adding the Bot
|
||||
|
||||
Callista is available as a Discord user-installable application. You can add Callista to your Discord account by visiting:
|
||||
https://discord.com/oauth2/authorize?client_id=1391494389477412906
|
||||
|
||||
### 1.2 Bookmarking Messages
|
||||
|
||||
To bookmark a message:
|
||||
|
||||
1. Right-click (or long-press on mobile) any message in a guild or private channel
|
||||
2. Navigate to Apps → Bookmark
|
||||
3. Callista will send you a DM containing the message link
|
||||
|
||||
**Note:** You must have Direct Messages enabled to receive bookmarks. If you receive an error, check your Discord privacy settings.
|
||||
|
||||
### 1.3 Adding Notes to Bookmarks
|
||||
|
||||
Each bookmark can have an associated note to help you remember context:
|
||||
|
||||
1. When you receive a bookmark DM, click the **Add Note** button
|
||||
2. A modal will appear asking "What would you like to note down?"
|
||||
3. Enter your note (1-1000 characters)
|
||||
4. Your note will be appended to the bookmark message
|
||||
|
||||
### 1.4 Editing Notes
|
||||
|
||||
To edit an existing note on a bookmark:
|
||||
|
||||
1. Click the **Edit Note** button on the bookmark message
|
||||
2. Update the note text in the modal
|
||||
3. The bookmark message will be updated with your new note
|
||||
|
||||
### 1.5 Deleting Bookmarks
|
||||
|
||||
To delete a bookmark from your DMs:
|
||||
|
||||
1. Right-click the bookmark message in your DM with Callista
|
||||
2. Navigate to Apps → Delete
|
||||
3. The bookmark message will be deleted
|
||||
|
||||
**Note:** The Delete command only works in DMs with Callista (bot DM context).
|
||||
|
||||
### 1.6 Additional Features
|
||||
|
||||
Each bookmark message includes convenient buttons:
|
||||
- **Add Note/Edit Note**: Add or modify notes on your bookmarks
|
||||
- **Join our Discord**: Link to the support server (https://chat.nhcarrigan.com)
|
||||
- **Donate**: Premium button for supporting the bot developer
|
||||
|
||||
### 1.7 Command Reference
|
||||
|
||||
| Command | Type | Context | Description |
|
||||
|---------|------|---------|-------------|
|
||||
| Bookmark | Message Context Menu | Guilds, Private Channels | Sends you a DM with the message link |
|
||||
| Delete | Message Context Menu | Bot DMs | Deletes the bookmark message |
|
||||
|
||||
## 2. Technical Documentation
|
||||
|
||||
This section is for those interested in running their own instance of the Application.
|
||||
|
||||
### 2.1 Prerequisites
|
||||
|
||||
- Node.js (compatible with version specified in package.json)
|
||||
- pnpm 10.17.1 or higher (specified in packageManager field)
|
||||
- A Discord Bot Token
|
||||
- 1Password CLI (op) for production environment variables (or modify start script)
|
||||
|
||||
### 2.2 Dependencies
|
||||
|
||||
**Runtime Dependencies:**
|
||||
- `discord.js` (14.22.1): Discord API wrapper
|
||||
- `@nhcarrigan/logger` (1.0.0): Logging utility
|
||||
- `fastify` (5.6.1): Web server for health monitoring
|
||||
|
||||
**Development Dependencies:**
|
||||
- TypeScript (5.9.2)
|
||||
- ESLint with @nhcarrigan configuration
|
||||
- tsx for development execution
|
||||
|
||||
### 2.3 Installation
|
||||
|
||||
1. Clone the repository:
|
||||
```bash
|
||||
git clone <repository-url>
|
||||
cd callista
|
||||
```
|
||||
|
||||
2. Install dependencies:
|
||||
```bash
|
||||
pnpm install
|
||||
```
|
||||
|
||||
3. Create a production environment file (`prod.env`) with the following:
|
||||
```
|
||||
BOT_TOKEN=your_discord_bot_token
|
||||
```
|
||||
|
||||
4. Register Discord commands by running:
|
||||
```bash
|
||||
node commandData.js
|
||||
```
|
||||
Copy the output JSON and register it via the Discord Developer Portal or API.
|
||||
|
||||
### 2.4 Building
|
||||
|
||||
Compile TypeScript to JavaScript:
|
||||
```bash
|
||||
pnpm run build
|
||||
```
|
||||
|
||||
Output is generated in the `prod/` directory.
|
||||
|
||||
### 2.5 Running
|
||||
|
||||
**Production:**
|
||||
```bash
|
||||
pnpm start
|
||||
```
|
||||
|
||||
This uses 1Password CLI to inject environment variables. Modify the start script in `package.json` if using a different secrets management solution.
|
||||
|
||||
**Development:**
|
||||
```bash
|
||||
tsx src/index.ts
|
||||
```
|
||||
|
||||
### 2.6 Architecture Overview
|
||||
|
||||
**Project Structure:**
|
||||
```
|
||||
src/
|
||||
├── index.ts # Main entry point, Discord client setup
|
||||
├── server/
|
||||
│ └── serve.ts # Fastify web server for health checks (port 6111)
|
||||
├── interactions/
|
||||
│ ├── bookmark.ts # Bookmark command handler
|
||||
│ └── deleteCmd.ts # Delete command handler
|
||||
├── buttons/
|
||||
│ ├── addNote.ts # Add note button definition
|
||||
│ ├── editNote.ts # Edit note button definition
|
||||
│ ├── discord.ts # Discord invite button
|
||||
│ └── donate.ts # Premium donation button
|
||||
├── modals/
|
||||
│ └── note.ts # Note input modal definition
|
||||
└── utils/
|
||||
└── logger.ts # Logger configuration
|
||||
```
|
||||
|
||||
**Component Interactions:**
|
||||
|
||||
1. **Discord Client** (`index.ts:22-24`): Initialized with no intents (interaction-only bot)
|
||||
2. **Interaction Handler** (`index.ts:27-81`): Routes interactions to appropriate handlers
|
||||
3. **Web Server** (`server/serve.ts:54-79`): Runs on port 6111 for health monitoring
|
||||
4. **Message Context Commands**: Registered via `commandData.js` with user-install integration
|
||||
|
||||
### 2.7 Bot Configuration
|
||||
|
||||
The bot requires the following Discord application settings:
|
||||
|
||||
**Intents:** None (the bot uses no gateway intents)
|
||||
|
||||
**Integration Types:**
|
||||
- User Install (ApplicationIntegrationType.UserInstall)
|
||||
|
||||
**Interaction Contexts:**
|
||||
- Bookmark: Guilds and Private Channels
|
||||
- Delete: Bot DMs only
|
||||
|
||||
**Commands to Register:**
|
||||
```json
|
||||
[
|
||||
{
|
||||
"type": 3,
|
||||
"name": "Bookmark",
|
||||
"contexts": [0, 2],
|
||||
"integration_types": [1]
|
||||
},
|
||||
{
|
||||
"type": 3,
|
||||
"name": "Delete",
|
||||
"contexts": [1],
|
||||
"integration_types": [1]
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
### 2.8 Environment Variables
|
||||
|
||||
| Variable | Required | Description |
|
||||
|----------|----------|-------------|
|
||||
| BOT_TOKEN | Yes | Discord bot token for authentication |
|
||||
|
||||
### 2.9 Monitoring and Health Checks
|
||||
|
||||
The Application exposes a web server on port 6111:
|
||||
- **Endpoint:** `GET /`
|
||||
- **Response:** HTML page with bot information
|
||||
- **Purpose:** Health monitoring and bot information display
|
||||
|
||||
### 2.10 Logging
|
||||
|
||||
Logging is handled via `@nhcarrigan/logger` with the following log levels:
|
||||
- `debug`: Informational messages (bot online, server started)
|
||||
- `error`: Error conditions (server failures, etc.)
|
||||
|
||||
Logs are written from `utils/logger.ts:1`.
|
||||
|
||||
### 2.11 Error Handling
|
||||
|
||||
The Application implements error handling for:
|
||||
- Failed DM delivery (user has DMs disabled) - `interactions/bookmark.ts:43-46`
|
||||
- Missing message context for modals - `index.ts:46-52`
|
||||
- Server startup failures - `server/serve.ts:66-77`
|
||||
|
||||
### 2.12 Deployment Considerations
|
||||
|
||||
1. **Port Configuration:** The web server runs on port 6111 by default
|
||||
2. **Secrets Management:** The default start script uses 1Password CLI
|
||||
3. **Build Output:** Compiled JavaScript is output to `prod/` directory
|
||||
4. **Process Management:** Consider using PM2, systemd, or Docker for production
|
||||
|
||||
## 3. Legal Documentation
|
||||
|
||||
This section is for expansions to our legal policies specific to the Application.
|
||||
|
||||
### 3.1 License
|
||||
|
||||
This Application is licensed under **Naomi's Public License** as indicated in the source file headers.
|
||||
|
||||
Copyright held by **NHCarrigan / Naomi Carrigan**.
|
||||
|
||||
Full license text available at: https://docs.nhcarrigan.com/#/license
|
||||
|
||||
### 3.2 Privacy
|
||||
|
||||
Privacy policy document: `PRIVACY.md` in the repository root.
|
||||
|
||||
**Data Collection:** The Application processes the following user data:
|
||||
- Discord User IDs (for DM delivery)
|
||||
- Message URLs (bookmarked messages)
|
||||
- User-provided notes (stored in Discord messages)
|
||||
|
||||
**Data Storage:** All data is stored within Discord's infrastructure via message content. The Application does not maintain a separate database.
|
||||
|
||||
**Data Retention:** Data persists as long as users keep their DM messages. Users can delete bookmarks at any time using the Delete command.
|
||||
|
||||
### 3.3 Terms of Service
|
||||
|
||||
Terms of service document: `TERMS.md` in the repository root.
|
||||
|
||||
### 3.4 Security
|
||||
|
||||
Security policy document: `SECURITY.md` in the repository root.
|
||||
|
||||
For security concerns, please follow the reporting procedures outlined in the security policy.
|
||||
|
||||
### 3.5 Code of Conduct
|
||||
|
||||
Code of conduct document: `CODE_OF_CONDUCT.md` in the repository root.
|
||||
|
||||
## 4. Contributing Documentation
|
||||
|
||||
This section is for documentation related to contributing to the Application's codebase.
|
||||
|
||||
### 4.1 Contributing Guidelines
|
||||
|
||||
Contributing guidelines document: `CONTRIBUTING.md` in the repository root.
|
||||
|
||||
Before contributing, please review:
|
||||
1. The Code of Conduct (`CODE_OF_CONDUCT.md`)
|
||||
2. The Contributing Guidelines (`CONTRIBUTING.md`)
|
||||
3. The License terms (`LICENSE.md`)
|
||||
|
||||
### 4.2 Development Setup
|
||||
|
||||
1. Fork the repository
|
||||
2. Clone your fork
|
||||
3. Install dependencies: `pnpm install`
|
||||
4. Create a Discord application and bot at https://discord.com/developers/applications
|
||||
5. Copy your bot token to a `prod.env` file (or use environment variables directly)
|
||||
6. Run the development server: `tsx src/index.ts`
|
||||
|
||||
### 4.3 Code Standards
|
||||
|
||||
The project uses:
|
||||
- **TypeScript** (5.9.2) with strict type checking
|
||||
- **ESLint** with `@nhcarrigan/eslint-config` (5.2.0)
|
||||
- **TypeScript Config** from `@nhcarrigan/typescript-config` (4.0.0)
|
||||
|
||||
Run linting with:
|
||||
```bash
|
||||
pnpm run lint
|
||||
```
|
||||
|
||||
**Note:** The lint script uses `--max-warnings 0`, so warnings are treated as errors.
|
||||
|
||||
### 4.4 Code Style Notes
|
||||
|
||||
- All source files include copyright headers with `@copyright`, `@license`, and `@author` tags
|
||||
- Some ESLint rules are selectively disabled with comments (e.g., `index.ts:26`)
|
||||
- The project uses ESM (module) syntax (`"type": "module"` in package.json)
|
||||
|
||||
### 4.5 Testing
|
||||
|
||||
Currently, the project has a placeholder test script:
|
||||
```bash
|
||||
pnpm test
|
||||
```
|
||||
|
||||
This exits with code 0 (no tests configured yet).
|
||||
|
||||
### 4.6 Pull Request Process
|
||||
|
||||
1. Create a feature branch from `main`
|
||||
2. Make your changes following the code standards
|
||||
3. Run `pnpm run lint` to ensure code quality
|
||||
4. Run `pnpm run build` to verify the build succeeds
|
||||
5. Submit a pull request with a clear description of changes
|
||||
6. Address any review feedback
|
||||
|
||||
### 4.7 Adding New Features
|
||||
|
||||
**Adding a new button:**
|
||||
1. Create a new file in `src/buttons/` exporting a `ButtonBuilder`
|
||||
2. Import and add the button to the relevant `ActionRowBuilder` in `index.ts`
|
||||
3. Add handler logic in `handleInteraction` if the button requires custom behavior
|
||||
|
||||
**Adding a new command:**
|
||||
1. Create a handler in `src/interactions/`
|
||||
2. Add the command definition to `commandData.js`
|
||||
3. Run `node commandData.js` and register the output with Discord
|
||||
4. Add the command routing logic to `handleInteraction` in `index.ts`
|
||||
|
||||
**Adding a new modal:**
|
||||
1. Create modal definition in `src/modals/`
|
||||
2. Add modal handling logic in the `isModalSubmit` section of `handleInteraction`
|
||||
3. Link the modal to a button or command that calls `showModal()`
|
||||
|
||||
### 4.8 Repository Information
|
||||
|
||||
- **Main Branch:** `main`
|
||||
- **Package Manager:** pnpm (lockfile version: 10.17.1)
|
||||
- **CI/CD:** Configuration available in `.gitea/` directory
|
||||
- **Editor Configuration:** VSCode settings in `.vscode/`
|
||||
|
||||
### 4.9 Contact
|
||||
|
||||
For questions or support:
|
||||
- **Support Server:** https://chat.nhcarrigan.com
|
||||
- **Email:** contact@nhcarrigan.com
|
||||
- **Documentation:** https://docs.nhcarrigan.com/
|
||||
- **Source Code:** https://git.nhcarrigan.com/nhcarrigan/callista
|
||||
|
||||
### 4.10 Issue Reporting
|
||||
|
||||
Please report bugs and feature requests via GitHub/Gitea issues at:
|
||||
https://git.nhcarrigan.com/nhcarrigan/callista
|
||||
|
||||
Include:
|
||||
- Clear description of the issue or feature
|
||||
- Steps to reproduce (for bugs)
|
||||
- Expected vs actual behavior
|
||||
- Environment details (Discord client version, etc.)
|
||||
@@ -0,0 +1,303 @@
|
||||
---
|
||||
title: Celestine
|
||||
---
|
||||
|
||||
Celestine (hereinafter the "Application") is a comprehensive paid moderation bot for Discord servers, built with TypeScript and Discord.js. The Application provides advanced moderation tools, automated security features, leveling systems, birthday celebrations, and comprehensive logging capabilities. It includes a web server for health monitoring and metrics, integrates with MongoDB for data persistence, and features a subscription-based access model.
|
||||
|
||||
## 1. User Documentation
|
||||
|
||||
### Core Features
|
||||
|
||||
#### Moderation Commands
|
||||
- **`/ban`** - Ban users from the server with optional message pruning and evidence links
|
||||
- **`/unban`** - Remove bans from users with logging and notification systems
|
||||
- **`/kick`** - Remove users from the server temporarily
|
||||
- **`/mute`** - Temporarily restrict user communication with duration controls (minutes, hours, days, weeks)
|
||||
- **`/unmute`** - Remove communication restrictions from users
|
||||
- **`/warn`** - Issue warnings to users with evidence tracking
|
||||
- **`/note`** - Add private moderation notes about users
|
||||
- **`/softban`** - Ban and immediately unban to clean up user messages
|
||||
- **`/massban`** - Ban multiple users at once using a list of user IDs
|
||||
|
||||
#### Server Management
|
||||
- **`/lockdown`** - Lock text channels to prevent message sending
|
||||
- **`/unlock`** - Remove lockdown restrictions from channels
|
||||
- **`/prune`** - Bulk delete messages from channels
|
||||
- **`/secure`** - Toggle server-wide DM and invite restrictions for new members
|
||||
|
||||
#### Configuration System
|
||||
- **`/config list`** - View current server configuration
|
||||
- **`/config logging`** - Set up moderation and event log channels
|
||||
- **`/config invite-link`** - Configure invite links sent to kicked users
|
||||
- **`/config appeal-link`** - Set ban appeal links for banned users
|
||||
- **`/config roles`** - Toggle roles as self-assignable
|
||||
- **`/config join-role`** - Set automatic role assignment for new members
|
||||
- **`/config birthday-channel`** - Configure birthday celebration channel
|
||||
|
||||
#### User Experience Features
|
||||
- **`/rank`** - View personal level and XP in the server
|
||||
- **`/leaderboard`** - Browse server level rankings with pagination
|
||||
- **`/profile`** - Customize profile appearance (avatar, colors, background)
|
||||
- **`/role`** - Self-assign permitted roles
|
||||
- **`/birthday`** - Set birthday for automatic celebrations
|
||||
- **`/level-role`** - Configure roles automatically assigned at specific levels
|
||||
|
||||
#### Administrative Tools
|
||||
- **`/cases`** - View specific moderation case details
|
||||
- **`/history`** - View comprehensive user moderation history
|
||||
- **`/help`** - Get bot information, version details, and support links
|
||||
- **`/ping`** - Check bot latency and database connectivity
|
||||
|
||||
#### Context Menu Actions
|
||||
- **Report Message** - Right-click context menu to report problematic messages
|
||||
|
||||
### Automated Features
|
||||
|
||||
#### Leveling System
|
||||
- Automatic XP gain from message activity with anti-spam cooldowns
|
||||
- Customizable level roles that auto-assign at specified levels
|
||||
- Visual profile cards with customizable backgrounds and colors
|
||||
- Server leaderboards with pagination
|
||||
|
||||
#### Security & Moderation
|
||||
- Automatic detection and removal of known spam domains
|
||||
- Automatic muting of compromised accounts posting malicious links
|
||||
- Comprehensive audit logging for all moderation actions
|
||||
- Member join/leave tracking with configurable logging
|
||||
|
||||
#### Event Logging
|
||||
- Message edit/delete tracking with content preservation
|
||||
- Voice channel activity monitoring
|
||||
- Member update tracking (nickname, role changes)
|
||||
- Moderation action logging with evidence and case numbers
|
||||
|
||||
#### Birthday System
|
||||
- Automatic birthday wishes in designated channels
|
||||
- Scheduled daily birthday checks
|
||||
- User-configurable birthday dates with validation
|
||||
|
||||
### Access Control
|
||||
- Subscription-based access model ($5/month)
|
||||
- Permission-based command restrictions
|
||||
- Moderator role validation for administrative commands
|
||||
- Granular configuration permissions
|
||||
|
||||
This section is for those interacting with a live instance of the Application.
|
||||
|
||||
## 2. Technical Documentation
|
||||
|
||||
### Architecture Overview
|
||||
|
||||
Celestine is built as a modern Discord bot using:
|
||||
- **Runtime**: Node.js with TypeScript
|
||||
- **Discord Library**: Discord.js v14
|
||||
- **Database**: MongoDB with Prisma ORM
|
||||
- **Web Server**: Express.js for health endpoints
|
||||
- **Monitoring**: Prometheus metrics integration
|
||||
- **Scheduling**: Node-schedule for automated tasks
|
||||
|
||||
### Project Structure
|
||||
|
||||
```
|
||||
src/
|
||||
├── commands/ # Slash command implementations
|
||||
├── contexts/ # Context menu command handlers
|
||||
├── events/ # Discord event handlers
|
||||
│ ├── client/ # Bot lifecycle events
|
||||
│ ├── guild/ # Server-related events
|
||||
│ ├── interaction/ # Command interaction handling
|
||||
│ ├── member/ # Member join/leave/update events
|
||||
│ ├── message/ # Message create/edit/delete events
|
||||
│ ├── thread/ # Thread-related events
|
||||
│ └── voice/ # Voice state change events
|
||||
├── interfaces/ # TypeScript type definitions
|
||||
├── modules/ # Reusable business logic
|
||||
│ ├── commands/ # Command-specific modules
|
||||
│ ├── data/ # Database interaction modules
|
||||
│ ├── events/ # Event processing modules
|
||||
│ ├── interactions/ # Interaction handling modules
|
||||
│ ├── modals/ # Modal form handlers
|
||||
│ └── subcommands/ # Subcommand implementations
|
||||
├── server/ # Web server and health endpoints
|
||||
├── utils/ # Utility functions and helpers
|
||||
├── config/ # Configuration constants
|
||||
└── database/ # Database connection setup
|
||||
```
|
||||
|
||||
### Database Schema
|
||||
|
||||
The application uses MongoDB with the following key models:
|
||||
|
||||
#### Core Data Models
|
||||
- **`cases`** - Moderation case tracking with evidence and timestamps
|
||||
- **`configs`** - Per-server configuration settings
|
||||
- **`levels`** - User XP and level progression data
|
||||
- **`levelRoles`** - Automatic role assignments by level
|
||||
- **`roles`** - Self-assignable role permissions
|
||||
- **`birthdays`** - User birthday tracking
|
||||
- **`entitlements`** - Server subscription management
|
||||
- **`security`** - Server security settings (DM/invite restrictions)
|
||||
|
||||
#### Key Features of Data Layer
|
||||
- Unique constraints for data integrity
|
||||
- Indexed queries for performance
|
||||
- Automatic relationship management
|
||||
- Soft deletion support for case history
|
||||
|
||||
### Development Setup
|
||||
|
||||
#### Prerequisites
|
||||
- Node.js 18+
|
||||
- MongoDB instance
|
||||
- Discord Bot Token
|
||||
- TypeScript compiler
|
||||
|
||||
#### Environment Variables
|
||||
```bash
|
||||
TOKEN=<discord_bot_token>
|
||||
MONGO_URI=<mongodb_connection_string>
|
||||
DEBUG_HOOK=<discord_webhook_url>
|
||||
DEV_MODE=<boolean>
|
||||
```
|
||||
|
||||
#### Build Process
|
||||
```bash
|
||||
npm install # Install dependencies
|
||||
npm run prebuild # Clean build directory and generate Prisma client
|
||||
npm run build # Compile TypeScript to JavaScript
|
||||
npm start # Run the bot
|
||||
```
|
||||
|
||||
#### Development Scripts
|
||||
- `npm run lint` - ESLint and Prettier validation
|
||||
- `npm run audit` - Dependency and code analysis with Knip
|
||||
- `npm run scan` - SonarCloud quality analysis
|
||||
|
||||
### Web Server Endpoints
|
||||
|
||||
The bot includes an Express.js server providing:
|
||||
|
||||
#### Health & Status
|
||||
- **`GET /`** - HTML landing page with bot information and invite links
|
||||
- **`GET /metrics`** - Prometheus metrics endpoint for monitoring
|
||||
|
||||
### Integration Points
|
||||
|
||||
#### Discord API
|
||||
- Slash commands and context menus
|
||||
- Webhook integrations for logging
|
||||
- Permission validation
|
||||
- Message content scanning
|
||||
|
||||
#### External Services
|
||||
- GitHub integration for version tracking
|
||||
- Prometheus metrics collection
|
||||
- MongoDB Atlas for cloud database
|
||||
- 1Password for secrets management
|
||||
|
||||
### Monitoring & Observability
|
||||
|
||||
#### Logging
|
||||
- Winston-based structured logging
|
||||
- Error tracking with unique identifiers
|
||||
- Debug message routing to Discord webhooks
|
||||
- Comprehensive audit trails
|
||||
|
||||
#### Metrics
|
||||
- Prometheus integration for performance monitoring
|
||||
- Database latency tracking
|
||||
- Command usage statistics
|
||||
- Server count and member tracking
|
||||
|
||||
### Security Considerations
|
||||
|
||||
#### Access Control
|
||||
- Subscription validation for server access
|
||||
- Permission-based command restrictions
|
||||
- Rate limiting through Discord.js built-ins
|
||||
- Input validation and sanitization
|
||||
|
||||
#### Data Protection
|
||||
- Encrypted database connections
|
||||
- Secure environment variable handling
|
||||
- Minimal data retention policies
|
||||
- Privacy-conscious logging practices
|
||||
|
||||
This section is for those interested in running their own instance of the Application.
|
||||
|
||||
## 3. Legal Documentation
|
||||
|
||||
### Subscription Model
|
||||
Celestine operates as a paid service with a $5/month subscription fee per Discord server. This subscription model ensures:
|
||||
- Sustainable development and maintenance
|
||||
- Priority support for subscribers
|
||||
- Regular feature updates and improvements
|
||||
- Infrastructure costs coverage
|
||||
|
||||
### Data Handling
|
||||
The Application processes and stores:
|
||||
- Discord user IDs and server IDs
|
||||
- Message content for moderation purposes (temporary)
|
||||
- User-configured profile information
|
||||
- Moderation case history and evidence links
|
||||
- Server configuration preferences
|
||||
|
||||
### Service Availability
|
||||
- Best-effort uptime with monitoring systems
|
||||
- Planned maintenance notifications
|
||||
- Support through designated Discord server
|
||||
- Community-driven feedback and feature requests
|
||||
|
||||
## 4. Contributing Documentation
|
||||
|
||||
### Development Workflow
|
||||
|
||||
#### Code Standards
|
||||
- TypeScript for type safety
|
||||
- ESLint and Prettier for code formatting
|
||||
- Comprehensive error handling with unique error IDs
|
||||
- JSDoc documentation for public interfaces
|
||||
|
||||
#### Testing Strategy
|
||||
- Integration testing with Discord API
|
||||
- Database transaction testing
|
||||
- Command validation testing
|
||||
- Performance benchmarking
|
||||
|
||||
#### Pull Request Process
|
||||
1. Fork the repository
|
||||
2. Create feature branch from main
|
||||
3. Implement changes with tests
|
||||
4. Ensure linting and build passes
|
||||
5. Submit PR with detailed description
|
||||
6. Address review feedback
|
||||
7. Merge after approval
|
||||
|
||||
#### Architecture Decisions
|
||||
- Modular command structure for maintainability
|
||||
- Event-driven architecture for real-time responses
|
||||
- Database abstraction through Prisma ORM
|
||||
- Configuration-driven behavior customization
|
||||
|
||||
### Extension Points
|
||||
|
||||
#### Adding New Commands
|
||||
1. Create command file in `src/commands/`
|
||||
2. Implement Command interface
|
||||
3. Add to command loader
|
||||
4. Update permissions if needed
|
||||
5. Add documentation
|
||||
|
||||
#### Custom Event Handlers
|
||||
1. Create handler in appropriate `src/events/` subdirectory
|
||||
2. Implement error handling
|
||||
3. Add to event registration system
|
||||
4. Test with Discord API
|
||||
|
||||
#### Database Schema Changes
|
||||
1. Update Prisma schema
|
||||
2. Generate migration
|
||||
3. Test migration on development database
|
||||
4. Update TypeScript interfaces
|
||||
5. Implement backward compatibility
|
||||
|
||||
@@ -0,0 +1,196 @@
|
||||
---
|
||||
title: Chibika
|
||||
---
|
||||
|
||||
Chibika (hereinafter the "Application") is a Discord bot that provides ASCII art on demand. The Application offers curated collections of ASCII art in categories such as anime and cats, along with emoji ASCII art, delivered through Discord's slash command interface with subscription-based access control.
|
||||
|
||||
## 1. User Documentation
|
||||
|
||||
This section is for those interacting with a live instance of the Application.
|
||||
|
||||
### Getting Started
|
||||
|
||||
1. **Add Chibika to Your Discord Server**: Use the [Discord OAuth2 authorization link](https://discord.com/oauth2/authorize?client_id=1396225647269122098) to add Chibika to your Discord server.
|
||||
|
||||
2. **Purchase Server Subscription**: To use Chibika's features, you must purchase a server subscription through Discord's built-in store system.
|
||||
|
||||
### Available Commands
|
||||
|
||||
#### `/about`
|
||||
Displays information about Chibika, including:
|
||||
- What the bot does
|
||||
- How to get started with server subscriptions
|
||||
- Support and help resources
|
||||
- Links to Discord server and forum for assistance
|
||||
|
||||
#### `/ascii [category]`
|
||||
Retrieves random ASCII art from the specified category:
|
||||
- **anime**: Anime-themed ASCII art
|
||||
- **cats**: Cat-themed ASCII art
|
||||
|
||||
Usage: `/ascii category:anime` or `/ascii category:cats`
|
||||
|
||||
#### `/emoji`
|
||||
Retrieves random emoji-based ASCII art from the emoji collection.
|
||||
|
||||
### Features
|
||||
|
||||
- **Random Art Selection**: Each command returns a randomly selected piece from the respective collection
|
||||
- **Subscription-Based Access**: Commands require an active Discord server subscription
|
||||
- **Interactive Components**: Art is displayed using Discord's modern component system
|
||||
- **Error Handling**: Graceful error messages for invalid inputs or system issues
|
||||
|
||||
### Support
|
||||
|
||||
If you encounter issues or need assistance:
|
||||
- Join the [Discord support server](https://chat.nhcarrigan.com)
|
||||
- Visit the [support forum](https://forum.nhcarrigan.com)
|
||||
- Contact via email: `contact@nhcarrigan.com`
|
||||
|
||||
## 2. Technical Documentation
|
||||
|
||||
This section is for those interested in running their own instance of the Application.
|
||||
|
||||
### Architecture
|
||||
|
||||
Chibika is built using:
|
||||
- **Discord.js v14.21.0**: Discord API integration
|
||||
- **Fastify v5.4.0**: Web server for health monitoring
|
||||
- **TypeScript**: Type-safe development
|
||||
- **Node.js**: Runtime environment
|
||||
|
||||
### Project Structure
|
||||
|
||||
```
|
||||
src/
|
||||
├── assets/ # ASCII art collections
|
||||
│ ├── anime.ts # Anime ASCII art data
|
||||
│ ├── cats.ts # Cat ASCII art data
|
||||
│ └── emoji.ts # Emoji ASCII art data
|
||||
├── commands/ # Discord slash commands
|
||||
│ ├── about.ts # About command handler
|
||||
│ ├── ascii.ts # ASCII art command handler
|
||||
│ └── emoji.ts # Emoji command handler
|
||||
├── config/ # Configuration files
|
||||
│ └── entitlements.ts # Guild entitlement configuration
|
||||
├── events/ # Discord event handlers
|
||||
│ └── interactionCreate.ts # Command interaction handling
|
||||
├── interfaces/ # TypeScript interfaces
|
||||
│ ├── ascii.ts # ASCII art data structure
|
||||
│ └── command.ts # Command handler interface
|
||||
├── modules/ # Utility modules
|
||||
│ ├── getArtComponents.ts # Discord component generation
|
||||
│ └── sendUnentitledResponse.ts # Subscription check responses
|
||||
├── server/ # Web server
|
||||
│ └── serve.ts # Health monitoring server
|
||||
├── utils/ # Utility functions
|
||||
│ ├── checkEntitlement.ts # Subscription verification
|
||||
│ ├── errorHandler.ts # Error handling
|
||||
│ ├── getRandomValue.ts # Random selection utility
|
||||
│ └── logger.ts # Logging utility
|
||||
└── index.ts # Application entry point
|
||||
```
|
||||
|
||||
### Installation and Setup
|
||||
|
||||
1. **Prerequisites**:
|
||||
- Node.js (compatible with package manager pnpm@10.13.1)
|
||||
- Discord Bot Token
|
||||
- Discord Application with appropriate permissions
|
||||
|
||||
2. **Installation**:
|
||||
```bash
|
||||
pnpm install
|
||||
```
|
||||
|
||||
3. **Environment Configuration**:
|
||||
Create a `prod.env` file with:
|
||||
```
|
||||
DISCORD_TOKEN=your_discord_bot_token_here
|
||||
```
|
||||
|
||||
4. **Build**:
|
||||
```bash
|
||||
pnpm run build
|
||||
```
|
||||
|
||||
5. **Start**:
|
||||
```bash
|
||||
pnpm start
|
||||
```
|
||||
|
||||
### Development
|
||||
|
||||
- **Linting**: `pnpm run lint` (ESLint with @nhcarrigan/eslint-config)
|
||||
- **Testing**: `pnpm run test` (Vitest)
|
||||
- **TypeScript**: Configured with @nhcarrigan/typescript-config
|
||||
|
||||
### Key Components
|
||||
|
||||
#### Entitlement System
|
||||
- Subscription verification through Discord's entitlement API (`src/utils/checkEntitlement.ts:16`)
|
||||
- Fallback to hardcoded entitled guilds (`src/config/entitlements.ts`)
|
||||
- Un-entitled users receive subscription prompts (`src/modules/sendUnentitledResponse.ts`)
|
||||
|
||||
#### ASCII Art Management
|
||||
- Structured data format with `text` and `author` fields (`src/interfaces/ascii.ts:7`)
|
||||
- Category-based organization (anime, cats, emoji)
|
||||
- Random selection utility (`src/utils/getRandomValue.ts`)
|
||||
|
||||
#### Web Server
|
||||
- Health monitoring server on port 5018 (`src/server/serve.ts:65`)
|
||||
- Static HTML page with bot information and links
|
||||
- Integration with nhcarrigan.com ecosystem
|
||||
|
||||
## 3. Legal Documentation
|
||||
|
||||
This section is for expansions to our legal policies specific to the Application.
|
||||
|
||||
### Licensing
|
||||
- Source code licensed under Naomi's Public License
|
||||
- Copyright held by Naomi Carrigan (@nhcarrigan)
|
||||
|
||||
### Terms and Privacy
|
||||
- [Global Terms of Service](https://docs.nhcarrigan.com/#/terms)
|
||||
- [Privacy Policy](https://docs.nhcarrigan.com/#/privacy)
|
||||
|
||||
### Security
|
||||
- Security guidelines and reporting procedures outlined in `SECURITY.md`
|
||||
- Responsible disclosure encouraged through GitHub issues
|
||||
|
||||
## 4. Contributing Documentation
|
||||
|
||||
This section is for documentation related to contributing to the Application's codebase.
|
||||
|
||||
### Contributing Guidelines
|
||||
- Comprehensive contributing guidelines: https://docs.nhcarrigan.com/#/contributing
|
||||
- Additional project-specific guidelines in `CONTRIBUTING.md`
|
||||
|
||||
### Code Standards
|
||||
- **ESLint Configuration**: @nhcarrigan/eslint-config v5.2.0
|
||||
- **TypeScript**: Strict configuration via @nhcarrigan/typescript-config v4.0.0
|
||||
- **Testing**: Vitest for unit testing
|
||||
- **Code Style**: Enforced through automated linting with zero warnings policy
|
||||
|
||||
### Development Workflow
|
||||
1. Fork the repository
|
||||
2. Create feature branch
|
||||
3. Make changes following code standards
|
||||
4. Run tests and linting: `pnpm run test && pnpm run lint`
|
||||
5. Build successfully: `pnpm run build`
|
||||
6. Submit pull request
|
||||
|
||||
### Issue Reporting
|
||||
- Bug reports and feature requests via [GitHub Issues](https://github.com/anthropics/claude-code/issues)
|
||||
- Security issues through responsible disclosure (see `SECURITY.md`)
|
||||
|
||||
### Community
|
||||
- [Discord Server](https://chat.nhcarrigan.com) for real-time discussion
|
||||
- Code of Conduct available at repository root
|
||||
|
||||
### Architecture Decisions
|
||||
- Discord.js v14 for modern Discord API features
|
||||
- TypeScript for type safety and developer experience
|
||||
- Fastify for lightweight web server functionality
|
||||
- Component-based Discord interactions for enhanced user experience
|
||||
- Subscription-based access model through Discord's monetization features
|
||||
@@ -0,0 +1,38 @@
|
||||
---
|
||||
title: Clarion
|
||||
---
|
||||
|
||||
Clarion (hereinafter the "Application") is a Discord bot with dashboard that allows server mangers to post and edit announcements, rules, and similar.
|
||||
|
||||
## 1. User Documentation
|
||||
|
||||
:::note
|
||||
This section is coming soon!
|
||||
:::
|
||||
|
||||
This section is for those interacting with a live instance of the Application.
|
||||
|
||||
## 2. Technical Documentation
|
||||
|
||||
:::note
|
||||
This section is coming soon!
|
||||
:::
|
||||
|
||||
This section is for those interested in running their own instance of the Application.
|
||||
|
||||
## 3. Legal Documentation
|
||||
|
||||
:::note
|
||||
This section is coming soon!
|
||||
:::
|
||||
|
||||
This section is for expansions to our legal policies specific to the Application.
|
||||
|
||||
## 4. Contributing Documentation
|
||||
|
||||
:::note
|
||||
This section is coming soon!
|
||||
:::
|
||||
|
||||
This section is for documentation related to contributing to the Application's codebase.
|
||||
|
||||
@@ -0,0 +1,322 @@
|
||||
---
|
||||
title: Cordelia Taryne
|
||||
---
|
||||
|
||||
Cordelia Taryne (hereinafter the "Application") is an AI-powered multi-purpose assistant Discord bot that leverages Anthropic's Claude AI to provide various text processing, analysis, and assistance features. The bot features a distinctive vampire personality named Cordelia with haughty and self-inflated characteristics, providing users with intelligent assistance while maintaining a unique character persona.
|
||||
|
||||
## 1. User Documentation
|
||||
|
||||
This section is for those interacting with a live instance of the Application.
|
||||
|
||||
### Getting Started
|
||||
|
||||
To use Cordelia Taryne, [add her to your Discord account](https://discord.com/oauth2/authorize?client_id=1338664192714211459).
|
||||
|
||||
### Available Commands
|
||||
|
||||
Cordelia Taryne offers the following slash commands:
|
||||
|
||||
#### `/about`
|
||||
- **Description**: Learn more about the bot
|
||||
- **Usage**: Simply run `/about` to get information about the bot, including version and commit details
|
||||
- **Access**: Available to all users
|
||||
|
||||
#### `/query`
|
||||
- **Description**: Ask Cordelia a general question
|
||||
- **Parameters**: `prompt` (required, max 2000 characters) - The question you would like to ask
|
||||
- **Usage**: `/query prompt: What is the capital of France?`
|
||||
- **Access**: Requires active subscription
|
||||
|
||||
#### `/alt-text`
|
||||
- **Description**: Generate descriptive and accessible alt-text for images
|
||||
- **Parameters**: `image` (required) - The image file to generate alt-text for
|
||||
- **Supported formats**: JPG, JPEG, PNG, GIF, WEBP
|
||||
- **Limitations**: Maximum 5MB file size, maximum 8000px dimensions
|
||||
- **Usage**: Upload an image and run `/alt-text image: [your-image]`
|
||||
- **Access**: Requires active subscription
|
||||
|
||||
#### `/eval`
|
||||
- **Description**: Have Cordelia evaluate and run code snippets
|
||||
- **Parameters**: `code` (required, max 2000 characters) - The code to evaluate
|
||||
- **Usage**: `/eval code: 2 + 2 * 3`
|
||||
- **Access**: Requires active subscription
|
||||
|
||||
#### `/mood`
|
||||
- **Description**: Analyze the sentiment and mood of text passages
|
||||
- **Parameters**: `text` (required, max 2000 characters) - The text to analyze
|
||||
- **Usage**: `/mood text: I had an amazing day at the beach!`
|
||||
- **Access**: Requires active subscription
|
||||
|
||||
#### `/proofread`
|
||||
- **Description**: Have Cordelia proofread text for grammar and style
|
||||
- **Parameters**: `text` (required, max 2000 characters) - The text to proofread
|
||||
- **Usage**: `/proofread text: This are my essay about science.`
|
||||
- **Access**: Requires active subscription
|
||||
|
||||
#### `/summarise`
|
||||
- **Description**: Generate concise summaries of longer text passages
|
||||
- **Parameters**: `text` (required, max 2000 characters) - The text to summarize
|
||||
- **Usage**: `/summarise text: [long article or document text]`
|
||||
- **Access**: Requires active subscription
|
||||
|
||||
### Subscription Model
|
||||
|
||||
Most features require an active subscription. The bot uses Discord's premium subscription system:
|
||||
- Free users can access the `/about` command
|
||||
- Subscribers gain access to all AI-powered features
|
||||
- Bot owner (developer) has unlimited access for testing and maintenance
|
||||
|
||||
### Personality
|
||||
|
||||
Cordelia has a distinctive personality:
|
||||
- **Character**: A vampire assistant with a haughty and self-inflated demeanour
|
||||
- **Appearance**: Blonde hair in twin buns, pink-red cat-like eyes, pale skin, gold dress
|
||||
- **Behavior**: Subtly condescending but never directly rude or insulting
|
||||
- **Communication**: Professional assistance without role-playing text
|
||||
|
||||
### Support and Feedback
|
||||
|
||||
- **Bug Reports**: Open a GitHub issue
|
||||
- **Feature Requests**: Create a GitHub issue with the enhancement label
|
||||
- **General Support**: Visit the [chat server](http://chat.nhcarrigan.com)
|
||||
- **Contact**: Email `contact@nhcarrigan.com`
|
||||
|
||||
## 2. Technical Documentation
|
||||
|
||||
This section is for those interested in running their own instance of the Application.
|
||||
|
||||
### Architecture Overview
|
||||
|
||||
Cordelia Taryne is built with:
|
||||
- **Runtime**: Node.js with TypeScript
|
||||
- **Discord Library**: discord.js v14
|
||||
- **AI Provider**: Anthropic Claude API (Claude Sonnet 4)
|
||||
- **Web Server**: Fastify (for status page)
|
||||
- **Package Manager**: pnpm
|
||||
- **Build System**: TypeScript compiler
|
||||
|
||||
### System Requirements
|
||||
|
||||
- Node.js 22+
|
||||
- pnpm package manager
|
||||
- Git for version control
|
||||
- Environment variable management (1Password recommended)
|
||||
|
||||
### Environment Variables
|
||||
|
||||
Required environment variables:
|
||||
- `DISCORD_TOKEN`: Discord bot token
|
||||
- `AI_TOKEN`: Anthropic API key
|
||||
- `npm_package_version`: Application version (auto-set by npm/pnpm)
|
||||
|
||||
### Installation and Setup
|
||||
|
||||
1. **Clone the repository**:
|
||||
```bash
|
||||
git clone https://github.com/nhcarrigan/cordelia-taryne.git
|
||||
cd cordelia-taryne
|
||||
```
|
||||
|
||||
2. **Install dependencies**:
|
||||
```bash
|
||||
pnpm install
|
||||
```
|
||||
|
||||
3. **Set up environment variables**:
|
||||
- Create a `prod.env` file with required variables
|
||||
- Configure 1Password CLI for secure environment management
|
||||
|
||||
4. **Build the application**:
|
||||
```bash
|
||||
pnpm run build
|
||||
```
|
||||
|
||||
5. **Deploy slash commands**:
|
||||
```bash
|
||||
node prod/commands/[command-name].js
|
||||
```
|
||||
|
||||
6. **Start the application**:
|
||||
```bash
|
||||
pnpm start
|
||||
```
|
||||
|
||||
### Project Structure
|
||||
|
||||
```
|
||||
src/
|
||||
├── index.ts # Main application entry point
|
||||
├── commands/ # Slash command definitions
|
||||
├── modules/ # Command implementation logic
|
||||
├── config/
|
||||
│ └── personality.ts # Bot personality configuration
|
||||
├── server/
|
||||
│ └── serve.ts # Web server for status page
|
||||
└── utils/ # Utility functions
|
||||
├── ai.ts # Anthropic AI client
|
||||
├── calculateCost.ts # Usage cost calculation
|
||||
├── isSubscribed.ts # Subscription validation
|
||||
├── logger.ts # Logging utilities
|
||||
└── replyToError.ts # Error handling
|
||||
```
|
||||
|
||||
### Development Workflow
|
||||
|
||||
1. **Linting**: `pnpm run lint`
|
||||
2. **Building**: `pnpm run build`
|
||||
3. **Development**: Make changes in `src/`, build, and test
|
||||
4. **Deployment**: Use the build artifacts in `prod/`
|
||||
|
||||
### API Integration
|
||||
|
||||
The bot integrates with:
|
||||
- **Discord API**: For bot functionality and user interactions
|
||||
- **Anthropic API**: For AI-powered text processing
|
||||
- **Discord Premium**: For subscription management
|
||||
|
||||
### Monitoring and Logging
|
||||
|
||||
- Uses `@nhcarrigan/logger` for structured logging
|
||||
- Tracks API usage and costs for each command
|
||||
- Monitors subscription events (create/delete)
|
||||
- Error handling with automatic logging
|
||||
|
||||
### Security Considerations
|
||||
|
||||
- All AI interactions are ephemeral (private responses)
|
||||
- Subscription validation before AI API calls
|
||||
- Input validation and sanitization
|
||||
- Secure environment variable management
|
||||
- Rate limiting through Discord's built-in mechanisms
|
||||
|
||||
## 3. Legal Documentation
|
||||
|
||||
This section is for expansions to our legal policies specific to the Application.
|
||||
|
||||
### Data Processing
|
||||
|
||||
- **User Data**: Discord user IDs are logged for usage tracking
|
||||
- **Content Processing**: Text and images are sent to Anthropic for processing
|
||||
- **Retention**: Logs are retained according to standard practices
|
||||
- **Privacy**: All interactions are ephemeral and not stored permanently
|
||||
|
||||
### Third-Party Services
|
||||
|
||||
The Application integrates with:
|
||||
- **Discord**: User authentication and interaction handling
|
||||
- **Anthropic**: AI text and image processing
|
||||
- **1Password**: Secure environment variable management
|
||||
|
||||
### Subscription Terms
|
||||
|
||||
- Subscriptions are managed through Discord's premium system
|
||||
- Features are gated behind active subscription status
|
||||
- Bot owner maintains unlimited access for maintenance
|
||||
- Usage is tracked and logged for billing transparency
|
||||
|
||||
### Intellectual Property
|
||||
|
||||
- Bot personality and character design are original creations
|
||||
- Source code is licensed under Naomi's Public License
|
||||
- Avatar and visual assets are proprietary
|
||||
- AI model responses are generated by Anthropic's Claude
|
||||
|
||||
### Usage Limits
|
||||
|
||||
- Text input limited to 2000 characters per command
|
||||
- Image uploads limited to 5MB and 8000px dimensions
|
||||
- API usage tracked and billed to service operator
|
||||
- Fair use policies apply to prevent abuse
|
||||
|
||||
## 4. Contributing Documentation
|
||||
|
||||
This section is for documentation related to contributing to the Application's codebase.
|
||||
|
||||
### Getting Started
|
||||
|
||||
1. **Read the Guidelines**: Review `CONTRIBUTING.md` and `CODE_OF_CONDUCT.md`
|
||||
2. **Fork the Repository**: Create your own fork on GitHub
|
||||
3. **Set Up Development Environment**: Follow technical documentation setup
|
||||
4. **Create Feature Branch**: Use descriptive branch names
|
||||
|
||||
### Development Standards
|
||||
|
||||
#### Code Quality
|
||||
- **TypeScript**: Strict typing required
|
||||
- **ESLint**: Must pass linting with zero warnings (`pnpm run lint`)
|
||||
- **Formatting**: Follow established code style
|
||||
- **Comments**: JSDoc comments for all public functions
|
||||
|
||||
#### Architecture Patterns
|
||||
- **Command Pattern**: Separate command definitions from implementations
|
||||
- **Module Separation**: Clear separation between Discord logic and AI logic
|
||||
- **Error Handling**: Comprehensive error handling with logging
|
||||
- **Type Safety**: Proper TypeScript types throughout
|
||||
|
||||
#### File Structure Conventions
|
||||
```
|
||||
src/
|
||||
├── commands/[name].ts # Discord command definitions
|
||||
├── modules/[name].ts # Command implementation logic
|
||||
├── utils/[name].ts # Shared utilities
|
||||
└── config/[name].ts # Configuration files
|
||||
```
|
||||
|
||||
### Contribution Process
|
||||
|
||||
1. **Issue Creation**: Create detailed GitHub issues for bugs/features
|
||||
2. **Discussion**: Discuss approach before starting work
|
||||
3. **Implementation**: Follow coding standards and patterns
|
||||
4. **Testing**: Test thoroughly in development environment
|
||||
5. **Pull Request**: Create detailed PR with description and testing notes
|
||||
6. **Review**: Address feedback from maintainers
|
||||
7. **Merge**: Maintainers will merge approved changes
|
||||
|
||||
### Testing Guidelines
|
||||
|
||||
- **Manual Testing**: Test all command paths and error cases
|
||||
- **Integration Testing**: Verify Discord and Anthropic integrations
|
||||
- **Subscription Testing**: Test both subscribed and unsubscribed flows
|
||||
- **Error Scenarios**: Test network failures, API errors, and edge cases
|
||||
|
||||
### Feature Development
|
||||
|
||||
#### Adding New Commands
|
||||
1. Create command definition in `src/commands/[name].ts`
|
||||
2. Implement logic in `src/modules/[name].ts`
|
||||
3. Add command to main handler in `src/index.ts`
|
||||
4. Test subscription gating and error handling
|
||||
5. Update documentation
|
||||
|
||||
#### Modifying AI Behavior
|
||||
1. Update personality configuration if needed
|
||||
2. Modify system prompts in relevant modules
|
||||
3. Test with various inputs and edge cases
|
||||
4. Consider cost implications of changes
|
||||
|
||||
### Code Review Standards
|
||||
|
||||
- **Functionality**: Does the code work as intended?
|
||||
- **Style**: Does it follow established patterns?
|
||||
- **Security**: Are there any security concerns?
|
||||
- **Performance**: Are there efficiency improvements?
|
||||
- **Documentation**: Are changes properly documented?
|
||||
|
||||
### Release Process
|
||||
|
||||
1. **Version Bump**: Update version in `package.json`
|
||||
2. **Build**: Ensure clean build with `pnpm run build`
|
||||
3. **Testing**: Comprehensive testing of new features
|
||||
4. **Documentation**: Update relevant documentation
|
||||
5. **Deployment**: Deploy to production environment
|
||||
6. **Monitoring**: Monitor for issues post-deployment
|
||||
|
||||
### Community Guidelines
|
||||
|
||||
- **Respectful Communication**: Follow Code of Conduct
|
||||
- **Constructive Feedback**: Provide helpful, actionable feedback
|
||||
- **Collaboration**: Work together to improve the project
|
||||
- **Learning**: Help others learn and grow
|
||||
- **Recognition**: Credit contributors appropriately
|
||||
|
||||
For more detailed contributing information, see the `CONTRIBUTING.md` file in the repository.
|
||||
@@ -0,0 +1,662 @@
|
||||
---
|
||||
title: Data API
|
||||
---
|
||||
|
||||
Data API (hereinafter the "Application") is a lightweight web API server designed to host and serve personal and professional data for the NHCarrigan ecosystem. The Application acts as a centralized headless CMS, providing structured data in both YAML and JSON formats to power multiple websites, applications, and Discord bots.
|
||||
|
||||
## 1. User Documentation
|
||||
|
||||
This section is for those interacting with a live instance of the Application.
|
||||
|
||||
### 1.1 API Overview
|
||||
|
||||
The Data Server provides a RESTful API that serves various categories of data through simple HTTP GET requests. All endpoints support both YAML and JSON formats.
|
||||
|
||||
**Base URL**: The server runs on `https://data.nhcarrigan.com'.
|
||||
|
||||
**Root Endpoint**:
|
||||
- `GET /` - Returns a welcome message: "Welcome to the NHCarrigan Data API!"
|
||||
|
||||
### 1.2 Available Endpoints
|
||||
|
||||
All data endpoints are available in two formats by changing the file extension:
|
||||
|
||||
#### Projects Data
|
||||
- `GET /projects.json` - Returns project portfolio data in JSON format
|
||||
- `GET /projects.yml` - Returns project portfolio data in YAML format
|
||||
|
||||
Contains information about development projects including:
|
||||
- Project names and descriptions
|
||||
- Project URLs and repository links
|
||||
- Project categories (websites, community tools, Discord bots, etc.)
|
||||
- Avatar images
|
||||
- Status indicators (premium, work-in-progress)
|
||||
|
||||
#### Resume Data
|
||||
- `GET /resume.json` - Returns resume data in JSON format
|
||||
- `GET /resume.yml` - Returns resume data in YAML format
|
||||
|
||||
Contains comprehensive professional information:
|
||||
- Employment history (current and prior positions)
|
||||
- Volunteer experience
|
||||
- Education credentials
|
||||
- Professional certifications
|
||||
- Notable projects
|
||||
- Publications and articles
|
||||
|
||||
#### Testimonials
|
||||
- `GET /testimonials.json` - Returns testimonials in JSON format
|
||||
- `GET /testimonials.yml` - Returns testimonials in YAML format
|
||||
|
||||
Contains professional testimonials and recommendations with:
|
||||
- Testimonial author names
|
||||
- Testimonial content
|
||||
- Date information
|
||||
|
||||
#### Donation Information
|
||||
- `GET /donate.json` - Returns donation platform data in JSON format
|
||||
- `GET /donate.yml` - Returns donation platform data in YAML format
|
||||
|
||||
Contains details about donation platforms:
|
||||
- Platform names and URLs
|
||||
- Icon references
|
||||
- Color schemes
|
||||
- Platform descriptions
|
||||
|
||||
#### Funding Information
|
||||
- `GET /funding.json` - Returns comprehensive funding data in JSON format
|
||||
- `GET /funding.yml` - Returns comprehensive funding data in YAML format
|
||||
|
||||
Contains detailed funding information:
|
||||
- Entity details
|
||||
- Project listings with unique identifiers
|
||||
- Funding channel information
|
||||
- Subscription plan details
|
||||
- Financial history and records
|
||||
|
||||
### 1.3 CORS Support
|
||||
|
||||
The Application has CORS enabled for all origins, allowing consumption from any domain without cross-origin restrictions.
|
||||
|
||||
### 1.4 Content Types
|
||||
|
||||
The Application automatically sets appropriate Content-Type headers:
|
||||
- JSON endpoints: `application/json`
|
||||
- YAML endpoints: `text/yaml` or `application/x-yaml`
|
||||
|
||||
### 1.5 Rate Limiting
|
||||
|
||||
Currently, the Application does not implement rate limiting. Users should be respectful of the server resources and avoid excessive requests.
|
||||
|
||||
### 1.6 Data Freshness
|
||||
|
||||
Data is compiled from YAML source files during the build process. To receive updated data, the server must be rebuilt and restarted when source data changes.
|
||||
|
||||
## 2. Technical Documentation
|
||||
|
||||
This section is for those interested in running their own instance of the Application.
|
||||
|
||||
### 2.1 Prerequisites
|
||||
|
||||
Before running the Application, ensure you have the following installed:
|
||||
|
||||
- **Node.js**: Latest LTS version recommended
|
||||
- **pnpm**: Version 10.17.0 (specified in package.json as packageManager)
|
||||
- **1Password CLI** (optional): For secure environment variable management in production
|
||||
|
||||
### 2.2 Technology Stack
|
||||
|
||||
- **Runtime**: Node.js with ES modules
|
||||
- **Language**: TypeScript 5.9.2
|
||||
- **Web Framework**: Fastify 5.6.1
|
||||
- **Data Format**: YAML (source) → JSON (runtime)
|
||||
- **Testing**: Vitest 3.2.4
|
||||
- **Linting**: ESLint 9.36.0
|
||||
- **Package Manager**: pnpm 10.17.0
|
||||
|
||||
### 2.3 Installation
|
||||
|
||||
1. Clone the repository:
|
||||
```bash
|
||||
git clone <repository-url>
|
||||
cd data
|
||||
```
|
||||
|
||||
2. Install dependencies using pnpm:
|
||||
```bash
|
||||
pnpm install
|
||||
```
|
||||
|
||||
### 2.4 Project Structure
|
||||
|
||||
```
|
||||
/data/
|
||||
├── src/ # TypeScript source code
|
||||
│ ├── index.ts # Main entry point - Fastify server
|
||||
│ ├── modules/
|
||||
│ │ └── buildRoutes.ts # Dynamic route builder
|
||||
│ ├── interfaces/ # TypeScript type definitions
|
||||
│ │ ├── projects.ts
|
||||
│ │ ├── resume.ts
|
||||
│ │ ├── testimonials.ts
|
||||
│ │ ├── donate.ts
|
||||
│ │ └── funding.ts
|
||||
│ └── utils/
|
||||
│ └── logger.ts # Logger configuration
|
||||
├── data/ # Data directory (YAML sources and JSON builds)
|
||||
│ ├── projects.yml / .json
|
||||
│ ├── resume.yml / .json
|
||||
│ ├── testimonials.yml / .json
|
||||
│ ├── donate.yml / .json
|
||||
│ └── funding.yml / .json
|
||||
├── test/
|
||||
│ └── yaml.spec.ts # Comprehensive validation tests
|
||||
├── prod/ # Compiled JavaScript output
|
||||
├── build.js # YAML to JSON build script
|
||||
├── tsconfig.json # TypeScript configuration
|
||||
└── package.json # Project metadata and scripts
|
||||
```
|
||||
|
||||
### 2.5 Configuration
|
||||
|
||||
The Application uses the following configuration points:
|
||||
|
||||
#### Server Port
|
||||
- Default: Port 9999
|
||||
- Location: `src/index.ts:34`
|
||||
- Can be modified by editing the port number in the source code
|
||||
|
||||
#### Data Directory
|
||||
- Location: `./data`
|
||||
- Contains both source YAML files and built JSON files
|
||||
- Referenced in: `src/modules/buildRoutes.ts`
|
||||
|
||||
#### CORS Settings
|
||||
- Currently configured to allow all origins
|
||||
- Location: `src/index.ts:30`
|
||||
- Can be restricted by modifying the Fastify CORS configuration
|
||||
|
||||
### 2.6 Data Management
|
||||
|
||||
#### Adding New Data Endpoints
|
||||
|
||||
1. Create a new YAML file in the `/data` directory:
|
||||
```bash
|
||||
touch data/newdata.yml
|
||||
```
|
||||
|
||||
2. Create a corresponding TypeScript interface in `src/interfaces/`:
|
||||
```typescript
|
||||
// src/interfaces/newdata.ts
|
||||
export interface NewData {
|
||||
// Define your data structure
|
||||
}
|
||||
```
|
||||
|
||||
3. The Application will automatically:
|
||||
- Generate routes for `/newdata.yml` and `/newdata.json`
|
||||
- Serve the content when the server restarts
|
||||
|
||||
#### Editing Existing Data
|
||||
|
||||
1. Edit the YAML files in the `/data` directory
|
||||
2. Run the build command to convert YAML to JSON
|
||||
3. Restart the server to serve updated data
|
||||
|
||||
The YAML files are the source of truth. Always edit YAML files, not JSON files, as JSON files are auto-generated.
|
||||
|
||||
### 2.7 Build Process
|
||||
|
||||
The build process consists of two steps:
|
||||
|
||||
1. **YAML to JSON Conversion**: `node build.js`
|
||||
- Reads all YAML files from the data directory
|
||||
- Generates corresponding JSON files
|
||||
- Preserves the human-readable YAML as the source of truth
|
||||
|
||||
2. **TypeScript Compilation**: `tsc`
|
||||
- Compiles TypeScript source code to JavaScript
|
||||
- Outputs to the `/prod` directory
|
||||
- Uses configuration from `tsconfig.json` (extends @nhcarrigan/typescript-config)
|
||||
|
||||
To run the complete build:
|
||||
```bash
|
||||
pnpm run build
|
||||
```
|
||||
|
||||
### 2.8 Available Scripts
|
||||
|
||||
```bash
|
||||
# Build (YAML → JSON + TypeScript compilation)
|
||||
pnpm run build
|
||||
|
||||
# Start production server (with 1Password environment variables)
|
||||
pnpm run start
|
||||
|
||||
# Run test suite
|
||||
pnpm test
|
||||
|
||||
# Linting
|
||||
pnpm run lint # Run all linters
|
||||
pnpm run lint:ts # ESLint only
|
||||
pnpm run lint:spelling # Spell check YAML files
|
||||
pnpm run lint:yaml # YAML validation
|
||||
```
|
||||
|
||||
### 2.9 Testing
|
||||
|
||||
The Application includes comprehensive test coverage using Vitest.
|
||||
|
||||
**Test File**: `test/yaml.spec.ts`
|
||||
|
||||
**What is tested**:
|
||||
- Data structure validation against TypeScript interfaces
|
||||
- URL reachability for all external links (with retry logic)
|
||||
- Date format validation
|
||||
- Required field presence
|
||||
- Data type correctness
|
||||
|
||||
**Running tests**:
|
||||
```bash
|
||||
pnpm test
|
||||
```
|
||||
|
||||
Tests have a 120-second timeout to accommodate URL validation checks, which may be rate-limited.
|
||||
|
||||
### 2.10 Development Workflow
|
||||
|
||||
1. **Make changes to data**:
|
||||
- Edit YAML files in `/data` directory
|
||||
- Use your preferred text editor
|
||||
|
||||
2. **Validate your changes**:
|
||||
```bash
|
||||
pnpm run lint:yaml # Validate YAML syntax
|
||||
pnpm run lint:spelling # Check spelling
|
||||
pnpm test # Run full test suite
|
||||
```
|
||||
|
||||
3. **Build the application**:
|
||||
```bash
|
||||
pnpm run build
|
||||
```
|
||||
|
||||
4. **Start the server locally**:
|
||||
```bash
|
||||
node ./prod/index.js
|
||||
```
|
||||
|
||||
Or with 1Password environment variables:
|
||||
```bash
|
||||
pnpm run start
|
||||
```
|
||||
|
||||
5. **Test endpoints**:
|
||||
```bash
|
||||
curl http://localhost:9999/projects.json
|
||||
```
|
||||
|
||||
### 2.11 Deployment
|
||||
|
||||
#### Environment Variables
|
||||
|
||||
The production start script uses 1Password CLI for secure environment variable management:
|
||||
```bash
|
||||
op run --env-file ./prod.env -- node ./prod/index.js
|
||||
```
|
||||
|
||||
Create a `prod.env` file with 1Password references for any required environment variables.
|
||||
|
||||
#### Production Considerations
|
||||
|
||||
1. **Reverse Proxy**: Consider running the Application behind a reverse proxy (nginx, Apache) for:
|
||||
- SSL/TLS termination
|
||||
- Rate limiting
|
||||
- Caching
|
||||
- Load balancing
|
||||
|
||||
2. **Process Management**: Use a process manager to ensure uptime:
|
||||
- PM2
|
||||
- systemd
|
||||
- Docker with restart policies
|
||||
|
||||
3. **Monitoring**: Implement monitoring for:
|
||||
- Server health
|
||||
- Response times
|
||||
- Error rates
|
||||
|
||||
4. **Backups**: Regularly backup the `/data` directory, as it contains the source YAML files.
|
||||
|
||||
### 2.12 Troubleshooting
|
||||
|
||||
#### Server won't start
|
||||
- Verify port 9999 is not in use
|
||||
- Check that dependencies are installed (`pnpm install`)
|
||||
- Ensure the build completed successfully (`pnpm run build`)
|
||||
|
||||
#### Data not updating
|
||||
- Verify you edited the YAML files, not JSON files
|
||||
- Run `pnpm run build` to regenerate JSON
|
||||
- Restart the server
|
||||
|
||||
#### Test failures
|
||||
- **URL validation failures**: May be due to rate limiting; tests include retry logic
|
||||
- **Data structure failures**: Ensure YAML structure matches TypeScript interfaces
|
||||
- **Spelling failures**: Add custom words to cspell configuration if needed
|
||||
|
||||
## 3. Legal Documentation
|
||||
|
||||
This section is for expansions to our legal policies specific to the Application.
|
||||
|
||||
### 3.1 Data Usage and Privacy
|
||||
|
||||
#### Data Served by the Application
|
||||
|
||||
The Application serves public, non-sensitive data intended for public consumption. The data categories include:
|
||||
|
||||
- **Projects**: Public information about open-source projects and portfolio work
|
||||
- **Resume**: Professional experience, education, and certifications
|
||||
- **Testimonials**: Public testimonials and recommendations
|
||||
- **Donation Information**: Public donation platform links
|
||||
- **Funding Information**: Public funding channel and subscription information
|
||||
|
||||
#### No Personal User Data Collection
|
||||
|
||||
The Application itself does not collect, store, or process any personal data from users accessing the API. The server:
|
||||
- Does not require authentication
|
||||
- Does not track user requests
|
||||
- Does not use cookies or similar tracking technologies
|
||||
- Does not log IP addresses or personally identifiable information
|
||||
|
||||
#### CORS and Third-Party Access
|
||||
|
||||
By enabling CORS for all origins, the Application explicitly permits third-party websites and applications to access the served data. This is intentional and by design, as the data is meant for public consumption.
|
||||
|
||||
### 3.2 Data Accuracy and Updates
|
||||
|
||||
The data served by the Application is maintained on a best-effort basis. While efforts are made to ensure accuracy:
|
||||
|
||||
- Data may become outdated between updates
|
||||
- URLs and external links may become invalid over time
|
||||
- No guarantee of real-time data freshness is provided
|
||||
|
||||
Users consuming this data should:
|
||||
- Implement appropriate error handling for unavailable resources
|
||||
- Cache responses responsibly
|
||||
- Not rely on the Application for time-sensitive or critical decisions
|
||||
|
||||
### 3.3 Service Availability
|
||||
|
||||
The Application is provided "as-is" without guarantees of:
|
||||
- Continuous availability
|
||||
- Specific uptime percentages
|
||||
- Response time performance
|
||||
- Data freshness
|
||||
|
||||
Users should not build critical systems that depend on the Application's availability without implementing appropriate fallbacks and error handling.
|
||||
|
||||
### 3.4 Intellectual Property
|
||||
|
||||
#### Data Content
|
||||
|
||||
The data served by the Application contains information about projects, professional experience, and other content that may be subject to intellectual property rights:
|
||||
|
||||
- Project names, descriptions, and logos may be trademarks
|
||||
- Code and software referenced may be under various open-source licenses
|
||||
- Testimonial content remains the intellectual property of the original authors
|
||||
|
||||
Users consuming this data should:
|
||||
- Respect intellectual property rights
|
||||
- Provide proper attribution when displaying data
|
||||
- Review specific licenses for any referenced projects or software
|
||||
|
||||
#### Application Code
|
||||
|
||||
The Application's source code is licensed under the terms specified in the LICENSE.md file. Copyright is held by Naomi Carrigan.
|
||||
|
||||
### 3.5 Terms of Service
|
||||
|
||||
The general Terms of Service can be found at: https://docs.nhcarrigan.com/#/terms
|
||||
|
||||
#### Application-Specific Terms
|
||||
|
||||
Users of the Application agree to:
|
||||
- Use the API in good faith and not for malicious purposes
|
||||
- Not attempt to overwhelm the server with excessive requests
|
||||
- Not attempt to exploit vulnerabilities or security weaknesses
|
||||
- Respect the intended public use of the data
|
||||
|
||||
### 3.6 Privacy Policy
|
||||
|
||||
The general Privacy Policy can be found at: https://docs.nhcarrigan.com/#/privacy
|
||||
|
||||
#### Application-Specific Privacy Notes
|
||||
|
||||
As noted in section 3.1, the Application does not collect user data. The privacy policy primarily applies to:
|
||||
- Contributors to the codebase (governed by GitHub's privacy policy)
|
||||
- Data maintainers with access to the data repository
|
||||
|
||||
## 4. Contributing Documentation
|
||||
|
||||
This section is for documentation related to contributing to the Application's codebase.
|
||||
|
||||
### 4.1 General Contributing Guidelines
|
||||
|
||||
General contributing guidelines can be found at: https://docs.nhcarrigan.com/#/contributing
|
||||
|
||||
Please review these guidelines before contributing to the Application.
|
||||
|
||||
### 4.2 Code of Conduct
|
||||
|
||||
Before interacting with the project or community, please read the [Code of Conduct](CODE_OF_CONDUCT.md).
|
||||
|
||||
### 4.3 Ways to Contribute
|
||||
|
||||
#### 4.3.1 Data Contributions
|
||||
|
||||
If you have corrections or updates to the data served by the Application:
|
||||
|
||||
1. **Data corrections**: If you notice incorrect information, please open an issue
|
||||
2. **Testimonials**: If you'd like to add a testimonial, please contact through the official channels
|
||||
3. **Project updates**: For updates to project information, verify you have permission to modify the data
|
||||
|
||||
#### 4.3.2 Code Contributions
|
||||
|
||||
Contributors can help improve the Application in several ways:
|
||||
|
||||
**Features**:
|
||||
- Enhanced API endpoints
|
||||
- New data validation rules
|
||||
- Performance optimizations
|
||||
- Additional data format support
|
||||
- API documentation improvements
|
||||
|
||||
**Bug Fixes**:
|
||||
- Server stability issues
|
||||
- Route handling bugs
|
||||
- Build process errors
|
||||
- Test failures
|
||||
|
||||
**Quality Improvements**:
|
||||
- Code refactoring
|
||||
- Test coverage expansion
|
||||
- Documentation enhancements
|
||||
- Type safety improvements
|
||||
|
||||
### 4.4 Development Setup
|
||||
|
||||
1. **Fork and clone** the repository
|
||||
2. **Install dependencies**: `pnpm install`
|
||||
3. **Create a branch** for your changes: `git checkout -b feature/your-feature-name`
|
||||
4. **Make your changes** following the guidelines below
|
||||
5. **Test your changes**: `pnpm test`
|
||||
6. **Lint your code**: `pnpm run lint`
|
||||
7. **Build the project**: `pnpm run build`
|
||||
8. **Commit and push** your changes
|
||||
9. **Open a Pull Request**
|
||||
|
||||
### 4.5 Code Style Guidelines
|
||||
|
||||
#### TypeScript
|
||||
|
||||
- Follow the ESLint configuration (`@nhcarrigan/eslint-config`)
|
||||
- Use explicit type annotations for function parameters and return values
|
||||
- Prefer interfaces over type aliases for object shapes
|
||||
- Use ES modules (`import`/`export`) syntax
|
||||
- Maintain strict type safety (no `any` types unless absolutely necessary)
|
||||
|
||||
**Example**:
|
||||
```typescript
|
||||
// Good
|
||||
export const processData = (input: string): ProcessedData => {
|
||||
// implementation
|
||||
};
|
||||
|
||||
// Avoid
|
||||
export const processData = (input) => {
|
||||
// implementation
|
||||
};
|
||||
```
|
||||
|
||||
#### File Organization
|
||||
|
||||
- Place interfaces in `src/interfaces/`
|
||||
- Place utility functions in `src/utils/`
|
||||
- Place core logic in `src/modules/`
|
||||
- Keep the main entry point (`src/index.ts`) minimal
|
||||
|
||||
#### Error Handling
|
||||
|
||||
- Use the custom logger from `@nhcarrigan/logger`
|
||||
- Provide meaningful error messages
|
||||
- Handle errors gracefully without crashing the server
|
||||
|
||||
### 4.6 Testing Guidelines
|
||||
|
||||
All contributions should maintain or improve test coverage.
|
||||
|
||||
#### Writing Tests
|
||||
|
||||
- Use Vitest test framework
|
||||
- Place tests in the `/test` directory
|
||||
- Use descriptive test names
|
||||
|
||||
**Example test structure**:
|
||||
```typescript
|
||||
describe("Feature Name", () => {
|
||||
it("should do something specific", () => {
|
||||
// Arrange
|
||||
const input = setupTestData();
|
||||
|
||||
// Act
|
||||
const result = performAction(input);
|
||||
|
||||
// Assert
|
||||
expect(result).toBe(expectedValue);
|
||||
});
|
||||
});
|
||||
```
|
||||
|
||||
#### Running Tests
|
||||
|
||||
Before submitting a PR:
|
||||
```bash
|
||||
pnpm test # Run all tests
|
||||
```
|
||||
|
||||
### 4.7 Documentation Guidelines
|
||||
|
||||
When contributing documentation:
|
||||
|
||||
- Use clear, concise language
|
||||
- Include code examples where helpful
|
||||
- Update relevant sections when changing functionality
|
||||
- Check spelling with `pnpm run lint:spelling`
|
||||
|
||||
### 4.8 Pull Request Process
|
||||
|
||||
1. **Ensure all checks pass**:
|
||||
- All tests pass (`pnpm test`)
|
||||
- Code lints without warnings (`pnpm run lint`)
|
||||
- Build succeeds (`pnpm run build`)
|
||||
|
||||
2. **Write a clear PR description**:
|
||||
- Describe what changes were made
|
||||
- Explain why the changes were necessary
|
||||
- Reference any related issues
|
||||
|
||||
3. **Respond to feedback**:
|
||||
- Address review comments promptly
|
||||
- Be open to suggestions and improvements
|
||||
- Update the PR as requested
|
||||
|
||||
4. **Squash commits** if requested to maintain a clean git history
|
||||
|
||||
### 4.9 Adding New Data Categories
|
||||
|
||||
To add a new data category to the Application:
|
||||
|
||||
1. **Create the TypeScript interface**:
|
||||
```typescript
|
||||
// src/interfaces/newcategory.ts
|
||||
export interface NewCategory {
|
||||
id: string;
|
||||
name: string;
|
||||
// other fields
|
||||
}
|
||||
```
|
||||
|
||||
2. **Create the YAML data file**:
|
||||
```yaml
|
||||
# data/newcategory.yml
|
||||
- id: example
|
||||
name: Example Item
|
||||
```
|
||||
|
||||
3. **Add tests**:
|
||||
```typescript
|
||||
// test/yaml.spec.ts
|
||||
describe("New Category Data", () => {
|
||||
it("should have valid structure", () => {
|
||||
// validation tests
|
||||
});
|
||||
});
|
||||
```
|
||||
|
||||
4. **Update documentation**:
|
||||
- Add endpoint documentation to section 1.2
|
||||
- Update project structure in section 2.4
|
||||
|
||||
5. **Test the changes**:
|
||||
```bash
|
||||
pnpm run build
|
||||
node ./prod/index.js
|
||||
curl http://localhost:9999/newcategory.json
|
||||
```
|
||||
|
||||
### 4.10 Security Considerations
|
||||
|
||||
When contributing, keep security in mind:
|
||||
|
||||
- Never commit sensitive data (API keys, passwords, personal information)
|
||||
- Validate all input data in tests
|
||||
- Follow secure coding practices
|
||||
- Report security vulnerabilities privately before opening public issues
|
||||
|
||||
### 4.11 Getting Help
|
||||
|
||||
If you need help contributing:
|
||||
|
||||
- Open a GitHub issue with your question
|
||||
- Join the [Chat Server](http://chat.nhcarrigan.com)
|
||||
- Email: `contact@nhcarrigan.com`
|
||||
|
||||
### 4.12 Recognition
|
||||
|
||||
All contributors will be recognized for their contributions. Significant contributions may be highlighted in release notes and project documentation.
|
||||
|
||||
---
|
||||
|
||||
**Last Updated**: 2025-10-29
|
||||
**Application Version**: 1.0.0
|
||||
**Maintained by**: NHCarrigan
|
||||
@@ -0,0 +1,240 @@
|
||||
---
|
||||
title: Discord Analytics
|
||||
---
|
||||
|
||||
Discord Analytics (hereinafter the "Application") is a TypeScript library package designed to integrate with Discord bots to provide automated analytics tracking and metrics collection. The Application pairs with the @nhcarrigan/logger tool to pipe Discord bot analytics and telemetry data.
|
||||
|
||||
## 1. User Documentation
|
||||
|
||||
This section is for those interacting with a live instance of the Application.
|
||||
|
||||
### Overview
|
||||
|
||||
Discord Analytics is distributed as an npm package and is designed to be integrated into Discord.js-based bots. The package is available at [@nhcarrigan/discord-analytics](https://www.npmjs.com/package/@nhcarrigan/discord-analytics).
|
||||
|
||||
### Features
|
||||
|
||||
The Application provides the following capabilities:
|
||||
|
||||
- **Automated Daily Metrics Collection**: Runs a CRON job at midnight (system time) to collect:
|
||||
- Total number of guilds (Discord servers) the bot is a member of
|
||||
- Total member count across all guilds
|
||||
- Approximate number of user installs for the application
|
||||
|
||||
- **Gateway Event Logging**: Allows logging of Discord gateway events with custom metadata for detailed analytics tracking
|
||||
|
||||
### Basic Usage
|
||||
|
||||
1. Install the package via npm:
|
||||
```
|
||||
npm install @nhcarrigan/discord-analytics
|
||||
```
|
||||
|
||||
2. Import and initialize the DiscordAnalytics class with your Discord client and logger instance:
|
||||
```typescript
|
||||
import { DiscordAnalytics } from '@nhcarrigan/discord-analytics';
|
||||
|
||||
const analytics = new DiscordAnalytics(client, logger);
|
||||
```
|
||||
|
||||
3. Start the automated metrics collection:
|
||||
```typescript
|
||||
analytics.startCron();
|
||||
```
|
||||
|
||||
4. Log gateway events from your Discord event listeners:
|
||||
```typescript
|
||||
client.on(Events.MessageCreate, async (message) => {
|
||||
await analytics.logGatewayEvent(Events.MessageCreate, {
|
||||
channelId: message.channelId
|
||||
});
|
||||
});
|
||||
```
|
||||
|
||||
5. Stop the CRON job when needed:
|
||||
```typescript
|
||||
analytics.stopCron();
|
||||
```
|
||||
|
||||
## 2. Technical Documentation
|
||||
|
||||
This section is for those interested in running their own instance of the Application.
|
||||
|
||||
### Prerequisites
|
||||
|
||||
- Node.js (compatible with node-schedule 2.1.1)
|
||||
- Discord.js v14.x or higher
|
||||
- @nhcarrigan/logger v1.1.0-hotfix or higher
|
||||
|
||||
### Installation
|
||||
|
||||
The Application is installed as an npm package dependency:
|
||||
|
||||
```bash
|
||||
npm install @nhcarrigan/discord-analytics
|
||||
```
|
||||
|
||||
Or using pnpm:
|
||||
|
||||
```bash
|
||||
pnpm add @nhcarrigan/discord-analytics
|
||||
```
|
||||
|
||||
### Architecture
|
||||
|
||||
#### Core Components
|
||||
|
||||
The Application consists of a single main class located in `src/index.ts`:
|
||||
|
||||
**DiscordAnalytics Class** (src/index.ts:14-96)
|
||||
|
||||
The main class provides three public methods:
|
||||
|
||||
1. **`constructor(client: Client, logger: Logger)`** (src/index.ts:22-25)
|
||||
- Initializes the analytics instance with a Discord.js client and logger
|
||||
- Parameters:
|
||||
- `client`: The Discord.js client instance to monitor
|
||||
- `logger`: Instance of @nhcarrigan/logger for metric logging
|
||||
|
||||
2. **`startCron(): void`** (src/index.ts:33-65)
|
||||
- Starts a CRON job scheduled to run at midnight daily (0 0 * * *)
|
||||
- Collects and logs three metrics:
|
||||
- `user_installs`: Approximate count of user installs
|
||||
- `guilds`: Total number of guilds the bot is in
|
||||
- `members`: Total member count across all guilds
|
||||
- Includes error handling that logs failures via the logger
|
||||
|
||||
3. **`stopCron(): void`** (src/index.ts:70-76)
|
||||
- Cancels the running CRON job if active
|
||||
- Safely handles the case where no job is running
|
||||
|
||||
4. **`logGatewayEvent(event: Events, payload: Record<string, unknown>): Promise<void>`** (src/index.ts:85-95)
|
||||
- Logs Discord gateway events as metrics
|
||||
- Parameters:
|
||||
- `event`: The Discord.js event type (e.g., Events.MessageCreate)
|
||||
- `payload`: Custom metadata to attach to the metric
|
||||
|
||||
#### Dependencies
|
||||
|
||||
- **node-schedule** (2.1.1): Provides CRON job scheduling functionality
|
||||
- **@nhcarrigan/logger** (peer dependency): Handles metric and error logging
|
||||
- **discord.js** (peer dependency v14.x): Discord API wrapper
|
||||
|
||||
#### Build Process
|
||||
|
||||
The Application uses TypeScript and includes the following build scripts:
|
||||
|
||||
- `pnpm run lint`: Runs ESLint with zero warnings tolerance
|
||||
- `pnpm run build`: Removes the `prod` directory and compiles TypeScript
|
||||
- `pnpm prepublish`: Runs linting and build before publishing
|
||||
|
||||
The compiled output is located in the `prod` directory with `prod/index.js` as the main entry point.
|
||||
|
||||
### Configuration
|
||||
|
||||
The CRON schedule is hardcoded to run at midnight daily (system time). The schedule can be identified in the code at src/index.ts:37 as `"0 0 * * *"`.
|
||||
|
||||
### Data Collection
|
||||
|
||||
The Application collects the following metrics:
|
||||
|
||||
- **Guild Count**: Total number of Discord servers (src/index.ts:54)
|
||||
- **Member Count**: Sum of all members across guilds (src/index.ts:55)
|
||||
- **User Installs**: Approximate user installation count (src/index.ts:49-52)
|
||||
- **Gateway Events**: Custom event tracking with metadata (src/index.ts:89-94)
|
||||
|
||||
All metrics are logged using the provided logger instance's `metric()` method.
|
||||
|
||||
### Error Handling
|
||||
|
||||
Errors during the CRON job execution are caught and logged via the logger's `error()` method (src/index.ts:57-62). The Application ensures errors are properly converted to Error instances before logging.
|
||||
|
||||
## 3. Legal Documentation
|
||||
|
||||
This section is for expansions to our legal policies specific to the Application.
|
||||
|
||||
### License
|
||||
|
||||
The Application is licensed under [Naomi's Public License](https://docs.nhcarrigan.com/#/license) (referenced as "global software license").
|
||||
|
||||
Copyright is held by Naomi Carrigan.
|
||||
|
||||
### Privacy Considerations
|
||||
|
||||
The Application collects the following data from Discord:
|
||||
|
||||
- Guild (server) identifiers and counts
|
||||
- Member counts (aggregate numbers, not individual user data)
|
||||
- User installation counts (approximate numbers from Discord API)
|
||||
- Gateway event data with optional custom metadata
|
||||
|
||||
Users integrating this Application should ensure their privacy policies adequately disclose the collection and logging of this telemetry data.
|
||||
|
||||
### Third-Party Services
|
||||
|
||||
The Application interacts with:
|
||||
|
||||
- Discord API (via discord.js)
|
||||
- The configured logging service (@nhcarrigan/logger)
|
||||
|
||||
Data is transmitted to whatever backend service is configured with the logger instance.
|
||||
|
||||
## 4. Contributing Documentation
|
||||
|
||||
This section is for documentation related to contributing to the Application's codebase.
|
||||
|
||||
### Contributing Guidelines
|
||||
|
||||
Full contributing guidelines can be found at: https://docs.nhcarrigan.com/#/contributing
|
||||
|
||||
### Code of Conduct
|
||||
|
||||
Before interacting with the community, please review the Code of Conduct at: https://docs.nhcarrigan.com/#/coc
|
||||
|
||||
### Development Setup
|
||||
|
||||
1. Clone the repository
|
||||
2. Install dependencies:
|
||||
```bash
|
||||
pnpm install
|
||||
```
|
||||
3. Make your changes in the `src` directory
|
||||
4. Run linting:
|
||||
```bash
|
||||
pnpm run lint
|
||||
```
|
||||
5. Build the project:
|
||||
```bash
|
||||
pnpm run build
|
||||
```
|
||||
|
||||
### Code Style
|
||||
|
||||
The project uses:
|
||||
|
||||
- ESLint with @nhcarrigan/eslint-config (v5.2.0)
|
||||
- TypeScript with @nhcarrigan/typescript-config (v4.0.0)
|
||||
- Maximum warnings: 0 (strict mode)
|
||||
|
||||
### Pull Request Process
|
||||
|
||||
1. Create a Pull Request with your proposed changes
|
||||
2. Ensure all linting passes
|
||||
3. The maintainers will review as soon as possible
|
||||
|
||||
### Reporting Issues
|
||||
|
||||
If you have feedback or a bug report, please open a GitHub issue.
|
||||
|
||||
### Contact
|
||||
|
||||
The maintainers may be contacted through:
|
||||
|
||||
- [Chat Server](http://chat.nhcarrigan.com)
|
||||
- Email: contact@nhcarrigan.com
|
||||
|
||||
### Current Version
|
||||
|
||||
Version: 0.0.6
|
||||
|
||||
Recent changes can be viewed in the git commit history.
|
||||
@@ -0,0 +1,282 @@
|
||||
---
|
||||
title: NHCarrigan Documentation
|
||||
---
|
||||
|
||||
NHCarrigan Documentation (hereinafter the "Application") is a comprehensive documentation website built with Astro and Starlight that serves as the central hub for all documentation related to NHCarrigan's projects, policies, and services. The site provides organized access to technical documentation, legal policies, community guidelines, and project-specific information across multiple categories including Discord bots, web applications, libraries, and development tools. The Application features a custom-themed interface with accessibility considerations, analytics integration, and environmental sustainability features.
|
||||
|
||||
## 1. User Documentation
|
||||
|
||||
### Site Structure and Navigation
|
||||
|
||||
The Application is organized into several main sections accessible via the sidebar navigation:
|
||||
|
||||
- **About Us**: Mission statement, sustainability information, hiring, donations, contact, and mentorship
|
||||
- **Legal Information**: Terms of service, privacy policy, software license, security policy, DMCA information, subprocessors list, and government actions
|
||||
- **Community Policies**: Code of conduct, community guidelines, and appeal process
|
||||
- **Development Documentation**: Contributing guide, contributor covenant, style guide, issue/PR labels, development environment, server setup, and VTubing setup
|
||||
- **Project Documentation**: Comprehensive documentation for all NHCarrigan projects including Discord bots, web applications, libraries, and tools
|
||||
- **Staff Guidelines**: Staff handbook and team application information
|
||||
- **Miscellaneous Documents**: Additional resources like music management guides
|
||||
|
||||
### Key Features
|
||||
|
||||
#### Custom Theming
|
||||
- Light and dark mode support with automatic detection
|
||||
- Custom "Sakura Dreams" color scheme with pink/purple tones
|
||||
- Accessibility features including OpenDyslexic font support
|
||||
- Responsive design that works across all devices
|
||||
|
||||
#### Enhanced Footer
|
||||
- TreeNation carbon offset widget integration for environmental sustainability
|
||||
- Direct donation link for supporting the organization
|
||||
- Standard Starlight navigation elements (edit links, last updated, pagination)
|
||||
|
||||
#### Analytics and Tracking
|
||||
- Privacy-focused Plausible Analytics integration
|
||||
- Page view and event tracking for user behavior insights
|
||||
- Google AdSense integration for monetization
|
||||
|
||||
#### Content Features
|
||||
- Project status badges indicating version and development status
|
||||
- Comprehensive search functionality
|
||||
- Table of contents for easy navigation within pages
|
||||
- Social media links and contact information
|
||||
|
||||
### Accessibility
|
||||
|
||||
The Application includes several accessibility features:
|
||||
- Semantic HTML structure with proper heading hierarchy
|
||||
- OpenDyslexic font support for users with dyslexia
|
||||
- High contrast color schemes
|
||||
- Keyboard navigation support
|
||||
- Screen reader compatible markup
|
||||
|
||||
## 2. Technical Documentation
|
||||
|
||||
### Architecture Overview
|
||||
|
||||
The Application is built using modern web technologies:
|
||||
|
||||
- **Framework**: Astro 5.3.0 - Static site generator for optimal performance
|
||||
- **Theme**: Starlight 0.32.0 - Documentation-focused Astro integration
|
||||
- **Language**: TypeScript 5.7.3 - Type-safe development
|
||||
- **Build Tool**: Native Astro build system with minification and optimization
|
||||
- **Package Manager**: PNPM (evidenced by pnpm-lock.yaml)
|
||||
- **Hosting**: Static deployment to https://docs.nhcarrigan.com
|
||||
|
||||
### Project Structure
|
||||
|
||||
```
|
||||
src/
|
||||
├── components/ # Custom Astro components
|
||||
│ ├── Footer.astro # Enhanced footer with TreeNation widget and donations
|
||||
│ ├── ThemeProvider.astro # Custom theme system with analytics integration
|
||||
│ └── navigation.ts # Sidebar navigation configuration
|
||||
├── content/ # Documentation content
|
||||
│ ├── config.ts # Content collection configuration
|
||||
│ └── docs/ # Markdown/MDX documentation files
|
||||
│ ├── intro.mdx # Homepage with hero section
|
||||
│ ├── about/ # Organization information
|
||||
│ ├── community/ # Community policies and guidelines
|
||||
│ ├── dev/ # Development documentation
|
||||
│ ├── legal/ # Legal policies and terms
|
||||
│ ├── misc/ # Miscellaneous resources
|
||||
│ ├── projects/ # Project-specific documentation
|
||||
│ └── staff/ # Staff guidelines
|
||||
├── fonts/ # Custom font files and CSS
|
||||
├── pages/ # Astro pages
|
||||
│ └── index.astro # Root page with legacy redirect handling
|
||||
└── styles/ # Custom styling and themes
|
||||
├── style.css # Global styles and CSS variables
|
||||
├── theme.json # Light theme configuration for code highlighting
|
||||
└── theme-dark.json # Dark theme configuration for code highlighting
|
||||
|
||||
public/ # Static assets
|
||||
├── favicon.svg # Site favicon
|
||||
├── logo.png # NHCarrigan logo
|
||||
└── images/ # Project screenshots and documentation images
|
||||
```
|
||||
|
||||
### Configuration Files
|
||||
|
||||
#### Astro Configuration (`astro.config.mjs`)
|
||||
- Site URL configuration: https://docs.nhcarrigan.com
|
||||
- Starlight integration with custom components
|
||||
- Custom expressive code themes (Sakura Dreams light/dark)
|
||||
- Analytics and tracking script injection
|
||||
- TreeNation environmental widget integration
|
||||
- Social media links and site metadata
|
||||
- Custom CSS and font loading
|
||||
|
||||
#### Content Configuration (`src/content/config.ts`)
|
||||
- Defines the `docs` collection using Starlight's schema
|
||||
- Enables frontmatter validation and type safety
|
||||
|
||||
#### Navigation Configuration (`src/components/navigation.ts`)
|
||||
- Hierarchical sidebar navigation structure
|
||||
- Project status badges with version information
|
||||
- External links to community resources
|
||||
- Organized categorization of all documentation
|
||||
|
||||
### Custom Components
|
||||
|
||||
#### Footer Component (`src/components/Footer.astro`)
|
||||
- Extends Starlight's default footer
|
||||
- Integrates TreeNation carbon offset widget
|
||||
- Adds donation link with visual call-to-action
|
||||
- Maintains standard Starlight footer functionality (edit links, pagination, last updated)
|
||||
|
||||
#### Theme Provider (`src/components/ThemeProvider.astro`)
|
||||
- Custom theme switching logic
|
||||
- Analytics event tracking integration
|
||||
- Theme persistence using localStorage
|
||||
- Support for light, dark, and auto modes
|
||||
|
||||
### Styling System
|
||||
|
||||
#### CSS Variables and Theming
|
||||
- Custom color scheme using CSS variables
|
||||
- Pink/purple "Sakura Dreams" theme
|
||||
- Dark mode with inverted color palette
|
||||
- Background image integration for visual appeal
|
||||
|
||||
#### Typography
|
||||
- OpenDyslexic font for accessibility
|
||||
- Custom font loading via CSS @font-face
|
||||
- Consistent typography hierarchy
|
||||
|
||||
### Development Workflow
|
||||
|
||||
#### Available Scripts
|
||||
- `pnpm dev` / `pnpm start`: Development server on localhost:4321
|
||||
- `pnpm build`: Production build to ./dist/
|
||||
- `pnpm preview`: Preview production build locally
|
||||
- `pnpm lint`: Spell checking with cspell
|
||||
- `pnpm scan`: SonarCloud analysis for code quality
|
||||
|
||||
#### Code Quality
|
||||
- TypeScript strict mode configuration
|
||||
- ESLint integration (referenced in project documentation)
|
||||
- SonarCloud integration for static analysis
|
||||
- Spell checking for documentation content
|
||||
|
||||
### External Integrations
|
||||
|
||||
#### Analytics
|
||||
- Plausible Analytics for privacy-focused tracking
|
||||
- Custom event tracking for page views and interactions
|
||||
- Google AdSense for monetization
|
||||
|
||||
#### Environmental Sustainability
|
||||
- TreeNation carbon offset widget
|
||||
- Environmental impact tracking and offsetting
|
||||
|
||||
#### Social and Community
|
||||
- Links to self-hosted Git instance (git.nhcarrigan.com)
|
||||
- Forum integration (forum.nhcarrigan.com)
|
||||
|
||||
### Performance and SEO
|
||||
|
||||
#### Static Site Generation
|
||||
- Pre-built static pages for optimal loading speed
|
||||
- Optimized asset delivery
|
||||
- Compressed HTML output
|
||||
|
||||
#### SEO Features
|
||||
- Open Graph meta tags for social media sharing
|
||||
- Structured navigation for search engine crawling
|
||||
- Sitemap generation (external: sitemap.nhcarrigan.com)
|
||||
- Proper heading hierarchy and semantic markup
|
||||
|
||||
## 3. Legal Documentation
|
||||
|
||||
The Application serves as the central repository for all legal documentation related to NHCarrigan's operations and services. This includes:
|
||||
|
||||
### Comprehensive Legal Coverage
|
||||
- **Terms of Service**: User agreements for all NHCarrigan services
|
||||
- **Privacy Policy**: Data collection, processing, and user rights
|
||||
- **Software License**: Open source licensing for projects
|
||||
- **Security Policy**: Vulnerability reporting and security practices
|
||||
- **DMCA and Copyright**: Intellectual property policies
|
||||
- **Subprocessors List**: Third-party service providers and data processing
|
||||
- **Government Actions**: Transparency reporting for legal requests
|
||||
|
||||
### Policy Management
|
||||
- Centralized location for all legal documents
|
||||
- Version control through Git for policy changes
|
||||
- Public accessibility for transparency
|
||||
- Regular updates reflecting current legal requirements
|
||||
|
||||
## 4. Contributing Documentation
|
||||
|
||||
### Development Environment Setup
|
||||
|
||||
#### Prerequisites
|
||||
- Node.js (latest LTS version)
|
||||
- PNPM package manager
|
||||
- Git access to NHCarrigan's self-hosted instance
|
||||
|
||||
#### Local Development
|
||||
1. Clone the repository from git.nhcarrigan.com
|
||||
2. Install dependencies: `pnpm install`
|
||||
3. Start development server: `pnpm dev`
|
||||
4. Access local site at http://localhost:4321
|
||||
|
||||
### Content Contribution Guidelines
|
||||
|
||||
#### Documentation Standards
|
||||
- Use Markdown (.md) or MDX (.mdx) for content files
|
||||
- Follow established frontmatter schema for consistency
|
||||
- Include appropriate metadata (title, description, etc.)
|
||||
- Maintain consistent heading hierarchy (h2-h4 in table of contents)
|
||||
|
||||
#### File Organization
|
||||
- Place content in appropriate `/src/content/docs/` subdirectories
|
||||
- Use descriptive filenames following kebab-case convention
|
||||
- Include project status badges for project documentation
|
||||
- Update navigation configuration when adding new sections
|
||||
|
||||
#### Style Guidelines
|
||||
- Follow existing documentation patterns
|
||||
- Use clear, concise language
|
||||
- Include code examples where appropriate
|
||||
- Maintain accessibility standards
|
||||
- Add project screenshots to `/public/images/` when relevant
|
||||
|
||||
### Code Contribution Process
|
||||
|
||||
#### Development Standards
|
||||
- TypeScript strict mode compliance
|
||||
- Pass spell checking with cspell
|
||||
- Follow Astro and Starlight best practices
|
||||
- Maintain existing component interfaces
|
||||
|
||||
#### Submission Process
|
||||
1. Create feature branch from main
|
||||
2. Make changes following style guidelines
|
||||
3. Test locally with `pnpm dev`
|
||||
4. Run quality checks: `pnpm lint`
|
||||
5. Submit pull request to self-hosted Git instance
|
||||
6. Await review and approval
|
||||
|
||||
#### Review Criteria
|
||||
- Code quality and TypeScript compliance
|
||||
- Documentation accuracy and completeness
|
||||
- Accessibility compliance
|
||||
- Performance impact assessment
|
||||
- Security considerations
|
||||
|
||||
### Maintenance and Updates
|
||||
|
||||
#### Regular Maintenance Tasks
|
||||
- Update project version badges
|
||||
- Refresh project screenshots
|
||||
- Review and update legal documents
|
||||
- Monitor analytics for user behavior insights
|
||||
- Update dependencies and security patches
|
||||
|
||||
#### Community Involvement
|
||||
- Enable edit links for community contributions
|
||||
- Maintain responsive support through various communication channels
|
||||
- Encourage feedback through multiple contact methods
|
||||
- Regular review of community guidelines and policies
|
||||
@@ -0,0 +1,363 @@
|
||||
---
|
||||
title: Eclaire
|
||||
---
|
||||
|
||||
Eclaire (hereinafter the "Application") is a real-time speech-to-speech translation web application that captures live audio from a user's microphone, transcribes the speech using Deepgram's API, and translates the transcribed text into a target language.
|
||||
|
||||
## 1. User Documentation
|
||||
|
||||
This section is for those interacting with a live instance of the Application.
|
||||
|
||||
### Getting Started
|
||||
|
||||
1. **Initial Setup**: Navigate to the Configuration page to set up your API credentials and language preferences.
|
||||
|
||||
2. **Configuration Options**:
|
||||
- **Deepgram API Key**: Required for speech-to-text transcription. You must provide your own API key from [Deepgram](https://deepgram.com).
|
||||
- **Translation Service API Key**: Required for text translation. A demo key is available with a 10 requests/minute rate limit, or you can provide your own key.
|
||||
- **Source Language**: Select from 12 supported languages (English, German, Dutch, Swedish, Danish, Spanish, French, Portuguese, Italian, Turkish, Norwegian, Indonesian).
|
||||
- **Target Language**: Select from 60+ supported languages for translation.
|
||||
|
||||
3. **Using the Translation Interface**:
|
||||
- Navigate to the Agent page to begin translation.
|
||||
- Click "Start" to begin capturing audio from your microphone.
|
||||
- Speak clearly into your microphone in the configured source language.
|
||||
- The application will display real-time transcription and translations.
|
||||
- Click "Finalize" to manually end the current speech segment if needed.
|
||||
- Click "Stop" to end the session.
|
||||
|
||||
### Features
|
||||
|
||||
- **Real-Time Transcription**: Powered by Deepgram's nova-3-general model with automatic punctuation
|
||||
- **Multi-Language Translation**: Support for 60+ target languages via LibreTranslate
|
||||
- **Conversation History**: View all transcriptions and translations in a message-based format
|
||||
- **Connection Status**: Monitor your connection status and any errors
|
||||
- **Cost Estimation**: Track estimated costs (approximately $0.32/hour)
|
||||
|
||||
### Audio Quality Settings
|
||||
|
||||
The application automatically enables:
|
||||
- Echo cancellation
|
||||
- Noise suppression
|
||||
- Auto gain control
|
||||
|
||||
### Limitations
|
||||
|
||||
- Source language is limited to 12 languages supported by Deepgram
|
||||
- Translation service demo key has a rate limit of 10 requests/minute
|
||||
- Requires modern browser with microphone access
|
||||
- WebSocket connection required for real-time functionality
|
||||
|
||||
## 2. Technical Documentation
|
||||
|
||||
This section is for those interested in running their own instance of the Application.
|
||||
|
||||
### Prerequisites
|
||||
|
||||
- Node.js (version compatible with Angular 19.1.4)
|
||||
- pnpm package manager
|
||||
- Modern web browser with WebRTC support
|
||||
- Deepgram API key
|
||||
- LibreTranslate API key (or access to a LibreTranslate instance)
|
||||
|
||||
### Installation
|
||||
|
||||
1. Clone the repository:
|
||||
```bash
|
||||
git clone <repository-url>
|
||||
cd eclaire
|
||||
```
|
||||
|
||||
2. Install dependencies:
|
||||
```bash
|
||||
npm install
|
||||
```
|
||||
|
||||
3. Start the development server:
|
||||
```bash
|
||||
npm run dev
|
||||
```
|
||||
|
||||
4. Build for production:
|
||||
```bash
|
||||
npm run build
|
||||
```
|
||||
|
||||
### Technology Stack
|
||||
|
||||
**Frontend Framework:**
|
||||
- Angular 19.1.4 with standalone components
|
||||
- TypeScript 5.7.3
|
||||
- RxJS 7.8.1 for reactive programming
|
||||
- Angular Reactive Forms for configuration management
|
||||
|
||||
**External APIs:**
|
||||
- Deepgram WebSocket API (nova-3-general model) for speech-to-text
|
||||
- LibreTranslate API for text translation
|
||||
|
||||
**Audio Processing:**
|
||||
- Web Audio API for microphone access
|
||||
- ScriptProcessor for audio stream processing (4096 buffer size)
|
||||
- 48kHz sample rate, mono channel, Int16 format
|
||||
|
||||
### Architecture
|
||||
|
||||
#### Components
|
||||
|
||||
1. **HomeComponent** (`src/app/home/home.component.ts`)
|
||||
- Landing page with navigation links
|
||||
- Entry point for users
|
||||
|
||||
2. **ConfigComponent** (`src/app/config/config.component.ts`)
|
||||
- Configuration interface using reactive forms
|
||||
- Manages API keys and language preferences
|
||||
- Form validation for required fields
|
||||
- Stores configuration in ConfigService
|
||||
|
||||
3. **AgentComponent** (`src/app/agent/agent.component.ts`)
|
||||
- Main translation interface
|
||||
- Manages WebSocket lifecycle
|
||||
- Handles microphone capture and audio streaming
|
||||
- Displays transcription and translation results
|
||||
- Tracks connection status and errors
|
||||
|
||||
#### Services
|
||||
|
||||
1. **ConfigService** (`src/app/config.service.ts`)
|
||||
- In-memory storage for application configuration
|
||||
- Provides configuration access across components
|
||||
- Stores: API keys, source language, target language
|
||||
|
||||
2. **SocketService** (`src/app/socket.service.ts`)
|
||||
- Manages WebSocket connection to Deepgram
|
||||
- Handles audio streaming in real-time
|
||||
- Event-based architecture for message handling
|
||||
- Supports keep-alive and finalization
|
||||
- Configuration options:
|
||||
- Model: nova-3-general
|
||||
- Language: configurable source language
|
||||
- Encoding: linear16
|
||||
- Sample rate: 48000
|
||||
- Channels: 1 (mono)
|
||||
- Endpointing: 500ms
|
||||
- Features: punctuate
|
||||
|
||||
#### Routing
|
||||
|
||||
- `/` - Redirects to home
|
||||
- `/home` - Landing page
|
||||
- `/config` - Configuration page
|
||||
- `/agent` - Translation interface
|
||||
|
||||
### API Integration
|
||||
|
||||
#### Deepgram API
|
||||
|
||||
The application uses Deepgram's WebSocket API for real-time transcription:
|
||||
|
||||
```typescript
|
||||
wss://api.deepgram.com/v1/listen
|
||||
```
|
||||
|
||||
Query parameters:
|
||||
- `model=nova-3-general`
|
||||
- `language=<source-language>`
|
||||
- `encoding=linear16`
|
||||
- `sample_rate=48000`
|
||||
- `channels=1`
|
||||
- `endpointing=500`
|
||||
- `punctuate=true`
|
||||
|
||||
Authentication: Bearer token (API key) in WebSocket URL
|
||||
|
||||
#### LibreTranslate API
|
||||
|
||||
The application uses the LibreTranslate API for text translation:
|
||||
|
||||
```typescript
|
||||
https://trans.nhcarrigan.com/translate
|
||||
```
|
||||
|
||||
POST request body:
|
||||
```json
|
||||
{
|
||||
"q": "<text-to-translate>",
|
||||
"source": "<source-language-code>",
|
||||
"target": "<target-language-code>",
|
||||
"api_key": "<api-key>"
|
||||
}
|
||||
```
|
||||
|
||||
### Development
|
||||
|
||||
#### Available Scripts
|
||||
|
||||
- `npm run dev` - Start development server
|
||||
- `npm run lint` - Run ESLint with zero warnings policy
|
||||
- `npm run build` - Build for production
|
||||
|
||||
#### Code Quality
|
||||
|
||||
- ESLint configuration from `@nhcarrigan/eslint-config`
|
||||
- TypeScript configuration from `@nhcarrigan/typescript-config`
|
||||
- Strict linting with `--max-warnings 0`
|
||||
|
||||
#### Testing
|
||||
|
||||
- Framework: Jasmine ~5.5.0
|
||||
- Test Runner: Karma ~6.4.4
|
||||
- Coverage reporting enabled
|
||||
|
||||
### Deployment Considerations
|
||||
|
||||
1. **Environment Variables**: API keys should be configurable per deployment environment
|
||||
2. **CORS**: Ensure proper CORS configuration for LibreTranslate API
|
||||
3. **HTTPS**: Required for microphone access in production
|
||||
4. **WebSocket**: Ensure WebSocket connections are allowed through firewalls
|
||||
5. **Browser Support**: Requires WebRTC and Web Audio API support
|
||||
|
||||
### Performance
|
||||
|
||||
- Audio streaming at 48kHz with 4096 sample buffer
|
||||
- WebSocket for low-latency real-time communication
|
||||
- Estimated cost: $0.32/hour for Deepgram usage
|
||||
- Efficient audio processing with minimal overhead
|
||||
|
||||
## 3. Legal Documentation
|
||||
|
||||
This section is for expansions to our legal policies specific to the Application.
|
||||
|
||||
### License
|
||||
|
||||
This software is licensed under the [global software license](https://docs.nhcarrigan.com/#/license).
|
||||
|
||||
Copyright held by Naomi Carrigan.
|
||||
|
||||
### Privacy Policy
|
||||
|
||||
The Application's privacy practices are governed by the [global privacy policy](https://docs.nhcarrigan.com/#/privacy).
|
||||
|
||||
#### Application-Specific Privacy Considerations
|
||||
|
||||
1. **Audio Data**: The Application captures audio from your microphone and streams it to Deepgram's servers for transcription. Audio data is not stored locally by the Application.
|
||||
|
||||
2. **API Keys**: API keys are stored in-memory during your session and are not persisted to local storage or transmitted to any servers other than the respective API providers (Deepgram and LibreTranslate).
|
||||
|
||||
3. **Third-Party Services**:
|
||||
- **Deepgram**: Audio data is transmitted to Deepgram for transcription. Refer to [Deepgram's privacy policy](https://deepgram.com/privacy) for information on their data handling practices.
|
||||
- **LibreTranslate**: Transcribed text is transmitted to the LibreTranslate API for translation. The default instance is hosted at trans.nhcarrigan.com.
|
||||
|
||||
4. **Local Storage**: The Application does not persist any user data to browser storage.
|
||||
|
||||
### Terms of Service
|
||||
|
||||
The Application's usage is governed by the [global terms of service](https://docs.nhcarrigan.com/#/terms).
|
||||
|
||||
#### Application-Specific Terms
|
||||
|
||||
1. **API Usage**: Users are responsible for their own Deepgram API usage and associated costs. The Application provides cost estimates but does not guarantee accuracy.
|
||||
|
||||
2. **Demo API Key**: The translation service demo API key is provided for testing purposes only and has rate limits (10 requests/minute). It may be revoked or changed at any time.
|
||||
|
||||
3. **Service Availability**: The Application depends on third-party services (Deepgram and LibreTranslate). Service interruptions may occur due to factors outside of our control.
|
||||
|
||||
4. **Accuracy**: The Application provides translation services based on third-party APIs. Translation accuracy is not guaranteed and should not be relied upon for critical communications.
|
||||
|
||||
### Security Policy
|
||||
|
||||
For security concerns, please refer to the [SECURITY.md](SECURITY.md) file in the repository.
|
||||
|
||||
## 4. Contributing Documentation
|
||||
|
||||
This section is for documentation related to contributing to the Application's codebase.
|
||||
|
||||
### Contributing Guidelines
|
||||
|
||||
General contributing guidelines can be found at: https://docs.nhcarrigan.com/#/contributing
|
||||
|
||||
### Code of Conduct
|
||||
|
||||
Before interacting with our community, please read our [Code of Conduct](CODE_OF_CONDUCT.md).
|
||||
|
||||
### Development Setup
|
||||
|
||||
1. Fork the repository
|
||||
2. Clone your fork: `git clone <your-fork-url>`
|
||||
3. Install dependencies: `npm install`
|
||||
4. Create a feature branch: `git checkout -b feature/your-feature-name`
|
||||
5. Make your changes
|
||||
6. Run linting: `npm run lint`
|
||||
7. Commit your changes with clear commit messages
|
||||
8. Push to your fork: `git push origin feature/your-feature-name`
|
||||
9. Open a Pull Request
|
||||
|
||||
### Code Style
|
||||
|
||||
- Follow the ESLint configuration (`@nhcarrigan/eslint-config`)
|
||||
- Use TypeScript with strict type checking
|
||||
- Follow Angular style guide for component and service structure
|
||||
- Use meaningful variable and function names
|
||||
- Add comments for complex logic
|
||||
|
||||
### Component Guidelines
|
||||
|
||||
- Use standalone components (Angular 19+)
|
||||
- Implement proper lifecycle hooks
|
||||
- Use reactive programming patterns with RxJS
|
||||
- Follow Angular dependency injection best practices
|
||||
- Keep components focused on a single responsibility
|
||||
|
||||
### Service Guidelines
|
||||
|
||||
- Use `@Injectable({ providedIn: 'root' })` for singleton services
|
||||
- Implement proper error handling
|
||||
- Use TypeScript interfaces for type safety
|
||||
- Document public methods with JSDoc comments
|
||||
|
||||
### Testing Guidelines
|
||||
|
||||
- Write unit tests for components and services
|
||||
- Aim for high code coverage
|
||||
- Test user interactions and edge cases
|
||||
- Mock external dependencies (APIs, services)
|
||||
|
||||
### Pull Request Process
|
||||
|
||||
1. Ensure all tests pass
|
||||
2. Ensure linting passes with zero warnings
|
||||
3. Update documentation if needed
|
||||
4. Provide a clear description of changes
|
||||
5. Reference any related issues
|
||||
6. Wait for review from maintainers
|
||||
|
||||
### Areas for Contribution
|
||||
|
||||
- **UI/UX Improvements**: Enhance the user interface and experience
|
||||
- **Additional Languages**: Expand language support where possible
|
||||
- **Performance Optimization**: Improve audio processing efficiency
|
||||
- **Testing**: Increase test coverage
|
||||
- **Documentation**: Improve user and technical documentation
|
||||
- **Accessibility**: Enhance accessibility features
|
||||
- **Error Handling**: Improve error messages and handling
|
||||
- **Configuration**: Add more configuration options
|
||||
|
||||
### Reporting Issues
|
||||
|
||||
If you have feedback or a bug report, please feel free to open a GitHub issue with:
|
||||
- Clear description of the issue
|
||||
- Steps to reproduce (for bugs)
|
||||
- Expected vs actual behavior
|
||||
- Browser and OS information
|
||||
- Screenshots if applicable
|
||||
|
||||
### Contact
|
||||
|
||||
We may be contacted through:
|
||||
- [Chat Server](http://chat.nhcarrigan.com)
|
||||
- Email: contact@nhcarrigan.com
|
||||
|
||||
---
|
||||
|
||||
**Version**: 1.1.0
|
||||
**Last Updated**: 2025-10-31
|
||||
**Author**: Naomi Carrigan
|
||||
@@ -0,0 +1,38 @@
|
||||
---
|
||||
title: Eirene
|
||||
---
|
||||
|
||||
Eirene (hereinafter the "Application") is a website and Discord activity that allows you to participate in code challenges competitively or collaboratively
|
||||
|
||||
## 1. User Documentation
|
||||
|
||||
:::note
|
||||
This section is coming soon!
|
||||
:::
|
||||
|
||||
This section is for those interacting with a live instance of the Application.
|
||||
|
||||
## 2. Technical Documentation
|
||||
|
||||
:::note
|
||||
This section is coming soon!
|
||||
:::
|
||||
|
||||
This section is for those interested in running their own instance of the Application.
|
||||
|
||||
## 3. Legal Documentation
|
||||
|
||||
:::note
|
||||
This section is coming soon!
|
||||
:::
|
||||
|
||||
This section is for expansions to our legal policies specific to the Application.
|
||||
|
||||
## 4. Contributing Documentation
|
||||
|
||||
:::note
|
||||
This section is coming soon!
|
||||
:::
|
||||
|
||||
This section is for documentation related to contributing to the Application's codebase.
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
---
|
||||
title: Elaria
|
||||
---
|
||||
|
||||
Elaria (hereinafter the "Application") is a meeting schedule coordination tool.
|
||||
|
||||
## 1. User Documentation
|
||||
|
||||
:::note
|
||||
This section is coming soon!
|
||||
:::
|
||||
|
||||
This section is for those interacting with a live instance of the Application.
|
||||
|
||||
## 2. Technical Documentation
|
||||
|
||||
:::note
|
||||
This section is coming soon!
|
||||
:::
|
||||
|
||||
This section is for those interested in running their own instance of the Application.
|
||||
|
||||
## 3. Legal Documentation
|
||||
|
||||
:::note
|
||||
This section is coming soon!
|
||||
:::
|
||||
|
||||
This section is for expansions to our legal policies specific to the Application.
|
||||
|
||||
## 4. Contributing Documentation
|
||||
|
||||
:::note
|
||||
This section is coming soon!
|
||||
:::
|
||||
|
||||
This section is for documentation related to contributing to the Application's codebase.
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
---
|
||||
title: Elowyn
|
||||
---
|
||||
|
||||
Elowyn (hereinafter the "Application") is a quick website that helps you format text.
|
||||
|
||||
## 1. User Documentation
|
||||
|
||||
:::note
|
||||
This section is coming soon!
|
||||
:::
|
||||
|
||||
This section is for those interacting with a live instance of the Application.
|
||||
|
||||
## 2. Technical Documentation
|
||||
|
||||
:::note
|
||||
This section is coming soon!
|
||||
:::
|
||||
|
||||
This section is for those interested in running their own instance of the Application.
|
||||
|
||||
## 3. Legal Documentation
|
||||
|
||||
:::note
|
||||
This section is coming soon!
|
||||
:::
|
||||
|
||||
This section is for expansions to our legal policies specific to the Application.
|
||||
|
||||
## 4. Contributing Documentation
|
||||
|
||||
:::note
|
||||
This section is coming soon!
|
||||
:::
|
||||
|
||||
This section is for documentation related to contributing to the Application's codebase.
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
---
|
||||
title: Elunara
|
||||
---
|
||||
|
||||
Elunara (hereinafter the "Application") is a Discord bot that allows users to proxy messages so they correctly appear as composed by an alter.
|
||||
|
||||
## 1. User Documentation
|
||||
|
||||
:::note
|
||||
This section is coming soon!
|
||||
:::
|
||||
|
||||
This section is for those interacting with a live instance of the Application.
|
||||
|
||||
## 2. Technical Documentation
|
||||
|
||||
:::note
|
||||
This section is coming soon!
|
||||
:::
|
||||
|
||||
This section is for those interested in running their own instance of the Application.
|
||||
|
||||
## 3. Legal Documentation
|
||||
|
||||
:::note
|
||||
This section is coming soon!
|
||||
:::
|
||||
|
||||
This section is for expansions to our legal policies specific to the Application.
|
||||
|
||||
## 4. Contributing Documentation
|
||||
|
||||
:::note
|
||||
This section is coming soon!
|
||||
:::
|
||||
|
||||
This section is for documentation related to contributing to the Application's codebase.
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
---
|
||||
title: Elysium
|
||||
---
|
||||
|
||||
Elysium (hereinafter the "Application") is an idle RPG in the browser.
|
||||
|
||||
## 1. User Documentation
|
||||
|
||||
:::note
|
||||
This section is coming soon!
|
||||
:::
|
||||
|
||||
This section is for those interacting with a live instance of the Application.
|
||||
|
||||
## 2. Technical Documentation
|
||||
|
||||
:::note
|
||||
This section is coming soon!
|
||||
:::
|
||||
|
||||
This section is for those interested in running their own instance of the Application.
|
||||
|
||||
## 3. Legal Documentation
|
||||
|
||||
:::note
|
||||
This section is coming soon!
|
||||
:::
|
||||
|
||||
This section is for expansions to our legal policies specific to the Application.
|
||||
|
||||
## 4. Contributing Documentation
|
||||
|
||||
:::note
|
||||
This section is coming soon!
|
||||
:::
|
||||
|
||||
This section is for documentation related to contributing to the Application's codebase.
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
---
|
||||
title: Evangeline
|
||||
---
|
||||
|
||||
Evangeline (hereinafter the "Application") is a Discord bot that allows you to configure canned replies, retrieve them anywhere on discord, and easily copy + paste them into chat.
|
||||
|
||||
## 1. User Documentation
|
||||
|
||||
:::note
|
||||
This section is coming soon!
|
||||
:::
|
||||
|
||||
This section is for those interacting with a live instance of the Application.
|
||||
|
||||
## 2. Technical Documentation
|
||||
|
||||
:::note
|
||||
This section is coming soon!
|
||||
:::
|
||||
|
||||
This section is for those interested in running their own instance of the Application.
|
||||
|
||||
## 3. Legal Documentation
|
||||
|
||||
:::note
|
||||
This section is coming soon!
|
||||
:::
|
||||
|
||||
This section is for expansions to our legal policies specific to the Application.
|
||||
|
||||
## 4. Contributing Documentation
|
||||
|
||||
:::note
|
||||
This section is coming soon!
|
||||
:::
|
||||
|
||||
This section is for documentation related to contributing to the Application's codebase.
|
||||
|
||||
@@ -0,0 +1,443 @@
|
||||
---
|
||||
title: freeCodeCamp Review Generator
|
||||
---
|
||||
|
||||
freeCodeCamp Review Generator (hereinafter the "Application") is a command-line tool that aggregates all review lesson pages from freeCodeCamp's Full Stack Developer curriculum into a single, comprehensive PDF document for offline study and reference.
|
||||
|
||||
## 1. User Documentation
|
||||
|
||||
This section is for those interacting with a live instance of the Application.
|
||||
|
||||
### Overview
|
||||
|
||||
The Application generates a compiled PDF document containing all review pages from freeCodeCamp's Full Stack Developer curriculum. The generated PDF includes:
|
||||
|
||||
- A custom cover page with generation date
|
||||
- An automatically generated table of contents with links to each review section
|
||||
- All review content organized according to the curriculum structure
|
||||
- Custom headers and footers for easy navigation
|
||||
- Page numbers and links to community resources
|
||||
|
||||
### Generated PDF Structure
|
||||
|
||||
The output PDF (`fcc-review-pages.pdf`) follows the freeCodeCamp curriculum structure:
|
||||
|
||||
1. **HTML Topics** - Reviews covering basic HTML, semantic HTML, forms and tables, and accessibility
|
||||
2. **CSS Topics** - Reviews covering basic CSS, layout (Flexbox, Grid), styling, responsive design, animations, and more
|
||||
3. **JavaScript Topics** - Reviews covering variables, functions, arrays, objects, DOM manipulation, asynchronous programming, and more
|
||||
4. **Frontend Libraries** - Reviews covering React fundamentals, state management, routing, and frontend frameworks
|
||||
5. **Python Topics** - Reviews covering Python basics, data structures, algorithms, and object-oriented programming
|
||||
6. **Relational Databases** - Reviews covering SQL, Bash scripting, and Git
|
||||
|
||||
### What to Expect
|
||||
|
||||
Each review page in the generated PDF contains:
|
||||
- **Topic headings** - Clear section markers for each subject
|
||||
- **Code examples** - Syntax-highlighted code snippets demonstrating concepts
|
||||
- **Explanations** - Detailed descriptions of programming concepts and best practices
|
||||
- **Reference material** - Quick-reference information for common patterns and methods
|
||||
|
||||
### Output Format
|
||||
|
||||
- **File name**: `fcc-review-pages.pdf`
|
||||
- **Page format**: Legal size (8.5" x 14")
|
||||
- **Margins**: 0.75 inches on all sides
|
||||
- **Header**: Displays "Naomi's freeCodeCamp Review"
|
||||
- **Footer**: Contains page numbers and link to community Discord server
|
||||
|
||||
### Disclaimer
|
||||
|
||||
This is not an officially sanctioned freeCodeCamp document. The Application is maintained independently and the generated content reflects the curriculum state at the time of generation. For the most up-to-date information, always refer to the official freeCodeCamp website.
|
||||
|
||||
## 2. Technical Documentation
|
||||
|
||||
This section is for those interested in running their own instance of the Application.
|
||||
|
||||
### Prerequisites
|
||||
|
||||
- **Node.js**: Version 18.x or higher recommended
|
||||
- **pnpm**: Package manager (version 10.18.0 or compatible)
|
||||
- **Operating System**: Linux, macOS, or Windows
|
||||
- **Disk Space**: Minimum 500MB for dependencies and output files
|
||||
|
||||
### Installation
|
||||
|
||||
1. Clone the repository:
|
||||
```bash
|
||||
git clone <repository-url>
|
||||
cd fcc-review-generator
|
||||
```
|
||||
|
||||
2. Install dependencies:
|
||||
```bash
|
||||
pnpm install
|
||||
```
|
||||
|
||||
This will automatically install Chrome browser via Puppeteer (required for PDF generation).
|
||||
|
||||
### Directory Structure
|
||||
|
||||
```
|
||||
fcc-review-generator/
|
||||
├── content/ # Review lesson markdown files
|
||||
│ └── review-*/ # Individual review topic directories
|
||||
├── data/
|
||||
│ └── order.json # Curriculum ordering configuration
|
||||
├── src/
|
||||
│ ├── config/
|
||||
│ │ ├── options.ts # PDF generation options
|
||||
│ │ └── text.ts # Cover page text template
|
||||
│ └── index.ts # Main application entry point
|
||||
├── package.json # Project dependencies and scripts
|
||||
└── tsconfig.json # TypeScript configuration
|
||||
```
|
||||
|
||||
### Configuration
|
||||
|
||||
#### Content Source
|
||||
|
||||
1. Copy review lesson markdown files from the freeCodeCamp repository to the `content/` directory
|
||||
2. The Application recursively walks the directory tree, so nested folders are supported
|
||||
3. Only `.md` files are processed; other files are ignored
|
||||
|
||||
#### Curriculum Ordering
|
||||
|
||||
1. Copy the Full Stack curriculum order from `/curriculum/structure/superblocks/fullstack.json` in the freeCodeCamp repository
|
||||
2. Paste into `data/order.json` in this project
|
||||
3. The Application uses this to sort review pages in the correct curriculum order
|
||||
|
||||
#### PDF Customization
|
||||
|
||||
Modify `src/config/options.ts` to customize:
|
||||
- Page size and margins
|
||||
- Header and footer templates
|
||||
- Styling and formatting
|
||||
|
||||
Modify `src/config/text.ts` to customize:
|
||||
- Cover page content
|
||||
- Introduction text
|
||||
- Disclaimer text
|
||||
|
||||
### Usage
|
||||
|
||||
Run the Application:
|
||||
```bash
|
||||
pnpm start
|
||||
```
|
||||
|
||||
The Application will:
|
||||
1. Read all markdown files from `content/` directory
|
||||
2. Sort them according to `data/order.json`
|
||||
3. Generate a table of contents
|
||||
4. Compile all content into a single markdown file (`review.md`)
|
||||
5. Convert the markdown to PDF (`fcc-review-pages.pdf`)
|
||||
6. Clean up the temporary markdown file
|
||||
|
||||
### Output
|
||||
|
||||
- **Success**: Generates `fcc-review-pages.pdf` in the project root
|
||||
- **Console**: Displays progress messages during execution
|
||||
- **Errors**: Logged to console with descriptive messages
|
||||
|
||||
### Development
|
||||
|
||||
#### Build TypeScript
|
||||
|
||||
```bash
|
||||
pnpm build
|
||||
```
|
||||
|
||||
Compiles TypeScript files according to `tsconfig.json`.
|
||||
|
||||
#### Linting
|
||||
|
||||
```bash
|
||||
pnpm lint
|
||||
```
|
||||
|
||||
Runs ESLint with strict settings (max warnings: 0).
|
||||
|
||||
#### Testing
|
||||
|
||||
```bash
|
||||
pnpm test
|
||||
```
|
||||
|
||||
Currently outputs a placeholder message (no tests implemented).
|
||||
|
||||
### Technical Architecture
|
||||
|
||||
#### Core Components
|
||||
|
||||
1. **File Reader** (`readDirectoryRecursively`)
|
||||
- Recursively scans the content directory
|
||||
- Returns flat array of file paths
|
||||
- Handles nested directory structures
|
||||
|
||||
2. **File Sorter** (`sortFiles`)
|
||||
- Sorts files based on curriculum order from `order.json`
|
||||
- Matches file directory names to curriculum block names
|
||||
- Maintains proper curriculum sequence
|
||||
|
||||
3. **Content Processor** (`rollupFiles`)
|
||||
- Extracts frontmatter metadata (title, ID, etc.)
|
||||
- Strips frontmatter and freeCodeCamp-specific heading syntax
|
||||
- Generates table of contents with anchor links
|
||||
- Compiles all content into single markdown file
|
||||
|
||||
4. **PDF Generator** (`createPdf`)
|
||||
- Uses `md-to-pdf` library (which uses Puppeteer/Chrome)
|
||||
- Applies custom styling and layout options
|
||||
- Generates headers, footers, and page numbers
|
||||
- Writes final PDF to disk
|
||||
|
||||
#### Dependencies
|
||||
|
||||
- **md-to-pdf** (v5.2.4): Markdown to PDF conversion using headless Chrome
|
||||
- **tsx** (v4.20.6): TypeScript execution for development
|
||||
- **typescript** (v5.9.3): TypeScript compiler
|
||||
- **eslint** (v9.37.0): Code quality and style enforcement
|
||||
|
||||
### Troubleshooting
|
||||
|
||||
#### Common Issues
|
||||
|
||||
**Issue**: Puppeteer/Chrome installation fails
|
||||
- **Solution**: Ensure you have sufficient disk space and network connectivity. Run `pnpx puppeteer browsers install chrome` manually.
|
||||
|
||||
**Issue**: PDF generation fails with "Protocol error"
|
||||
- **Solution**: Chrome may need additional system dependencies. On Linux, install required libraries for headless Chrome.
|
||||
|
||||
**Issue**: Files not appearing in correct order
|
||||
- **Solution**: Verify `data/order.json` matches the structure of your content directory names.
|
||||
|
||||
**Issue**: Out of memory errors
|
||||
- **Solution**: The Application processes all content in memory. For very large datasets, consider increasing Node.js memory limit: `NODE_OPTIONS="--max-old-space-size=4096" pnpm start`
|
||||
|
||||
### Performance Considerations
|
||||
|
||||
- File processing is sequential for consistent ordering
|
||||
- PDF generation uses headless Chrome, which is memory-intensive
|
||||
- Typical generation time: 10-30 seconds depending on content volume
|
||||
- Temporary markdown file is automatically cleaned up after PDF generation
|
||||
|
||||
### System Requirements
|
||||
|
||||
- **Memory**: Minimum 2GB RAM (4GB recommended)
|
||||
- **CPU**: Modern multi-core processor recommended
|
||||
- **Network**: Required for initial dependency installation
|
||||
- **Storage**: 500MB minimum for dependencies and output
|
||||
|
||||
## 3. Legal Documentation
|
||||
|
||||
This section is for expansions to our legal policies specific to the Application.
|
||||
|
||||
### License
|
||||
|
||||
This software is licensed under Naomi's Public License. The full license text can be found at:
|
||||
- Local: [LICENSE.md](LICENSE.md)
|
||||
- Online: https://docs.nhcarrigan.com/#/license
|
||||
|
||||
Copyright is held by Naomi Carrigan.
|
||||
|
||||
### Privacy Policy
|
||||
|
||||
The Application processes markdown files locally and does not collect, store, or transmit any personal data. For information about privacy practices related to the project infrastructure (repository hosting, issue tracking, etc.), please refer to:
|
||||
- Local: [PRIVACY.md](PRIVACY.md)
|
||||
- Online: https://docs.nhcarrigan.com/#/privacy
|
||||
|
||||
### Terms of Service
|
||||
|
||||
By using this Application, you agree to the Terms of Service. The full terms can be found at:
|
||||
- Local: [TERMS.md](TERMS.md)
|
||||
- Online: https://docs.nhcarrigan.com/#/terms
|
||||
|
||||
### Security Policy
|
||||
|
||||
If you discover a security vulnerability in the Application, please follow the responsible disclosure process outlined in our Security Policy:
|
||||
- Local: [SECURITY.md](SECURITY.md)
|
||||
- Online: https://docs.nhcarrigan.com/#/security
|
||||
|
||||
### Content Attribution
|
||||
|
||||
The review content processed by this Application originates from freeCodeCamp.org and is subject to freeCodeCamp's licensing terms. This tool is an unofficial aggregator and is not endorsed by or affiliated with freeCodeCamp.org.
|
||||
|
||||
Users of the generated PDF should respect freeCodeCamp's intellectual property rights and use the content for personal educational purposes only.
|
||||
|
||||
### Disclaimer of Warranty
|
||||
|
||||
THE APPLICATION IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. THE MAINTAINERS MAKE NO WARRANTY THAT:
|
||||
- The generated PDF will be error-free or complete
|
||||
- The content will be current or up-to-date with the latest freeCodeCamp curriculum
|
||||
- The Application will function without interruption
|
||||
|
||||
Users should always refer to the official freeCodeCamp website for the most accurate and current curriculum information.
|
||||
|
||||
## 4. Contributing Documentation
|
||||
|
||||
This section is for documentation related to contributing to the Application's codebase.
|
||||
|
||||
### Getting Started
|
||||
|
||||
We welcome contributions to the freeCodeCamp Review Generator! Before contributing, please review:
|
||||
|
||||
1. **Contributing Guidelines**: https://docs.nhcarrigan.com/#/contributing
|
||||
- Local reference: [CONTRIBUTING.md](CONTRIBUTING.md)
|
||||
2. **Code of Conduct**: https://docs.nhcarrigan.com/#/coc
|
||||
- Local reference: [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md)
|
||||
|
||||
### Ways to Contribute
|
||||
|
||||
#### 1. Report Bugs
|
||||
|
||||
If you encounter a bug, please open a GitHub issue with:
|
||||
- Clear description of the problem
|
||||
- Steps to reproduce
|
||||
- Expected vs. actual behavior
|
||||
- Your environment (OS, Node.js version, pnpm version)
|
||||
- Any relevant error messages or logs
|
||||
|
||||
#### 2. Suggest Enhancements
|
||||
|
||||
We appreciate feature requests and enhancement suggestions! Please open a GitHub issue describing:
|
||||
- The problem you're trying to solve
|
||||
- Your proposed solution
|
||||
- Any alternative approaches you've considered
|
||||
- How this would benefit other users
|
||||
|
||||
#### 3. Submit Pull Requests
|
||||
|
||||
Ready to contribute code? Follow these steps:
|
||||
|
||||
1. **Fork and Clone**
|
||||
```bash
|
||||
git clone <your-fork-url>
|
||||
cd fcc-review-generator
|
||||
```
|
||||
|
||||
2. **Create a Branch**
|
||||
```bash
|
||||
git checkout -b feature/your-feature-name
|
||||
```
|
||||
|
||||
3. **Make Changes**
|
||||
- Follow existing code style and patterns
|
||||
- Update relevant documentation
|
||||
- Ensure TypeScript types are correct
|
||||
- Test your changes thoroughly
|
||||
|
||||
4. **Run Quality Checks**
|
||||
```bash
|
||||
pnpm lint # Check code style
|
||||
pnpm build # Ensure TypeScript compiles
|
||||
pnpm start # Test PDF generation
|
||||
```
|
||||
|
||||
5. **Commit Changes**
|
||||
```bash
|
||||
git add .
|
||||
git commit -m "feat: description of your changes"
|
||||
```
|
||||
|
||||
Follow conventional commit message format:
|
||||
- `feat:` for new features
|
||||
- `fix:` for bug fixes
|
||||
- `docs:` for documentation changes
|
||||
- `refactor:` for code refactoring
|
||||
- `chore:` for maintenance tasks
|
||||
|
||||
6. **Push and Create PR**
|
||||
```bash
|
||||
git push origin feature/your-feature-name
|
||||
```
|
||||
Then open a Pull Request on GitHub with a clear description of your changes.
|
||||
|
||||
### Code Style Guidelines
|
||||
|
||||
- **TypeScript**: Use strict type checking; avoid `any` types
|
||||
- **Formatting**: Follow the ESLint configuration (`@nhcarrigan/eslint-config`)
|
||||
- **Naming**: Use descriptive variable and function names
|
||||
- **Comments**: Include JSDoc comments for exported functions
|
||||
- **Error Handling**: Use try-catch blocks and provide meaningful error messages
|
||||
|
||||
### Project Conventions
|
||||
|
||||
#### Copyright Headers
|
||||
|
||||
All source files should include the copyright header:
|
||||
```typescript
|
||||
/**
|
||||
* @copyright NHCarrigan
|
||||
* @license Naomi's Public License
|
||||
* @author Naomi Carrigan
|
||||
*/
|
||||
```
|
||||
|
||||
#### File Organization
|
||||
|
||||
- Place configuration in `src/config/`
|
||||
- Keep utility functions modular and focused
|
||||
- Use ES modules (import/export)
|
||||
- Maintain clear separation of concerns
|
||||
|
||||
#### TypeScript Configuration
|
||||
|
||||
The project uses strict TypeScript settings:
|
||||
- `strict: true`
|
||||
- Target: ES2022
|
||||
- Module: ESNext
|
||||
- No implicit any types
|
||||
|
||||
### Testing
|
||||
|
||||
Currently, the project does not have an automated test suite. Contributions that add testing infrastructure are welcome! Potential testing improvements:
|
||||
|
||||
- Unit tests for file processing functions
|
||||
- Integration tests for PDF generation
|
||||
- Snapshot tests for output consistency
|
||||
- CI/CD pipeline integration
|
||||
|
||||
### Development Workflow
|
||||
|
||||
1. **Install dependencies**: `pnpm install`
|
||||
2. **Make changes** to source files in `src/`
|
||||
3. **Test locally**: `pnpm start` to verify PDF generation
|
||||
4. **Check for errors**: `pnpm lint` and `pnpm build`
|
||||
5. **Commit and push** your changes
|
||||
6. **Create Pull Request** for review
|
||||
|
||||
### Review Process
|
||||
|
||||
Pull requests will be reviewed by project maintainers. The review process includes:
|
||||
|
||||
- Code quality and style verification
|
||||
- Functionality testing
|
||||
- Documentation completeness
|
||||
- Alignment with project goals
|
||||
|
||||
Please be patient during the review process and be open to feedback and requested changes.
|
||||
|
||||
### Communication
|
||||
|
||||
For questions, discussions, or help with contributions:
|
||||
|
||||
- **GitHub Issues**: For bug reports and feature requests
|
||||
- **Pull Requests**: For code contributions and discussions
|
||||
- **Discord**: Join the community at http://chat.nhcarrigan.com
|
||||
- **Email**: contact@nhcarrigan.com for private inquiries
|
||||
|
||||
### Recognition
|
||||
|
||||
All contributors will be recognized for their contributions. Significant contributions may result in being listed in a CONTRIBUTORS file or project documentation.
|
||||
|
||||
### License for Contributions
|
||||
|
||||
By contributing to this project, you agree that your contributions will be licensed under the same license as the project (Naomi's Public License). You confirm that:
|
||||
|
||||
- You have the right to submit the contribution
|
||||
- Your contribution is your original work or properly attributed
|
||||
- You understand the contribution will be publicly available
|
||||
|
||||
---
|
||||
|
||||
Thank you for your interest in contributing to the freeCodeCamp Review Generator! Your contributions help make this tool better for everyone in the learning community.
|
||||
@@ -0,0 +1,126 @@
|
||||
---
|
||||
title: Gwen Abalise
|
||||
---
|
||||
|
||||
Gwen Abalise (hereinafter the "Application") is a Discord bot that provides a private thread-based ticketing system for Discord communities. The bot enables users to create support tickets through a simple button interface, with tickets managed as private threads that include designated support staff roles.
|
||||
|
||||
## 1. User Documentation
|
||||
|
||||
This section is for those interacting with a live instance of the Application.
|
||||
|
||||
### Getting Started
|
||||
|
||||
To use Gwen Abalise, [add her to your Discord server](https://discord.com/oauth2/authorize?client_id=1343413943447584819).
|
||||
|
||||
### Commands
|
||||
|
||||
The bot provides three slash commands:
|
||||
|
||||
- `/about` - Learn more about the bot, including version information and helpful links
|
||||
- `/start <channel>` - Set up the ticket system in a specified text channel (requires MANAGE_GUILD permission)
|
||||
- `/role <role>` - Configure which role should be pinged and added to new tickets (requires MANAGE_GUILD permission)
|
||||
|
||||
### Ticket System
|
||||
|
||||
The ticketing system works through a simple button interface:
|
||||
1. Administrators use `/start` to place a "Create Ticket" button in a channel
|
||||
2. Users click the button to open a private thread ticket
|
||||
3. The designated support role is automatically added to the thread
|
||||
4. Support staff can close tickets using the "Close Ticket" button within threads
|
||||
|
||||
### Subscription Model
|
||||
|
||||
The bot operates on a subscription model with Discord's premium features:
|
||||
- Servers require an active subscription to use the ticketing functionality
|
||||
- Entitled guilds (configured in the codebase) have access without subscription
|
||||
- Non-subscribed servers receive prompts to subscribe with premium buttons
|
||||
|
||||
## 2. Technical Documentation
|
||||
|
||||
This section is for those interested in running their own instance of the Application.
|
||||
|
||||
### Architecture
|
||||
|
||||
The application is built with:
|
||||
- **Runtime**: Node.js with TypeScript
|
||||
- **Discord Library**: discord.js v14
|
||||
- **Database**: MongoDB with Prisma ORM
|
||||
- **Web Server**: Fastify (for health monitoring and landing page)
|
||||
- **Logging**: Custom logger utility
|
||||
|
||||
### Core Components
|
||||
|
||||
#### Commands (`src/commands/`)
|
||||
Command definitions for Discord slash commands:
|
||||
- `about.ts` - Bot information command
|
||||
- `role.ts` - Support role configuration command
|
||||
- `start.ts` - Ticket system initialization command
|
||||
|
||||
#### Modules (`src/modules/`)
|
||||
Business logic implementations:
|
||||
- `about.ts` - Displays bot information with action buttons
|
||||
- `close.ts` - Handles ticket closure and thread management
|
||||
- `open.ts` - Creates new ticket threads and database records
|
||||
- `role.ts` - Manages support role configuration
|
||||
- `start.ts` - Sets up ticket creation interface in channels
|
||||
|
||||
#### Utilities (`src/utils/`)
|
||||
- `isSubscribed.ts` - Validates server subscription status
|
||||
- `logger.ts` - Logging functionality
|
||||
- `replyToError.ts` - Error handling for interactions
|
||||
|
||||
#### Database Schema
|
||||
Two main models:
|
||||
- `Tickets` - Tracks ticket state (open/closed), thread IDs, and user associations
|
||||
- `Roles` - Maps server IDs to their designated support role IDs
|
||||
|
||||
#### Web Server (`src/server/`)
|
||||
Provides health monitoring endpoint and informational landing page at port 5012.
|
||||
|
||||
### Environment Requirements
|
||||
|
||||
- `DISCORD_TOKEN` - Bot token from Discord Developer Portal
|
||||
- `MONGO_URI` - MongoDB connection string
|
||||
- `npm_package_version` - Automatically set by npm for version display
|
||||
|
||||
### Permissions
|
||||
|
||||
The bot requires these Discord permissions:
|
||||
- Send Messages
|
||||
- Create Private Threads
|
||||
- Manage Threads
|
||||
- Use Slash Commands
|
||||
|
||||
## 3. Legal Documentation
|
||||
|
||||
This section is for expansions to our legal policies specific to the Application.
|
||||
|
||||
## 4. Contributing Documentation
|
||||
|
||||
This section is for documentation related to contributing to the Application's codebase.
|
||||
|
||||
### Development Setup
|
||||
|
||||
The project uses:
|
||||
- TypeScript with strict configuration
|
||||
- ESLint with @nhcarrigan/eslint-config
|
||||
- Prisma for database management
|
||||
- Vitest for testing (tests not yet implemented)
|
||||
- pnpm for package management
|
||||
|
||||
### Build Process
|
||||
|
||||
```bash
|
||||
pnpm build # Compiles TypeScript to prod/ directory
|
||||
pnpm lint # Runs ESLint with zero warnings policy
|
||||
pnpm start # Runs the compiled application with 1Password secrets
|
||||
```
|
||||
|
||||
### Code Structure
|
||||
|
||||
The codebase follows a modular architecture with clear separation between:
|
||||
- Command definitions (registration data)
|
||||
- Command implementations (business logic)
|
||||
- Utility functions (shared functionality)
|
||||
- Database models (data persistence)
|
||||
- Web server (health monitoring)
|
||||
@@ -0,0 +1,38 @@
|
||||
---
|
||||
title: Hacksmiths
|
||||
---
|
||||
|
||||
Hacksmiths (hereinafter the "Application") is an online programming-themed party game.
|
||||
|
||||
## 1. User Documentation
|
||||
|
||||
:::note
|
||||
This section is coming soon!
|
||||
:::
|
||||
|
||||
This section is for those interacting with a live instance of the Application.
|
||||
|
||||
## 2. Technical Documentation
|
||||
|
||||
:::note
|
||||
This section is coming soon!
|
||||
:::
|
||||
|
||||
This section is for those interested in running their own instance of the Application.
|
||||
|
||||
## 3. Legal Documentation
|
||||
|
||||
:::note
|
||||
This section is coming soon!
|
||||
:::
|
||||
|
||||
This section is for expansions to our legal policies specific to the Application.
|
||||
|
||||
## 4. Contributing Documentation
|
||||
|
||||
:::note
|
||||
This section is coming soon!
|
||||
:::
|
||||
|
||||
This section is for documentation related to contributing to the Application's codebase.
|
||||
|
||||
@@ -0,0 +1,245 @@
|
||||
---
|
||||
title: Hikari
|
||||
---
|
||||
|
||||
Hikari (hereinafter the "Application") is a centralized platform for managing NHCarrigan's products and services. It consists of three main components: a Discord bot with AI capabilities, an Angular web client for dashboard management, and a Fastify server backend. The platform enables users to manage their accounts, subscriptions, licenses, product configurations, and provides an AI-powered support agent for assistance with NHCarrigan's ecosystem of products.
|
||||
|
||||
## 1. User Documentation
|
||||
|
||||
### Discord Bot Features
|
||||
|
||||
The Hikari Discord bot provides the following functionality:
|
||||
|
||||
- **AI Support Agent**: Chat with Hikari through direct messages to get help with NHCarrigan's products
|
||||
- **Product Information**: Ask questions about any of the available products and services
|
||||
- **Command Interface**: Use slash commands for quick actions
|
||||
- `/about` - Get information about Hikari and available features
|
||||
- `/dm` - Trigger a DM response to easily find your direct message channel
|
||||
|
||||
### Web Dashboard Features
|
||||
|
||||
The web dashboard provides a user-friendly interface for:
|
||||
|
||||
- **Product Browsing**: View all available products categorized by type (Community Tools, Websites/APIs, Apps/Games)
|
||||
- **Announcements**: Stay updated with the latest product updates and community news
|
||||
- **Account Management**: Manage your subscriptions, licenses, and configurations
|
||||
- **Product Filtering**: Filter products by category or view all products at once
|
||||
|
||||
### Product Categories
|
||||
|
||||
1. **Community Tooling and Integrations**: Discord bots, translation services, and community management tools
|
||||
2. **Websites and APIs**: Web applications, documentation sites, and API services
|
||||
3. **Apps and Games**: Desktop applications, games, and interactive experiences
|
||||
|
||||
### Getting Started
|
||||
|
||||
1. **Discord Bot**: Install Hikari from the Discord app directory or invite to your server
|
||||
2. **Web Dashboard**: Visit [hikari.nhcarrigan.com](https://hikari.nhcarrigan.com) to access the dashboard
|
||||
3. **Support**: Join the [Discord community](https://chat.nhcarrigan.com) or visit the [forum](https://forum.nhcarrigan.com) for additional help
|
||||
|
||||
## 2. Technical Documentation
|
||||
|
||||
### Architecture Overview
|
||||
|
||||
Hikari follows a microservices architecture with three main components:
|
||||
|
||||
#### Bot Service (`/bot`)
|
||||
- **Framework**: Discord.js v14.21.0
|
||||
- **AI Integration**: Anthropic Claude API for intelligent responses
|
||||
- **Language**: TypeScript with Node.js
|
||||
- **Key Features**:
|
||||
- Slash command handling
|
||||
- Direct message AI conversations
|
||||
- Web search integration
|
||||
- Error handling and logging
|
||||
|
||||
#### Client Service (`/client`)
|
||||
- **Framework**: Angular v20.0.4
|
||||
- **Language**: TypeScript
|
||||
- **Key Features**:
|
||||
- Responsive web interface
|
||||
- Product catalog with filtering
|
||||
- Announcements system
|
||||
- Routing and navigation
|
||||
|
||||
#### Server Service (`/server`)
|
||||
- **Framework**: Fastify v5.4.0
|
||||
- **Database**: MongoDB with Prisma ORM
|
||||
- **Key Features**:
|
||||
- RESTful API endpoints
|
||||
- Announcement management
|
||||
- Database operations
|
||||
- Discord and forum integration
|
||||
|
||||
### Development Setup
|
||||
|
||||
#### Prerequisites
|
||||
- Node.js (latest LTS)
|
||||
- pnpm package manager
|
||||
- MongoDB instance
|
||||
- Discord bot token
|
||||
- Anthropic API key
|
||||
|
||||
#### Installation
|
||||
```bash
|
||||
# Clone the repository
|
||||
git clone https://git.nhcarrigan.com/nhcarrigan/hikari
|
||||
|
||||
# Install dependencies
|
||||
pnpm install
|
||||
|
||||
# Build all services
|
||||
pnpm build
|
||||
```
|
||||
|
||||
#### Environment Configuration
|
||||
|
||||
**Bot Service** (`bot/prod.env`):
|
||||
```ini
|
||||
DISCORD_TOKEN=your_discord_token
|
||||
ANTHROPIC_API_KEY=your_anthropic_key
|
||||
```
|
||||
|
||||
**Server Service**:
|
||||
```ini
|
||||
MONGO_URI=your_mongodb_connection_string
|
||||
```
|
||||
|
||||
#### Running Services
|
||||
|
||||
```bash
|
||||
# Start bot service
|
||||
cd bot && pnpm start
|
||||
|
||||
# Start client development server
|
||||
cd client && ng serve
|
||||
|
||||
# Start server service
|
||||
cd server && pnpm start
|
||||
```
|
||||
|
||||
### Database Schema
|
||||
|
||||
The application uses MongoDB with the following models:
|
||||
|
||||
```prisma
|
||||
model Announcements {
|
||||
id String @id @default(auto()) @map("_id") @db.ObjectId
|
||||
title String
|
||||
content String
|
||||
type String // "products" or "community"
|
||||
createdAt DateTime @default(now()) @unique
|
||||
}
|
||||
```
|
||||
|
||||
### API Endpoints
|
||||
|
||||
- `POST /announcement` - Create new announcements
|
||||
- `GET /announcements` - Retrieve announcements
|
||||
- Health check and monitoring endpoints
|
||||
|
||||
### Key Configuration Files
|
||||
|
||||
- [`client/src/app/config/products.ts`](client/src/app/config/products.ts) - Product catalog configuration
|
||||
- [`bot/src/config/prompt.ts`](bot/src/config/prompt.ts) - AI agent personality and instructions
|
||||
- [`client/src/app/app.routes.ts`](client/src/app/app.routes.ts) - Client-side routing
|
||||
- [`bot/commandJson.js`](bot/commandJson.js) - Discord slash command definitions
|
||||
|
||||
### Build and Deployment
|
||||
|
||||
The project uses Turbo for monorepo management:
|
||||
|
||||
```bash
|
||||
# Build all projects
|
||||
turbo build
|
||||
|
||||
# Run linting
|
||||
turbo lint
|
||||
|
||||
# Run tests
|
||||
turbo test
|
||||
```
|
||||
|
||||
## 3. Legal Documentation
|
||||
|
||||
### License
|
||||
This software is licensed under [Naomi's Public License](https://docs.nhcarrigan.com/#/license).
|
||||
|
||||
### Privacy Policy
|
||||
User data handling is governed by the [NHCarrigan Privacy Policy](https://docs.nhcarrigan.com/#/privacy).
|
||||
|
||||
### Terms of Service
|
||||
Usage of Hikari is subject to the [NHCarrigan Terms of Service](https://docs.nhcarrigan.com/#/terms).
|
||||
|
||||
### Security Policy
|
||||
Security vulnerabilities should be reported according to the [NHCarrigan Security Policy](https://docs.nhcarrigan.com/#/security).
|
||||
|
||||
### Data Collection
|
||||
- Discord user IDs for bot functionality
|
||||
- Message content for AI processing (not stored permanently)
|
||||
- Usage analytics for service improvement
|
||||
- Subscription and account information
|
||||
|
||||
### Third-Party Services
|
||||
- **Discord**: Bot hosting and user interaction
|
||||
- **Anthropic Claude**: AI conversation processing
|
||||
- **MongoDB**: Data storage
|
||||
- **Gitea**: Source code hosting
|
||||
|
||||
## 4. Contributing Documentation
|
||||
|
||||
### Code of Conduct
|
||||
All contributors must follow the [NHCarrigan Code of Conduct](https://docs.nhcarrigan.com/community/coc/).
|
||||
|
||||
### Contributing Guidelines
|
||||
Please review the [Contributing Guidelines](https://docs.nhcarrigan.com/community/guide/) before submitting contributions.
|
||||
|
||||
### Development Workflow
|
||||
|
||||
1. **Issue Creation**: Use the provided templates in [`.gitea/issue_template/`](.gitea/issue_template/)
|
||||
2. **Pull Requests**: Follow the template in [`.gitea/pull_request_template.yml`](.gitea/pull_request_template.yml)
|
||||
3. **Code Standards**:
|
||||
- ESLint configuration enforced
|
||||
- TypeScript strict mode
|
||||
- Comprehensive error handling
|
||||
- Logging for debugging
|
||||
|
||||
### Project Structure
|
||||
|
||||
```
|
||||
hikari/
|
||||
├── bot/ # Discord bot service
|
||||
│ ├── src/ # TypeScript source
|
||||
│ └── prod/ # Compiled JavaScript
|
||||
├── client/ # Angular web application
|
||||
│ └── src/ # Angular source files
|
||||
├── server/ # Fastify API server
|
||||
│ ├── src/ # Server source
|
||||
│ └── prisma/ # Database schema
|
||||
└── docs/ # Documentation
|
||||
```
|
||||
|
||||
### Testing Requirements
|
||||
- Unit tests for new functionality
|
||||
- Integration tests for API endpoints
|
||||
- End-to-end tests for critical user flows
|
||||
- Code coverage maintenance above threshold
|
||||
|
||||
### Style Guidelines
|
||||
- Use TypeScript for all new code
|
||||
- Follow existing naming conventions
|
||||
- Include JSDoc comments for public methods
|
||||
- Maintain consistent indentation (2 spaces)
|
||||
- Use meaningful variable and function names
|
||||
|
||||
### Submission Checklist
|
||||
- [ ] Code follows project style guidelines
|
||||
- [ ] Tests added for new functionality
|
||||
- [ ] Documentation updated as needed
|
||||
- [ ] No breaking changes without discussion
|
||||
- [ ] All checks pass in CI/CD pipeline
|
||||
|
||||
### Getting Help
|
||||
- **Discord Community**: [chat.nhcarrigan.com](https://chat.nhcarrigan.com)
|
||||
- **Forum**: [forum.nhcarrigan.com](https://forum.nhcarrigan.com)
|
||||
- **Email**: contact@nhcarrigan.com
|
||||
@@ -0,0 +1,38 @@
|
||||
---
|
||||
title: Isolda
|
||||
---
|
||||
|
||||
Isolda (hereinafter the "Application") is a modern, sleek email client for the web or desktop
|
||||
|
||||
## 1. User Documentation
|
||||
|
||||
:::note
|
||||
This section is coming soon!
|
||||
:::
|
||||
|
||||
This section is for those interacting with a live instance of the Application.
|
||||
|
||||
## 2. Technical Documentation
|
||||
|
||||
:::note
|
||||
This section is coming soon!
|
||||
:::
|
||||
|
||||
This section is for those interested in running their own instance of the Application.
|
||||
|
||||
## 3. Legal Documentation
|
||||
|
||||
:::note
|
||||
This section is coming soon!
|
||||
:::
|
||||
|
||||
This section is for expansions to our legal policies specific to the Application.
|
||||
|
||||
## 4. Contributing Documentation
|
||||
|
||||
:::note
|
||||
This section is coming soon!
|
||||
:::
|
||||
|
||||
This section is for documentation related to contributing to the Application's codebase.
|
||||
|
||||
@@ -0,0 +1,473 @@
|
||||
---
|
||||
title: Keiko
|
||||
---
|
||||
|
||||
Keiko (hereinafter the "Application") is a private Discord bot that serves as Naomi's personal AI assistant, providing intelligent conversational assistance powered by Anthropic's Claude AI with integrated web search capabilities.
|
||||
|
||||
## 1. User Documentation
|
||||
|
||||
This section is for those interacting with a live instance of the Application.
|
||||
|
||||
### 1.1. Getting Started
|
||||
|
||||
Keiko is available through Discord and can be interacted with in multiple ways:
|
||||
|
||||
- **Direct Messages (DM)**: Send a direct message to Keiko to start a private conversation
|
||||
- **Guild/Server Messages**: Mention @Keiko in a server where the bot is present
|
||||
- **Thread Messages**: Participate in threads created by Keiko
|
||||
|
||||
### 1.2. Access Requirements
|
||||
|
||||
- **Primary User**: Naomi (User ID: 465650873650118659) has full access to all features
|
||||
- **Subscribers**: Other users require an active Discord entitlement (premium subscription) to interact with Keiko
|
||||
- **Unauthorized Users**: Will receive a prompt to purchase a premium subscription
|
||||
|
||||
### 1.3. Available Commands
|
||||
|
||||
#### `/dm`
|
||||
Reopens or initiates a direct message conversation with Keiko.
|
||||
|
||||
**Usage**: `/dm`
|
||||
|
||||
**Example**:
|
||||
```
|
||||
/dm
|
||||
```
|
||||
|
||||
#### `/clear`
|
||||
Clears the conversation history in the current channel or thread. This inserts a marker message that prevents Keiko from accessing previous messages in the conversation context.
|
||||
|
||||
**Usage**: `/clear`
|
||||
|
||||
**Example**:
|
||||
```
|
||||
/clear
|
||||
```
|
||||
|
||||
### 1.4. Conversational Features
|
||||
|
||||
#### Message Handling
|
||||
- Keiko maintains conversation context by reading the last 20 messages in the channel/thread
|
||||
- Responses are automatically chunked into 2000-character segments for readability
|
||||
- Keiko will show typing indicators while processing your request
|
||||
- Multiple message chunks are delivered with a 2.5-second delay between them
|
||||
|
||||
#### Web Search Integration
|
||||
- Keiko can search the web to provide up-to-date information
|
||||
- Web search is automatically invoked when needed (up to 5 searches per request)
|
||||
- Citations and sources are included in responses when available
|
||||
|
||||
#### Cost Display
|
||||
- Each response includes token usage statistics
|
||||
- Input and output token counts are displayed
|
||||
- Estimated API costs are shown for transparency
|
||||
|
||||
### 1.5. Keiko's Personality
|
||||
|
||||
Keiko is designed with a calm, demure, and reserved personality. She conducts herself like a butler - always polite, respectful, and ready to serve. Her primary role is to provide clinical and unbiased information in response to requests, with an emphasis on including sources and links to confirm claims.
|
||||
|
||||
### 1.6. Getting Help
|
||||
|
||||
If you encounter any issues or need support:
|
||||
- Visit the community server: [chat.nhcarrigan.com](https://chat.nhcarrigan.com)
|
||||
- Open an issue on the GitHub repository
|
||||
- Contact via email: contact@nhcarrigan.com
|
||||
|
||||
## 2. Technical Documentation
|
||||
|
||||
This section is for those interested in running their own instance of the Application.
|
||||
|
||||
### 2.1. Prerequisites
|
||||
|
||||
Before setting up Keiko, ensure you have the following:
|
||||
|
||||
- **Node.js**: Latest LTS version recommended
|
||||
- **npm**: Package manager (comes with Node.js)
|
||||
- **Discord Bot**: A registered Discord application with bot token
|
||||
- **Anthropic API Key**: Access to Claude AI API
|
||||
- **1Password CLI** (optional): For secure environment variable management
|
||||
|
||||
### 2.2. Technology Stack
|
||||
|
||||
- **Runtime**: Node.js with ES Modules
|
||||
- **Language**: TypeScript 5.9.3
|
||||
- **Discord Framework**: discord.js v14.23.2
|
||||
- **AI Integration**: @anthropic-ai/sdk v0.65.0
|
||||
- **Web Server**: Fastify v5.6.1
|
||||
- **Logging**: @nhcarrigan/logger v1.1.1
|
||||
- **Analytics**: @nhcarrigan/discord-analytics v0.0.6
|
||||
|
||||
### 2.3. Installation
|
||||
|
||||
1. **Clone the repository**:
|
||||
```bash
|
||||
git clone <repository-url>
|
||||
cd keiko
|
||||
```
|
||||
|
||||
2. **Install dependencies**:
|
||||
```bash
|
||||
npm install
|
||||
```
|
||||
|
||||
3. **Configure environment variables**:
|
||||
|
||||
Create a `prod.env` file in the root directory with the following variables:
|
||||
|
||||
```env
|
||||
DISCORD_TOKEN=your_discord_bot_token
|
||||
AI_TOKEN=your_anthropic_api_key
|
||||
LOG_TOKEN=your_logging_token (optional)
|
||||
```
|
||||
|
||||
Alternatively, you can set these as system environment variables.
|
||||
|
||||
### 2.4. Configuration
|
||||
|
||||
#### Discord Bot Setup
|
||||
|
||||
1. Create a Discord application at [Discord Developer Portal](https://discord.com/developers/applications)
|
||||
2. Enable the following Gateway Intents:
|
||||
- DirectMessages
|
||||
- MessageContent
|
||||
- GuildMessages
|
||||
- Guilds
|
||||
3. Generate a bot token and add it to your environment configuration
|
||||
4. Invite the bot to your server with appropriate permissions
|
||||
|
||||
#### AI Configuration
|
||||
|
||||
The AI model configuration is set in the codebase (src/modules/makeAiRequest.ts:29):
|
||||
- **Model**: claude-sonnet-4-5-20250929
|
||||
- **Max Tokens**: 3000
|
||||
- **Temperature**: 1
|
||||
- **Web Search**: Enabled (max 5 uses per request)
|
||||
|
||||
#### Personality Customization
|
||||
|
||||
Edit `src/config/personality.ts` to customize Keiko's personality and behavior.
|
||||
|
||||
#### User Authorization
|
||||
|
||||
Update `src/utils/isNaomi.ts:15` to configure authorized user IDs and SKU IDs for subscription management.
|
||||
|
||||
### 2.5. Building the Application
|
||||
|
||||
Compile TypeScript to JavaScript:
|
||||
|
||||
```bash
|
||||
npm run build
|
||||
```
|
||||
|
||||
This will:
|
||||
- Remove the existing `prod` directory
|
||||
- Compile TypeScript files to the `prod` directory
|
||||
|
||||
### 2.6. Running the Application
|
||||
|
||||
#### With 1Password CLI:
|
||||
```bash
|
||||
npm start
|
||||
```
|
||||
|
||||
This uses 1Password CLI to inject environment variables from `prod.env`.
|
||||
|
||||
#### Without 1Password CLI:
|
||||
```bash
|
||||
node prod/index.js
|
||||
```
|
||||
|
||||
Ensure environment variables are set in your system before running.
|
||||
|
||||
### 2.7. Development
|
||||
|
||||
#### Linting
|
||||
|
||||
Run ESLint to check code quality:
|
||||
|
||||
```bash
|
||||
npm run lint
|
||||
```
|
||||
|
||||
#### Testing
|
||||
|
||||
Currently, tests are not implemented:
|
||||
|
||||
```bash
|
||||
npm test
|
||||
```
|
||||
|
||||
### 2.8. Project Structure
|
||||
|
||||
```
|
||||
keiko/
|
||||
├── src/
|
||||
│ ├── commands/ # Slash command definitions
|
||||
│ │ ├── clear.ts # Clear history command
|
||||
│ │ └── dm.ts # DM command
|
||||
│ ├── config/ # Configuration files
|
||||
│ │ └── personality.ts # AI personality definition
|
||||
│ ├── events/ # Discord event handlers
|
||||
│ │ ├── handleDmMessage.ts
|
||||
│ │ ├── handleGuildMessage.ts
|
||||
│ │ ├── handleThreadMessage.ts
|
||||
│ │ └── onMessage.ts
|
||||
│ ├── modules/ # Core business logic
|
||||
│ │ ├── clear.ts # Clear command logic
|
||||
│ │ ├── dm.ts # DM command logic
|
||||
│ │ ├── makeAiRequest.ts # AI request handler
|
||||
│ │ └── sendAiResponse.ts # Response chunking
|
||||
│ ├── server/ # Web server
|
||||
│ │ └── serve.ts # Fastify health check server
|
||||
│ ├── utils/ # Utility functions
|
||||
│ │ ├── ai.ts # Anthropic client
|
||||
│ │ ├── calculateCost.ts
|
||||
│ │ ├── isNaomi.ts # Authorization
|
||||
│ │ ├── logger.ts
|
||||
│ │ ├── replyToError.ts
|
||||
│ │ └── sleep.ts
|
||||
│ └── index.ts # Main entry point
|
||||
├── prod/ # Compiled JavaScript (generated)
|
||||
├── package.json
|
||||
├── tsconfig.json
|
||||
├── prod.env # Environment variables
|
||||
└── LICENSE.md
|
||||
```
|
||||
|
||||
### 2.9. Monitoring and Health Checks
|
||||
|
||||
Keiko runs a Fastify web server on port 3333 that provides:
|
||||
- Health check endpoint at `GET /`
|
||||
- Basic bot information page
|
||||
- Uptime monitoring capability
|
||||
|
||||
### 2.10. Error Handling
|
||||
|
||||
The application includes:
|
||||
- Global unhandled rejection handler
|
||||
- Global uncaught exception handler
|
||||
- User-facing error messages with support links
|
||||
- Comprehensive logging via @nhcarrigan/logger
|
||||
|
||||
### 2.11. Analytics
|
||||
|
||||
Discord analytics are tracked for:
|
||||
- Direct messages
|
||||
- Guild messages
|
||||
- Thread messages
|
||||
- Token usage and API costs per interaction
|
||||
|
||||
### 2.12. Deployment
|
||||
|
||||
**Recommended Environment**:
|
||||
- Linux server (tested on Arch Linux 6.17.5-arch1-1)
|
||||
- Node.js runtime
|
||||
- Process manager (e.g., PM2, systemd)
|
||||
|
||||
**Deployment Steps**:
|
||||
|
||||
1. Clone and configure the repository
|
||||
2. Build the application
|
||||
3. Set up environment variables
|
||||
4. Run with a process manager for reliability
|
||||
5. Configure monitoring for the health check endpoint (port 3333)
|
||||
|
||||
## 3. Legal Documentation
|
||||
|
||||
This section is for expansions to our legal policies specific to the Application.
|
||||
|
||||
### 3.1. License
|
||||
|
||||
This software is licensed under [Naomi's Public License](https://docs.nhcarrigan.com/#/license).
|
||||
|
||||
Copyright held by Naomi Carrigan.
|
||||
|
||||
### 3.2. Privacy and Data Handling
|
||||
|
||||
#### Data Collection
|
||||
|
||||
Keiko collects and processes the following data:
|
||||
- Discord user IDs for authorization
|
||||
- Message content for conversation context (last 20 messages)
|
||||
- Discord entitlement information for subscription management
|
||||
- Analytics data (message counts, token usage, API costs)
|
||||
|
||||
#### Data Retention
|
||||
|
||||
- **Conversation History**: Stored temporarily in memory during active sessions
|
||||
- **Message Context**: Fetched on-demand from Discord's API (last 20 messages)
|
||||
- **No Persistent Storage**: Keiko does not maintain a traditional database
|
||||
|
||||
#### Third-Party Services
|
||||
|
||||
Keiko integrates with:
|
||||
- **Discord**: For bot functionality and message delivery
|
||||
- **Anthropic**: For AI-powered responses (Claude AI)
|
||||
- **Web Search Services**: For retrieving up-to-date information
|
||||
|
||||
User messages and conversation context are sent to these services for processing.
|
||||
|
||||
### 3.3. Terms of Use
|
||||
|
||||
#### Authorized Use
|
||||
|
||||
- Keiko is a private assistant primarily designed for Naomi's personal use
|
||||
- Subscription-based access is available for authorized users
|
||||
- Unauthorized access attempts will be rejected
|
||||
|
||||
#### Service Availability
|
||||
|
||||
- The Application is provided "as is" without warranties
|
||||
- Service availability is not guaranteed
|
||||
- Features and functionality may change without notice
|
||||
|
||||
#### Acceptable Use
|
||||
|
||||
Users must:
|
||||
- Comply with Discord's Terms of Service
|
||||
- Use the bot for lawful purposes only
|
||||
- Respect the bot's intended functionality
|
||||
- Not attempt to abuse, exploit, or reverse engineer the service
|
||||
|
||||
### 3.4. API Usage and Costs
|
||||
|
||||
- AI interactions incur costs via the Anthropic API
|
||||
- Token usage and costs are displayed transparently to users
|
||||
- Excessive usage may be rate-limited or restricted
|
||||
|
||||
## 4. Contributing Documentation
|
||||
|
||||
This section is for documentation related to contributing to the Application's codebase.
|
||||
|
||||
### 4.1. How to Contribute
|
||||
|
||||
We welcome contributions to Keiko! Here's how you can help:
|
||||
|
||||
1. **Fork the repository** on GitHub
|
||||
2. **Create a feature branch** for your changes
|
||||
3. **Make your changes** following our coding standards
|
||||
4. **Test your changes** thoroughly
|
||||
5. **Submit a Pull Request** with a clear description of your changes
|
||||
|
||||
### 4.2. Contributing Guidelines
|
||||
|
||||
Please review our comprehensive contributing guidelines:
|
||||
|
||||
[Contributing Guidelines](https://docs.nhcarrigan.com/#/contributing)
|
||||
|
||||
### 4.3. Code of Conduct
|
||||
|
||||
Before interacting with our community, please read our Code of Conduct:
|
||||
|
||||
[Code of Conduct](https://docs.nhcarrigan.com/#/coc)
|
||||
|
||||
### 4.4. Development Setup
|
||||
|
||||
1. **Clone the repository**:
|
||||
```bash
|
||||
git clone <repository-url>
|
||||
cd keiko
|
||||
```
|
||||
|
||||
2. **Install dependencies**:
|
||||
```bash
|
||||
npm install
|
||||
```
|
||||
|
||||
3. **Set up environment variables** (see Technical Documentation section)
|
||||
|
||||
4. **Run the linter**:
|
||||
```bash
|
||||
npm run lint
|
||||
```
|
||||
|
||||
5. **Build the project**:
|
||||
```bash
|
||||
npm run build
|
||||
```
|
||||
|
||||
### 4.5. Coding Standards
|
||||
|
||||
- **Language**: TypeScript
|
||||
- **Module System**: ES Modules
|
||||
- **Linting**: ESLint with @nhcarrigan/eslint-config
|
||||
- **Type Checking**: Strict TypeScript configuration
|
||||
- **Code Style**: Follow existing patterns in the codebase
|
||||
|
||||
### 4.6. Pull Request Guidelines
|
||||
|
||||
When submitting a Pull Request:
|
||||
|
||||
- **Clear Description**: Explain what your changes do and why
|
||||
- **Reference Issues**: Link to any related issues
|
||||
- **Test Your Changes**: Ensure the bot builds and runs correctly
|
||||
- **Follow Conventions**: Match the existing code style
|
||||
- **Small, Focused Changes**: Keep PRs focused on a single feature or fix
|
||||
|
||||
### 4.7. Areas for Contribution
|
||||
|
||||
Potential areas where contributions are welcome:
|
||||
|
||||
- **Testing**: Implement unit and integration tests
|
||||
- **Documentation**: Improve or expand documentation
|
||||
- **Features**: Add new commands or capabilities
|
||||
- **Bug Fixes**: Fix reported issues
|
||||
- **Performance**: Optimize existing functionality
|
||||
- **Error Handling**: Improve error messages and handling
|
||||
|
||||
### 4.8. Reporting Issues
|
||||
|
||||
If you find a bug or have a feature request:
|
||||
|
||||
1. **Check existing issues** to avoid duplicates
|
||||
2. **Create a detailed issue** with:
|
||||
- Clear title
|
||||
- Description of the problem or feature
|
||||
- Steps to reproduce (for bugs)
|
||||
- Expected vs actual behavior
|
||||
- Environment details (if applicable)
|
||||
|
||||
### 4.9. Getting Help
|
||||
|
||||
Need help contributing?
|
||||
|
||||
- Join our community: [chat.nhcarrigan.com](https://chat.nhcarrigan.com)
|
||||
- Email: contact@nhcarrigan.com
|
||||
- Check the documentation: [docs.nhcarrigan.com](https://docs.nhcarrigan.com)
|
||||
|
||||
### 4.10. Recognition
|
||||
|
||||
Contributors will be:
|
||||
- Acknowledged in Pull Request comments
|
||||
- Listed in project contributors (if applicable)
|
||||
- Appreciated for their time and effort!
|
||||
|
||||
## Appendix
|
||||
|
||||
### A.1. Key File References
|
||||
|
||||
- **Main Entry Point**: src/index.ts:1
|
||||
- **AI Request Handler**: src/modules/makeAiRequest.ts:29
|
||||
- **Authorization Logic**: src/utils/isNaomi.ts:15
|
||||
- **Personality Configuration**: src/config/personality.ts:11
|
||||
- **Message Router**: src/events/onMessage.ts:1
|
||||
|
||||
### A.2. Important Constants
|
||||
|
||||
- **Bot ID**: 1425897287065800785
|
||||
- **Naomi's User ID**: 465650873650118659
|
||||
- **SKU ID**: 1425905043244060762
|
||||
- **Health Check Port**: 3333
|
||||
- **Max Context Messages**: 20
|
||||
- **Max AI Tokens**: 3000
|
||||
- **Message Chunk Size**: 2000 characters
|
||||
- **Chunk Delay**: 2.5 seconds
|
||||
|
||||
### A.3. External Resources
|
||||
|
||||
- **Community**: https://chat.nhcarrigan.com
|
||||
- **Documentation**: https://docs.nhcarrigan.com
|
||||
- **License**: https://docs.nhcarrigan.com/#/license
|
||||
- **Contributing**: https://docs.nhcarrigan.com/#/contributing
|
||||
- **Code of Conduct**: https://docs.nhcarrigan.com/#/coc
|
||||
- **Contact Email**: contact@nhcarrigan.com
|
||||
@@ -0,0 +1,95 @@
|
||||
---
|
||||
title: Life of a Naomi
|
||||
---
|
||||
|
||||
Life of a Naomi (hereinafter the "Game") is a quick game that introduces who Naomi is, and provides a glimpse into her life.
|
||||
|
||||
## 1. Player Documentation
|
||||
|
||||
This section is for players who are exploring or playing the Game.
|
||||
|
||||
### Controls
|
||||
|
||||
- **Keyboard / Gamepad:**
|
||||
- Arrow keys / D-Pad: Move character
|
||||
- Z / Enter / A: Confirm / Interact
|
||||
- X / Esc / B: Cancel / Menu
|
||||
- C / Space / Y: Open menu (if applicable)
|
||||
- Shift / L / R: Dash (if enabled)
|
||||
|
||||
- **Touch UI (Mobile / Tablet):**
|
||||
- Tap to move or interact
|
||||
- On-screen buttons for menu and actions
|
||||
|
||||
### Troubleshooting
|
||||
|
||||
- Ensure your device meets RPG Maker MZ requirements.
|
||||
- If the game crashes, try restarting the app or clearing temporary files.
|
||||
- Ask us on discord if persistent issues occur.
|
||||
|
||||
---
|
||||
|
||||
## 2. Developer Documentation
|
||||
|
||||
This section is for those interested in running, modifying, or extending the Game.
|
||||
|
||||
### Engine & Dependencies
|
||||
|
||||
- **Engine:** RPG Maker MZ
|
||||
- **Plugins Used:** none
|
||||
- **Assets:** All original
|
||||
|
||||
### Setup Instructions
|
||||
|
||||
1. Open RPG Maker MZ.
|
||||
2. Load the project folder `life-of-a-naomi`.
|
||||
3. Use the "Playtest" button to run the Game locally.
|
||||
4. To export, use the "Deployment" feature for target platforms.
|
||||
|
||||
### Directory Structure
|
||||
|
||||
- `data/` — database files (maps, events, actors, items, skills, etc.)
|
||||
- `img/` — graphics (characters, tilesets, animations, pictures, etc.)
|
||||
- `audio/` — music and sound effects
|
||||
- `js/` — plugins and core scripts
|
||||
- `www/` — exported HTML5 build (if deployed for web)
|
||||
|
||||
---
|
||||
|
||||
## 3. Legal Documentation
|
||||
|
||||
This section expands on legal or licensing information specific to the Game.
|
||||
|
||||
### Licensing
|
||||
|
||||
This Game is created using RPG Maker MZ. The game code and original content are the property of NHCarrigan. RPG Maker MZ runtime assets are licensed under the terms provided by KADOKAWA Corporation. All original graphics, music, and story content belong to NHCarrigan and are protected by copyright.
|
||||
|
||||
### Third-Party Notices
|
||||
|
||||
- Any third-party assets, music, or plugins included are credited in game.
|
||||
|
||||
## 4. Contributing Documentation
|
||||
|
||||
This section is for contributors or collaborators on the Game.
|
||||
|
||||
### How to Contribute
|
||||
|
||||
- Fork or copy the project folder.
|
||||
- Submit patches or mods via Git.
|
||||
|
||||
- Include a changelog and clear notes on modifications.
|
||||
|
||||
### Coding Standards
|
||||
|
||||
- Plugins in `js/plugins/` should follow standard JS conventions.
|
||||
- Comment custom scripts clearly for readability.
|
||||
|
||||
### Art & Audio Guidelines
|
||||
|
||||
- Maintain original resolutions where possible (48x48 tiles, etc.).
|
||||
- Use consistent naming for files in `img/` and `audio/`.
|
||||
|
||||
### Contact
|
||||
|
||||
- For collaboration or questions, ask us on discord.
|
||||
|
||||
@@ -0,0 +1,624 @@
|
||||
---
|
||||
title: Liora
|
||||
---
|
||||
|
||||
Liora (hereinafter the "Application") is a Discord bot that provides a "highlight words" notification system for Discord servers. The Application monitors messages in Discord servers and sends direct messages (DMs) to users when specific words or phrases they've configured are mentioned, bringing IRC-style highlight/ping functionality to Discord.
|
||||
|
||||
## 1. User Documentation
|
||||
|
||||
This section is for those interacting with a live instance of the Application.
|
||||
|
||||
### 1.1 Getting Started
|
||||
|
||||
To use Liora in your Discord server, you'll need to:
|
||||
|
||||
1. **Add the bot to your server**: Visit the [invite link](https://discord.com/oauth2/authorize?client_id=1391492296222179459)
|
||||
2. **Subscribe to premium**: A server administrator must purchase a server subscription from the Discord store, unless your server is whitelisted
|
||||
3. **Enable DMs**: Ensure you have direct messages enabled from server members to receive notifications
|
||||
|
||||
### 1.2 Available Commands
|
||||
|
||||
The Application provides the following slash commands:
|
||||
|
||||
#### `/about`
|
||||
Displays information about Liora, including what it does and how to get help.
|
||||
|
||||
#### `/add <word>`
|
||||
Adds a word or phrase to your highlight list for the current server.
|
||||
- **Parameters**:
|
||||
- `word` (required): The word or phrase to monitor
|
||||
- **Limitations**: Maximum of 10 highlights per user per server
|
||||
- **Behaviour**: Case-insensitive matching
|
||||
|
||||
**Example**: `/add typescript` will notify you whenever someone mentions "TypeScript", "typescript", or "TYPESCRIPT"
|
||||
|
||||
#### `/remove <word>`
|
||||
Removes a word or phrase from your highlight list for the current server.
|
||||
- **Parameters**:
|
||||
- `word` (required): The word or phrase to remove from monitoring
|
||||
|
||||
**Example**: `/remove typescript`
|
||||
|
||||
#### `/list`
|
||||
Displays all your configured highlight words for the current server.
|
||||
|
||||
#### `/dm`
|
||||
Tests whether the bot can send you direct messages. Use this command if you're not receiving notifications to verify your DM settings are correct.
|
||||
|
||||
### 1.3 Notification Format
|
||||
|
||||
When a message contains one of your highlight words, you'll receive a DM containing:
|
||||
|
||||
- Which word(s) were matched
|
||||
- The server name where the message was sent
|
||||
- The display name of the user who sent the message
|
||||
- A direct link to the original message
|
||||
- Action buttons:
|
||||
- **Jump to Message**: Opens the message in Discord
|
||||
- **Discord Server**: Links to the support server
|
||||
- **Forum**: Links to the support forum
|
||||
|
||||
### 1.4 Important Notes
|
||||
|
||||
- You will **not** receive notifications for messages you send yourself
|
||||
- Highlight matching is **case-insensitive** (e.g., "discord" matches "Discord", "DISCORD", etc.)
|
||||
- Highlights are **server-specific** - each server has its own separate list
|
||||
- The bot requires the ability to send you DMs - check your privacy settings if notifications aren't working
|
||||
|
||||
### 1.5 Support and Feedback
|
||||
|
||||
If you need assistance or want to report a bug:
|
||||
|
||||
- **Discord Server**: [chat.nhcarrigan.com](https://chat.nhcarrigan.com)
|
||||
- **Forum**: [forum.nhcarrigan.com](https://forum.nhcarrigan.com)
|
||||
- **Email**: contact@nhcarrigan.com
|
||||
- **GitHub Issues**: Open an issue on the repository
|
||||
|
||||
### 1.6 Subscription Information
|
||||
|
||||
The Application uses Discord's premium subscription system. Server administrators can purchase a subscription to enable the bot for all members. Two servers are currently whitelisted for free access (Naomi's server and FreeCodeCamp).
|
||||
|
||||
**Premium SKU ID**: 1396962587471515769
|
||||
|
||||
## 2. Technical Documentation
|
||||
|
||||
This section is for those interested in running their own instance of the Application.
|
||||
|
||||
### 2.1 System Requirements
|
||||
|
||||
- **Node.js**: v22 or higher
|
||||
- **Package Manager**: pnpm 10.13.1 or higher
|
||||
- **Database**: MongoDB instance
|
||||
- **Discord**: Bot token from Discord Developer Portal
|
||||
- **1Password CLI** (optional): For secure environment variable management
|
||||
|
||||
### 2.2 Technology Stack
|
||||
|
||||
#### Core Technologies
|
||||
- **Runtime**: Node.js v22
|
||||
- **Language**: TypeScript 5.8.3
|
||||
- **Package Manager**: pnpm 10.13.1
|
||||
|
||||
#### Main Dependencies
|
||||
- **discord.js** (v14.21.0): Discord API interaction and bot framework
|
||||
- **@prisma/client** (v6.12.0): Database ORM for MongoDB
|
||||
- **fastify** (v5.4.0): Lightweight HTTP server for health monitoring
|
||||
- **@nhcarrigan/discord-analytics** (v0.0.6): Analytics tracking
|
||||
- **@nhcarrigan/logger** (v1.1.1): Logging utility
|
||||
|
||||
#### Development Tools
|
||||
- **ESLint** (v9.31.0): Code linting with @nhcarrigan/eslint-config
|
||||
- **Prisma** (v6.12.0): Database schema management
|
||||
- **TypeScript**: Type safety and compilation
|
||||
|
||||
### 2.3 Architecture Overview
|
||||
|
||||
The Application follows an event-driven architecture:
|
||||
|
||||
```
|
||||
src/
|
||||
├── index.ts # Application entry point
|
||||
├── commands/ # Slash command handlers
|
||||
│ ├── about.ts
|
||||
│ ├── add.ts
|
||||
│ ├── remove.ts
|
||||
│ ├── list.ts
|
||||
│ └── dm.ts
|
||||
├── events/ # Discord event handlers
|
||||
│ ├── interactionCreate.ts # Command routing
|
||||
│ └── messageCreate.ts # Message monitoring (core logic)
|
||||
├── interfaces/ # TypeScript type definitions
|
||||
│ ├── liora.ts # Main bot interface
|
||||
│ └── command.ts # Command type definition
|
||||
├── utils/ # Utility functions
|
||||
│ ├── checkEntitlement.ts # Subscription validation
|
||||
│ ├── errorHandler.ts # Error logging with UUIDs
|
||||
│ └── logger.ts # Logger configuration
|
||||
├── modules/ # Business logic
|
||||
│ └── sendUnentitledResponse.ts
|
||||
├── config/ # Configuration
|
||||
│ └── entitlements.ts # Whitelisted guild IDs
|
||||
└── server/ # HTTP server
|
||||
└── serve.ts # Health monitoring endpoint
|
||||
```
|
||||
|
||||
#### Key Components
|
||||
|
||||
**Entry Point** (`src/index.ts`):
|
||||
- Initializes Prisma database client
|
||||
- Creates Discord bot with required intents (Guilds, GuildMessages, MessageContent)
|
||||
- Sets up event listeners
|
||||
- Starts analytics cron job
|
||||
- Launches Fastify web server on port 5022
|
||||
|
||||
**Message Processing** (`src/events/messageCreate.ts`):
|
||||
- Validates guild entitlement/subscription
|
||||
- Queries database for all highlights in the server
|
||||
- Performs case-insensitive matching against message content
|
||||
- Sends DM notifications with formatted components
|
||||
- Logs metrics for analytics
|
||||
|
||||
**Command Handlers**:
|
||||
All commands use Discord's Components V2 API with ContainerBuilder and TextDisplayBuilder for rich formatting.
|
||||
|
||||
### 2.4 Database Schema
|
||||
|
||||
The Application uses MongoDB with Prisma ORM:
|
||||
|
||||
```prisma
|
||||
model Highlights {
|
||||
id String @id @default(auto()) @map("_id") @db.ObjectId
|
||||
serverId String # Discord guild ID
|
||||
userId String # Discord user ID
|
||||
words String[] # Array of highlight words
|
||||
|
||||
@@unique([serverId, userId])
|
||||
@@index([serverId])
|
||||
}
|
||||
```
|
||||
|
||||
- Each user can have one document per server
|
||||
- The unique constraint ensures no duplicate user-server combinations
|
||||
- The server ID is indexed for efficient queries when processing messages
|
||||
|
||||
### 2.5 Installation and Setup
|
||||
|
||||
#### Step 1: Clone the Repository
|
||||
|
||||
```bash
|
||||
git clone https://git.nhcarrigan.com/nhcarrigan/liora.git
|
||||
cd liora
|
||||
```
|
||||
|
||||
#### Step 2: Install Dependencies
|
||||
|
||||
```bash
|
||||
pnpm install
|
||||
```
|
||||
|
||||
#### Step 3: Configure Environment Variables
|
||||
|
||||
Create a `prod.env` file with the following variables:
|
||||
|
||||
```env
|
||||
DISCORD_TOKEN=your_discord_bot_token
|
||||
MONGO_URI=your_mongodb_connection_string
|
||||
LOG_TOKEN=your_logging_service_token
|
||||
```
|
||||
|
||||
**Discord Bot Setup**:
|
||||
1. Visit [Discord Developer Portal](https://discord.com/developers/applications)
|
||||
2. Create a new application
|
||||
3. Navigate to the "Bot" section and create a bot
|
||||
4. Enable these Privileged Gateway Intents:
|
||||
- Server Members Intent (GUILDS)
|
||||
- Message Content Intent (MESSAGE_CONTENT)
|
||||
5. Copy the bot token to your environment file
|
||||
|
||||
**MongoDB Setup**:
|
||||
- Provide a MongoDB connection URI in the format: `mongodb://user:password@host:port/database`
|
||||
- Alternatively, use MongoDB Atlas for a cloud-hosted solution
|
||||
|
||||
#### Step 4: Generate Prisma Client
|
||||
|
||||
```bash
|
||||
pnpm run build
|
||||
```
|
||||
|
||||
This command runs `prisma generate && tsc`, which:
|
||||
- Generates the Prisma client from the schema
|
||||
- Compiles TypeScript to the `./prod` directory
|
||||
|
||||
#### Step 5: Register Discord Commands
|
||||
|
||||
Use the `commandJson.js` file to register slash commands with Discord:
|
||||
|
||||
```bash
|
||||
node commandJson.js
|
||||
```
|
||||
|
||||
Then use the output to register commands via Discord's API or developer portal.
|
||||
|
||||
#### Step 6: Start the Application
|
||||
|
||||
**With 1Password CLI**:
|
||||
```bash
|
||||
pnpm run start
|
||||
```
|
||||
|
||||
**Without 1Password CLI**:
|
||||
```bash
|
||||
node ./prod/index.js
|
||||
```
|
||||
|
||||
The Application will:
|
||||
- Connect to MongoDB
|
||||
- Log in to Discord
|
||||
- Start the web server on port 5022
|
||||
- Begin monitoring messages
|
||||
|
||||
### 2.6 Development Workflow
|
||||
|
||||
#### Linting
|
||||
|
||||
```bash
|
||||
pnpm run lint
|
||||
```
|
||||
|
||||
Uses ESLint with @nhcarrigan/eslint-config.
|
||||
|
||||
#### Building
|
||||
|
||||
```bash
|
||||
pnpm run build
|
||||
```
|
||||
|
||||
Generates Prisma client and compiles TypeScript.
|
||||
|
||||
#### Running Tests
|
||||
|
||||
```bash
|
||||
pnpm test
|
||||
```
|
||||
|
||||
Currently returns a placeholder. Test implementation is pending.
|
||||
|
||||
### 2.7 Continuous Integration
|
||||
|
||||
The repository includes a Gitea Actions workflow (`.gitea/workflows/ci.yml`) that:
|
||||
- Runs on push and pull requests to the main branch
|
||||
- Executes linting with ESLint
|
||||
- Verifies TypeScript compilation
|
||||
- Runs tests
|
||||
|
||||
### 2.8 Configuration
|
||||
|
||||
#### Whitelisted Guilds
|
||||
|
||||
Two Discord servers have free access without subscriptions, configured in `src/config/entitlements.ts`. To modify:
|
||||
|
||||
1. Edit `src/config/entitlements.ts`
|
||||
2. Add guild IDs to the whitelist array
|
||||
3. Rebuild the application
|
||||
|
||||
#### Subscription SKU
|
||||
|
||||
The premium subscription SKU is defined in `src/utils/checkEntitlement.ts`. To use your own subscription:
|
||||
|
||||
1. Create a subscription in Discord's Developer Portal
|
||||
2. Update the SKU ID in the entitlement check logic
|
||||
3. Rebuild the application
|
||||
|
||||
### 2.9 Deployment
|
||||
|
||||
#### Web Server
|
||||
|
||||
The Application includes a Fastify web server that:
|
||||
- Listens on port 5022
|
||||
- Serves a landing page at `/`
|
||||
- Provides information about the bot
|
||||
- Includes an "Add to Discord" button
|
||||
- Useful for health checks and monitoring
|
||||
|
||||
#### Production Deployment Checklist
|
||||
|
||||
1. Ensure all environment variables are configured
|
||||
2. Build the application with `pnpm run build`
|
||||
3. Set up process management (PM2, systemd, Docker, etc.)
|
||||
4. Configure reverse proxy if exposing the web server
|
||||
5. Set up MongoDB backups
|
||||
6. Monitor logs via the configured logging service
|
||||
7. Register Discord commands before starting the bot
|
||||
|
||||
#### Health Monitoring
|
||||
|
||||
The web server on port 5022 can be used for health checks. A simple GET request to `/` will return the landing page HTML if the service is running.
|
||||
|
||||
### 2.10 Analytics
|
||||
|
||||
The Application integrates with a custom analytics service (@nhcarrigan/discord-analytics):
|
||||
|
||||
- **Tracked Metrics**:
|
||||
- `highlight_triggered`: Logged when a highlight word is matched
|
||||
- Gateway events (connection, ready, etc.)
|
||||
- **Metadata**: Includes server ID, user ID, and matched words
|
||||
- **Authentication**: Requires LOG_TOKEN environment variable
|
||||
|
||||
### 2.11 API Endpoints
|
||||
|
||||
The Fastify web server exposes:
|
||||
|
||||
- `GET /`: Landing page with bot information and "Add to Discord" link
|
||||
|
||||
### 2.12 Security Considerations
|
||||
|
||||
- **Message Content Intent**: The bot requires access to read all message content in subscribed guilds. This is a privileged intent and should be handled responsibly.
|
||||
- **Environment Variables**: Use secure methods to manage secrets (1Password CLI, environment variable management services, etc.)
|
||||
- **DM Privacy**: The bot only sends DMs when highlights are triggered; it does not store message content
|
||||
- **Entitlement Validation**: All commands and message processing verify subscription status to prevent unauthorized usage
|
||||
|
||||
### 2.13 Troubleshooting
|
||||
|
||||
#### Bot Not Responding to Commands
|
||||
- Verify the bot has appropriate permissions in the server
|
||||
- Check that commands are registered with Discord's API
|
||||
- Ensure the bot is online and connected
|
||||
|
||||
#### DMs Not Being Sent
|
||||
- Verify users have DMs enabled from server members
|
||||
- Check that the bot has permission to send DMs
|
||||
- Use the `/dm` command to test DM functionality
|
||||
|
||||
#### Database Connection Issues
|
||||
- Verify MongoDB connection string format
|
||||
- Ensure MongoDB instance is accessible from the application
|
||||
- Check Prisma client is generated (`pnpm run build`)
|
||||
|
||||
#### Analytics Not Working
|
||||
- Verify LOG_TOKEN is correctly configured
|
||||
- Check analytics service is reachable
|
||||
- Review application logs for errors
|
||||
|
||||
## 3. Legal Documentation
|
||||
|
||||
This section is for expansions to our legal policies specific to the Application.
|
||||
|
||||
### 3.1 License
|
||||
|
||||
This software is licensed under [Naomi's Public License](https://docs.nhcarrigan.com/#/license).
|
||||
|
||||
Copyright held by Naomi Carrigan.
|
||||
|
||||
### 3.2 Data Collection and Privacy
|
||||
|
||||
The Application collects and stores the following data:
|
||||
|
||||
- **Discord User IDs**: To identify which users should receive notifications
|
||||
- **Discord Server IDs**: To associate highlights with specific servers
|
||||
- **Highlight Words**: The words/phrases users choose to monitor
|
||||
- **Analytics Metrics**: Anonymous usage statistics (highlight triggers, command usage)
|
||||
|
||||
**Data Usage**:
|
||||
- User data is used solely to provide the highlight notification functionality
|
||||
- Analytics data is used to improve the Application
|
||||
- No message content is stored permanently
|
||||
- Data is stored in a MongoDB database
|
||||
|
||||
**Data Retention**:
|
||||
- Highlight data is retained until manually removed by users via the `/remove` command
|
||||
- Users can view all their stored data via the `/list` command
|
||||
|
||||
**Third-Party Services**:
|
||||
- Discord API: Required for bot functionality
|
||||
- MongoDB: Database hosting
|
||||
- Custom Analytics Service: Usage metrics tracking
|
||||
|
||||
### 3.3 Terms of Service
|
||||
|
||||
By using the Application, you agree to:
|
||||
|
||||
- Use the Application in accordance with Discord's Terms of Service
|
||||
- Not abuse the highlight system to spam or harass other users
|
||||
- Accept that the service is provided "as is" without warranties
|
||||
- Understand that subscription fees are non-refundable per Discord's policies
|
||||
|
||||
### 3.4 Acceptable Use
|
||||
|
||||
Users must not:
|
||||
|
||||
- Use the Application to harass or spam other users
|
||||
- Attempt to circumvent subscription requirements
|
||||
- Exploit bugs or vulnerabilities in the Application
|
||||
- Use the Application for any illegal purposes
|
||||
|
||||
### 3.5 Subscription Terms
|
||||
|
||||
- Subscriptions are managed through Discord's subscription system
|
||||
- Pricing and billing are handled by Discord
|
||||
- Subscriptions are server-specific (per-guild)
|
||||
- Two servers are currently whitelisted for free access
|
||||
- Subscription status is validated before processing commands and notifications
|
||||
|
||||
### 3.6 Liability
|
||||
|
||||
The Application maintainers are not liable for:
|
||||
|
||||
- Missed notifications due to Discord API issues or user configuration
|
||||
- Data loss due to database failures or user error
|
||||
- Service interruptions or downtime
|
||||
- Actions taken by users based on notifications received
|
||||
|
||||
### 3.7 Contact for Legal Inquiries
|
||||
|
||||
For legal questions or concerns:
|
||||
|
||||
- **Email**: contact@nhcarrigan.com
|
||||
- **Discord**: [chat.nhcarrigan.com](https://chat.nhcarrigan.com)
|
||||
|
||||
## 4. Contributing Documentation
|
||||
|
||||
This section is for documentation related to contributing to the Application's codebase.
|
||||
|
||||
### 4.1 Contributing Guidelines
|
||||
|
||||
Our comprehensive contributing guidelines can be found at: [https://docs.nhcarrigan.com/#/contributing](https://docs.nhcarrigan.com/#/contributing)
|
||||
|
||||
### 4.2 Code of Conduct
|
||||
|
||||
Before interacting with our community, please review our Code of Conduct: [https://docs.nhcarrigan.com/#/coc](https://docs.nhcarrigan.com/#/coc)
|
||||
|
||||
### 4.3 How to Contribute
|
||||
|
||||
#### Reporting Bugs
|
||||
|
||||
If you encounter a bug:
|
||||
|
||||
1. Check existing GitHub issues to avoid duplicates
|
||||
2. Create a new issue with:
|
||||
- Clear description of the bug
|
||||
- Steps to reproduce
|
||||
- Expected vs. actual behavior
|
||||
- Environment details (Node.js version, OS, etc.)
|
||||
- Error logs or screenshots if applicable
|
||||
|
||||
#### Suggesting Features
|
||||
|
||||
For feature requests:
|
||||
|
||||
1. Open a GitHub issue with the "feature request" label
|
||||
2. Describe the feature and its use case
|
||||
3. Explain why it would benefit users
|
||||
4. Be open to discussion and feedback
|
||||
|
||||
#### Submitting Pull Requests
|
||||
|
||||
To contribute code:
|
||||
|
||||
1. **Fork the repository** on Gitea or GitHub
|
||||
2. **Create a feature branch**: `git checkout -b feature/your-feature-name`
|
||||
3. **Make your changes**:
|
||||
- Follow the existing code style
|
||||
- Add comments for complex logic
|
||||
- Update documentation if needed
|
||||
4. **Test your changes**:
|
||||
- Ensure the application builds: `pnpm run build`
|
||||
- Run linting: `pnpm run lint`
|
||||
- Test functionality locally
|
||||
5. **Commit your changes**:
|
||||
- Use clear, descriptive commit messages
|
||||
- Reference related issues if applicable
|
||||
6. **Push to your fork**: `git push origin feature/your-feature-name`
|
||||
7. **Open a Pull Request**:
|
||||
- Describe what changes were made and why
|
||||
- Link to related issues
|
||||
- Wait for review and address feedback
|
||||
|
||||
### 4.4 Development Setup
|
||||
|
||||
Follow the steps in Section 2.5 (Installation and Setup) to set up your development environment.
|
||||
|
||||
**Additional Development Tips**:
|
||||
|
||||
- Use TypeScript strict mode for type safety
|
||||
- Follow the ESLint configuration for consistent code style
|
||||
- Test commands in a development Discord server before submitting
|
||||
- Use meaningful variable and function names
|
||||
- Add JSDoc comments for public functions and interfaces
|
||||
|
||||
### 4.5 Code Style Guidelines
|
||||
|
||||
The Application uses:
|
||||
|
||||
- **@nhcarrigan/eslint-config**: ESLint configuration for consistent style
|
||||
- **@nhcarrigan/typescript-config**: TypeScript configuration
|
||||
- **Prettier-compatible formatting**: Enforced via ESLint
|
||||
|
||||
Key conventions:
|
||||
|
||||
- **File naming**: camelCase for TypeScript files
|
||||
- **Function naming**: camelCase for functions, PascalCase for classes/interfaces
|
||||
- **Indentation**: 2 spaces
|
||||
- **Quotes**: Double quotes for strings
|
||||
- **Semicolons**: Required
|
||||
- **Max line length**: Enforced by ESLint (exceptions allowed for long strings)
|
||||
|
||||
### 4.6 Project Structure Guidelines
|
||||
|
||||
When adding new features:
|
||||
|
||||
- **Commands**: Add to `src/commands/` directory
|
||||
- **Events**: Add to `src/events/` directory
|
||||
- **Utilities**: Add to `src/utils/` directory
|
||||
- **Business Logic**: Add to `src/modules/` directory
|
||||
- **Type Definitions**: Add to `src/interfaces/` directory
|
||||
|
||||
### 4.7 Testing Guidelines
|
||||
|
||||
Currently, the Application does not have automated tests. Contributions to add testing infrastructure are welcome!
|
||||
|
||||
**Manual Testing Checklist**:
|
||||
|
||||
- Test all commands in a Discord server
|
||||
- Verify highlight matching works correctly
|
||||
- Test edge cases (max highlights, special characters, etc.)
|
||||
- Verify DM notifications are sent properly
|
||||
- Test subscription validation
|
||||
- Check error handling
|
||||
|
||||
### 4.8 Documentation Contributions
|
||||
|
||||
Documentation improvements are highly valued! You can contribute by:
|
||||
|
||||
- Fixing typos or unclear explanations
|
||||
- Adding examples or use cases
|
||||
- Improving setup instructions
|
||||
- Translating documentation (if applicable)
|
||||
- Adding diagrams or visual aids
|
||||
|
||||
### 4.9 Community Involvement
|
||||
|
||||
Join our community:
|
||||
|
||||
- **Discord Server**: [chat.nhcarrigan.com](https://chat.nhcarrigan.com) - Ask questions, discuss features
|
||||
- **Forum**: [forum.nhcarrigan.com](https://forum.nhcarrigan.com) - Long-form discussions and support
|
||||
- **GitHub Issues**: Track bugs and feature requests
|
||||
|
||||
### 4.10 Recognition
|
||||
|
||||
Contributors will be recognized in:
|
||||
|
||||
- Git commit history
|
||||
- Release notes for significant contributions
|
||||
- The community Discord server
|
||||
|
||||
### 4.11 Getting Help
|
||||
|
||||
If you need help while contributing:
|
||||
|
||||
- Ask in the Discord server (#development or #support channels)
|
||||
- Post on the forum for detailed questions
|
||||
- Comment on the relevant GitHub issue or pull request
|
||||
- Email: contact@nhcarrigan.com
|
||||
|
||||
### 4.12 Release Process
|
||||
|
||||
The Application follows semantic versioning (SemVer):
|
||||
|
||||
- **Major versions** (X.0.0): Breaking changes
|
||||
- **Minor versions** (0.X.0): New features, backward compatible
|
||||
- **Patch versions** (0.0.X): Bug fixes, backward compatible
|
||||
|
||||
**Current Version**: v1.0.0 (as of latest commit: ba5987e)
|
||||
|
||||
Releases are managed by the maintainers. Contributors should focus on feature branches and pull requests rather than version bumping.
|
||||
|
||||
---
|
||||
|
||||
**Additional Resources**:
|
||||
|
||||
- **Live Bot**: [Add to Discord](https://discord.com/oauth2/authorize?client_id=1391492296222179459)
|
||||
- **Source Code**: [Gitea Repository](https://git.nhcarrigan.com/nhcarrigan/liora)
|
||||
- **Documentation Hub**: [docs.nhcarrigan.com](https://docs.nhcarrigan.com)
|
||||
- **Support Server**: [chat.nhcarrigan.com](https://chat.nhcarrigan.com)
|
||||
- **Support Forum**: [forum.nhcarrigan.com](https://forum.nhcarrigan.com)
|
||||
- **Contact Email**: contact@nhcarrigan.com
|
||||
@@ -0,0 +1,235 @@
|
||||
---
|
||||
title: "Logger"
|
||||
---
|
||||
|
||||
Logger (hereinafter the "Application") is a custom logging utility that provides a wrapper around a custom alert monitoring server, enabling applications to pipe errors and log messages to a centralized alerting system.
|
||||
|
||||
## 1. User Documentation
|
||||
|
||||
This section is for those interacting with a live instance of the Application.
|
||||
|
||||
### Installation
|
||||
|
||||
Install the package using your preferred package manager:
|
||||
|
||||
```bash
|
||||
npm install @nhcarrigan/logger
|
||||
```
|
||||
|
||||
```bash
|
||||
pnpm add @nhcarrigan/logger
|
||||
```
|
||||
|
||||
```bash
|
||||
yarn add @nhcarrigan/logger
|
||||
```
|
||||
|
||||
### Quick Start
|
||||
|
||||
```typescript
|
||||
import { Logger } from "@nhcarrigan/logger";
|
||||
|
||||
// Initialize the logger
|
||||
const logger = new Logger("my-app", "your-api-token");
|
||||
|
||||
// Send log messages
|
||||
await logger.log("info", "Application started successfully");
|
||||
await logger.log("warn", "This is a warning message");
|
||||
await logger.log("debug", "Debug information");
|
||||
|
||||
// Send error reports
|
||||
try {
|
||||
// Your code here
|
||||
} catch (error) {
|
||||
await logger.error("functionName", error);
|
||||
}
|
||||
```
|
||||
|
||||
### API Reference
|
||||
|
||||
#### Constructor
|
||||
|
||||
```typescript
|
||||
new Logger(application: string, token: string, url?: string)
|
||||
```
|
||||
|
||||
**Parameters:**
|
||||
- `application` (string): The name of your application (will appear in logs)
|
||||
- `token` (string): Your API token for the monitoring service
|
||||
- `url` (optional string): Custom URL for your own alerting instance (defaults to "https://alerts.nhcarrigan.com")
|
||||
|
||||
#### Methods
|
||||
|
||||
##### `log(level: Level, message: string): Promise<void>`
|
||||
|
||||
Sends a log message to the alerting service.
|
||||
|
||||
**Parameters:**
|
||||
- `level` (Level): The log level - one of "debug", "info", or "warn"
|
||||
- `message` (string): The message to send
|
||||
|
||||
##### `error(context: string, error: Error): Promise<void>`
|
||||
|
||||
Sends an error to the alerting service with stack trace information.
|
||||
|
||||
**Parameters:**
|
||||
- `context` (string): A brief description of where the error occurred (e.g., function name)
|
||||
- `error` (Error): The Node.js error object
|
||||
|
||||
### Log Levels
|
||||
|
||||
The Application supports three log levels:
|
||||
- `"debug"`: Debug information for development purposes
|
||||
- `"info"`: General informational messages
|
||||
- `"warn"`: Warning messages that don't halt execution
|
||||
|
||||
### Custom Alerting Server
|
||||
|
||||
By default, the logger sends data to `https://alerts.nhcarrigan.com`. You can configure it to use your own alerting instance by providing a custom URL in the constructor.
|
||||
|
||||
## 2. Technical Documentation
|
||||
|
||||
This section is for those interested in running their own instance of the Application.
|
||||
|
||||
### Architecture
|
||||
|
||||
The Application is built as a TypeScript class that wraps HTTP requests to an alerting server. It provides two main endpoints:
|
||||
|
||||
1. `/log` - For general log messages
|
||||
2. `/error` - For error reporting with stack traces
|
||||
|
||||
### API Endpoints
|
||||
|
||||
#### POST /log
|
||||
|
||||
Sends structured log data:
|
||||
|
||||
```json
|
||||
{
|
||||
"application": "your-app-name",
|
||||
"level": "info",
|
||||
"message": "Your log message"
|
||||
}
|
||||
```
|
||||
|
||||
#### POST /error
|
||||
|
||||
Sends structured error data:
|
||||
|
||||
```json
|
||||
{
|
||||
"application": "your-app-name",
|
||||
"context": "function-name",
|
||||
"message": "Error message",
|
||||
"stack": "Stack trace information"
|
||||
}
|
||||
```
|
||||
|
||||
### Authentication
|
||||
|
||||
All requests require an `Authorization` header with your API token.
|
||||
|
||||
### Development Setup
|
||||
|
||||
1. Clone the repository:
|
||||
```bash
|
||||
git clone https://git.nhcarrigan.com/nhcarrigan/logger.git
|
||||
```
|
||||
|
||||
2. Install dependencies:
|
||||
```bash
|
||||
pnpm install
|
||||
```
|
||||
|
||||
3. Build the project:
|
||||
```bash
|
||||
pnpm run build
|
||||
```
|
||||
|
||||
4. Run linting:
|
||||
```bash
|
||||
pnpm run lint
|
||||
```
|
||||
|
||||
### Project Structure
|
||||
|
||||
```
|
||||
src/
|
||||
├── index.ts # Main Logger class
|
||||
└── types/
|
||||
└── level.ts # Log level type definitions
|
||||
```
|
||||
|
||||
### TypeScript Configuration
|
||||
|
||||
The project uses:
|
||||
- `@nhcarrigan/typescript-config` for TypeScript configuration
|
||||
- `@nhcarrigan/eslint-config` for ESLint rules
|
||||
- ES modules (`"type": "module"`)
|
||||
|
||||
## 3. Legal Documentation
|
||||
|
||||
This section is for expansions to our legal policies specific to the Application.
|
||||
|
||||
### License
|
||||
|
||||
This software is licensed under Naomi's Public License. See the [LICENSE.md](LICENSE.md) file for complete terms.
|
||||
|
||||
### Copyright
|
||||
|
||||
Copyright held by Naomi Carrigan.
|
||||
|
||||
### Privacy
|
||||
|
||||
See [PRIVACY.md](PRIVACY.md) for privacy policy information.
|
||||
|
||||
### Terms of Service
|
||||
|
||||
See [TERMS.md](TERMS.md) for terms of service.
|
||||
|
||||
### Security
|
||||
|
||||
See [SECURITY.md](SECURITY.md) for security policy and vulnerability reporting procedures.
|
||||
|
||||
## 4. Contributing Documentation
|
||||
|
||||
This section is for documentation related to contributing to the Application's codebase.
|
||||
|
||||
### Getting Started
|
||||
|
||||
1. Read our [Code of Conduct](CODE_OF_CONDUCT.md)
|
||||
2. Review our [Contributing Guidelines](CONTRIBUTING.md)
|
||||
3. Fork the repository
|
||||
4. Create a feature branch
|
||||
5. Make your changes
|
||||
6. Submit a Pull Request
|
||||
|
||||
### Development Guidelines
|
||||
|
||||
- Follow the existing code style enforced by ESLint
|
||||
- Ensure TypeScript compilation passes without errors
|
||||
- Add appropriate JSDoc comments for new public methods
|
||||
- Test your changes thoroughly
|
||||
|
||||
### Issue Reporting
|
||||
|
||||
If you encounter bugs or have feature requests:
|
||||
|
||||
1. Check existing issues first
|
||||
2. Create a new issue with detailed information
|
||||
3. Include reproduction steps for bugs
|
||||
4. Tag issues appropriately
|
||||
|
||||
### Contact
|
||||
|
||||
- Chat Server: [http://chat.nhcarrigan.com](http://chat.nhcarrigan.com)
|
||||
- Email: contact@nhcarrigan.com
|
||||
- Repository: [https://git.nhcarrigan.com/nhcarrigan/logger](https://git.nhcarrigan.com/nhcarrigan/logger)
|
||||
- Issues: [https://git.nhcarrigan.com/nhcarrigan/logger/issues](https://git.nhcarrigan.com/nhcarrigan/logger/issues)
|
||||
|
||||
### Package Information
|
||||
|
||||
- **Package Name**: @nhcarrigan/logger
|
||||
- **Version**: 1.0.0
|
||||
- **NPM**: [https://www.npmjs.com/package/@nhcarrigan/logger](https://www.npmjs.com/package/@nhcarrigan/logger)
|
||||
- **Repository**: Git-based repository hosted at git.nhcarrigan.com
|
||||
@@ -0,0 +1,38 @@
|
||||
---
|
||||
title: Lucinda
|
||||
---
|
||||
|
||||
Lucinda (hereinafter the "Application") is a kanban-style task management site.
|
||||
|
||||
## 1. User Documentation
|
||||
|
||||
:::note
|
||||
This section is coming soon!
|
||||
:::
|
||||
|
||||
This section is for those interacting with a live instance of the Application.
|
||||
|
||||
## 2. Technical Documentation
|
||||
|
||||
:::note
|
||||
This section is coming soon!
|
||||
:::
|
||||
|
||||
This section is for those interested in running their own instance of the Application.
|
||||
|
||||
## 3. Legal Documentation
|
||||
|
||||
:::note
|
||||
This section is coming soon!
|
||||
:::
|
||||
|
||||
This section is for expansions to our legal policies specific to the Application.
|
||||
|
||||
## 4. Contributing Documentation
|
||||
|
||||
:::note
|
||||
This section is coming soon!
|
||||
:::
|
||||
|
||||
This section is for documentation related to contributing to the Application's codebase.
|
||||
|
||||
@@ -0,0 +1,195 @@
|
||||
---
|
||||
title: Lynira
|
||||
---
|
||||
|
||||
Lynira (hereinafter the "Application") is a link shortening service managed via a Discord bot with subscription-based access control and usage limits.
|
||||
|
||||
## 1. User Documentation
|
||||
|
||||
This section is for those interacting with a live instance of the Application.
|
||||
|
||||
### Overview
|
||||
Lynira is a Discord-integrated URL shortening service that allows users to create shortened links through Discord commands. The service operates on a subscription model with different tiers offering varying numbers of shortened URLs.
|
||||
|
||||
### Discord Commands
|
||||
|
||||
#### `/add`
|
||||
Creates a new shortened URL.
|
||||
- **Parameters:**
|
||||
- `slug` (required): The short identifier for your URL (e.g., "my-link")
|
||||
- `url` (required): The full URL to redirect to (must be a valid HTTP/HTTPS URL)
|
||||
- **Usage:** `/add slug:my-link url:https://example.com`
|
||||
- **Result:** Creates a short URL accessible at `https://lynira.link/mylink`
|
||||
|
||||
#### `/list`
|
||||
Displays all your active shortened URLs along with usage statistics.
|
||||
- **Features:**
|
||||
- Shows current usage count vs. subscription limit
|
||||
- Provides clickable buttons to access Discord server and forum
|
||||
- Lists all active short URLs with their destinations
|
||||
|
||||
#### `/remove`
|
||||
Removes a shortened URL from your account.
|
||||
- **Parameters:**
|
||||
- `slug` (required): The slug identifier to remove
|
||||
- **Usage:** `/remove slug:mylink`
|
||||
- **Note:** Removed slugs cannot be reused for security reasons
|
||||
|
||||
#### `/about`
|
||||
Displays information about the Lynira service.
|
||||
|
||||
### Subscription Tiers
|
||||
The service operates on multiple subscription tiers with different link limits:
|
||||
- **Personal**: Limited number of links
|
||||
- **Professional**: Higher link allowance
|
||||
- **Business**: Business-level capacity
|
||||
- **Organisation**: Significant link capacity
|
||||
- **Enterprise**: Maximum link capacity
|
||||
|
||||
### Web Interface
|
||||
The service provides several web pages:
|
||||
- **Home page** (`/`): Service information
|
||||
- **Error page** (`/error`): Displayed when system errors occur
|
||||
- **Unsubscribed page** (`/unsub`): Shown when accessing links from unsubscribed users
|
||||
- **Over limit page** (`/overlimit`): Displayed when users exceed their subscription limits
|
||||
- **404 page** (`/404`): Shown for non-existent or deleted links
|
||||
|
||||
## 2. Technical Documentation
|
||||
|
||||
This section is for those interested in running their own instance of the Application.
|
||||
|
||||
### Architecture
|
||||
Lynira is built using:
|
||||
- **Node.js** with TypeScript
|
||||
- **Discord.js** for Discord bot functionality
|
||||
- **Fastify** web server for HTTP handling
|
||||
- **Prisma** ORM for database operations
|
||||
- **PostgreSQL** database (implied from Prisma usage)
|
||||
|
||||
### Core Components
|
||||
|
||||
#### Discord Bot (`src/index.ts`)
|
||||
The main entry point that initializes:
|
||||
- Prisma database connection
|
||||
- Discord client with minimal intents
|
||||
- Command processing system
|
||||
- Web server instance
|
||||
|
||||
#### Web Server (`src/server/serve.ts`)
|
||||
Fastify-based HTTP server providing:
|
||||
- Static route handling
|
||||
- Dynamic link redirection
|
||||
- Subscription validation
|
||||
- Usage limit enforcement
|
||||
- Error page serving
|
||||
|
||||
#### Command System
|
||||
Commands are modularized in `src/commands/`:
|
||||
- `add.ts`: URL creation with validation and limit checking
|
||||
- `list.ts`: User link listing with usage statistics
|
||||
- `remove.ts`: Link deletion with ownership verification
|
||||
- `about.ts`: Service information
|
||||
|
||||
#### Core Modules
|
||||
- **`getEntitlement.ts`**: Discord entitlement validation
|
||||
- **`getSkuLimit.ts`**: Subscription tier limit determination
|
||||
- **`processCommand.ts`**: Command routing and execution
|
||||
- **`sendUnintitledResponse.ts`**: Unsubscribed user handling
|
||||
|
||||
### Database Schema
|
||||
The application uses Prisma with a `links` table containing:
|
||||
- `id`: Primary key
|
||||
- `slug`: Short URL identifier
|
||||
- `url`: Target URL
|
||||
- `userId`: Discord user ID
|
||||
- `deleted`: Soft deletion flag
|
||||
|
||||
### Environment Configuration
|
||||
Required environment variables:
|
||||
- `BOT_TOKEN`: Discord bot token
|
||||
- Database connection string (Prisma configuration)
|
||||
|
||||
### Security Features
|
||||
- URL validation with regex patterns
|
||||
- Reserved slug protection
|
||||
- User ownership verification
|
||||
- Subscription status validation
|
||||
- Soft deletion for security
|
||||
- Error handling and logging
|
||||
|
||||
### Deployment
|
||||
- Production build via `npm run build`
|
||||
- Prisma schema generation
|
||||
- Environment-based configuration
|
||||
- Port 5044 for web server
|
||||
- 1Password integration for production secrets
|
||||
|
||||
## 3. Legal Documentation
|
||||
|
||||
This section is for expansions to our legal policies specific to the Application.
|
||||
|
||||
### Licensing
|
||||
The Application is licensed under "Naomi's Public License" as indicated in the source code headers.
|
||||
|
||||
### Copyright
|
||||
Copyright held by Naomi Carrigan (@nhcarrigan).
|
||||
|
||||
### Data Handling
|
||||
The Application processes:
|
||||
- Discord user IDs for authentication
|
||||
- User-provided URLs for shortening
|
||||
- Link access patterns for subscription enforcement
|
||||
- Discord entitlement data for subscription validation
|
||||
|
||||
### Service Terms
|
||||
- Users must maintain active Discord subscriptions
|
||||
- Removed links cannot be reused for security
|
||||
- Link editing is not permitted after creation
|
||||
- Service availability depends on Discord API functionality
|
||||
|
||||
## 4. Contributing Documentation
|
||||
|
||||
This section is for documentation related to contributing to the Application's codebase.
|
||||
|
||||
### Development Setup
|
||||
1. Clone the repository
|
||||
2. Install dependencies: `pnpm install`
|
||||
3. Set up Prisma database connection
|
||||
4. Configure Discord bot token
|
||||
5. Run development build: `npm run build`
|
||||
|
||||
### Code Standards
|
||||
- **ESLint**: Enforced with `@nhcarrigan/eslint-config`
|
||||
- **TypeScript**: Strict configuration via `@nhcarrigan/typescript-config`
|
||||
- **Testing**: Currently no test suite (`npm test` placeholder)
|
||||
- **Linting**: `npm run lint` with zero warnings policy
|
||||
|
||||
### Project Structure
|
||||
```
|
||||
src/
|
||||
├── commands/ # Discord slash commands
|
||||
├── config/ # Configuration files and handlers
|
||||
├── interfaces/ # TypeScript interfaces
|
||||
├── modules/ # Core business logic
|
||||
├── server/ # Web server and HTML templates
|
||||
└── utils/ # Utility functions
|
||||
```
|
||||
|
||||
### Key Patterns
|
||||
- Error handling with centralized `errorHandler`
|
||||
- Logging via `@nhcarrigan/logger`
|
||||
- Command pattern for Discord interactions
|
||||
- Subscription-based access control
|
||||
- Soft deletion for data safety
|
||||
|
||||
### Contribution Guidelines
|
||||
- Follow existing code patterns and conventions
|
||||
- Maintain TypeScript strict mode compliance
|
||||
- Include proper error handling
|
||||
- Add logging for important operations
|
||||
- Respect subscription and security models
|
||||
|
||||
### Reserved Components
|
||||
- Reserved slugs defined in `src/config/reservedSlugs.ts`
|
||||
- Admin privileges for user ID `465650873650118659`
|
||||
- Discord entitlement SKU IDs are environment-specific
|
||||
@@ -0,0 +1,38 @@
|
||||
---
|
||||
title: Lyra
|
||||
---
|
||||
|
||||
Lyra (hereinafter the "Application") is a web-based API mocking tool, allowing you to create temporary endpoints for a front-end to hit, test webhook payloads, and more!
|
||||
|
||||
## 1. User Documentation
|
||||
|
||||
:::note
|
||||
This section is coming soon!
|
||||
:::
|
||||
|
||||
This section is for those interacting with a live instance of the Application.
|
||||
|
||||
## 2. Technical Documentation
|
||||
|
||||
:::note
|
||||
This section is coming soon!
|
||||
:::
|
||||
|
||||
This section is for those interested in running their own instance of the Application.
|
||||
|
||||
## 3. Legal Documentation
|
||||
|
||||
:::note
|
||||
This section is coming soon!
|
||||
:::
|
||||
|
||||
This section is for expansions to our legal policies specific to the Application.
|
||||
|
||||
## 4. Contributing Documentation
|
||||
|
||||
:::note
|
||||
This section is coming soon!
|
||||
:::
|
||||
|
||||
This section is for documentation related to contributing to the Application's codebase.
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user