From 1f240ad518e01b298c5befe01f5eea2c842285d2 Mon Sep 17 00:00:00 2001 From: bunker-admin Date: Thu, 30 Apr 2026 19:07:17 -0600 Subject: [PATCH] Docs updates --- .../repo-data/admin-changemaker.lite.json | 6 +- .../repo-data/anthropics-claude-code.json | 10 +- .../assets/repo-data/coder-code-server.json | 10 +- .../repo-data/gethomepage-homepage.json | 8 +- .../docs/assets/repo-data/go-gitea-gitea.json | 10 +- .../docs/assets/repo-data/knadh-listmonk.json | 10 +- .../docs/assets/repo-data/lyqht-mini-qr.json | 6 +- mkdocs/docs/assets/repo-data/n8n-io-n8n.json | 10 +- .../docs/assets/repo-data/nocodb-nocodb.json | 10 +- .../docs/assets/repo-data/ollama-ollama.json | 10 +- .../repo-data/squidfunk-mkdocs-material.json | 8 +- mkdocs/docs/overrides/main.html | 6 + mkdocs/site/404.html | 6 + mkdocs/site/404/index.html | 6 + .../admin/events/checkin-scanner.png | Bin 0 -> 30603 bytes .../admin/events/create-event-drawer.png | Bin 0 -> 85425 bytes .../screenshots/admin/events/event-detail.png | Bin 0 -> 116289 bytes .../admin/events/public-event-page.png | Bin 0 -> 111383 bytes .../admin/events/ticketed-events-list.png | Bin 0 -> 79656 bytes .../volunteer/achievements-mobile.png | Bin 0 -> 61223 bytes .../screenshots/volunteer/achievements.png | Bin 0 -> 155703 bytes .../images/screenshots/volunteer/activity.png | Bin 0 -> 66295 bytes .../volunteer/canvass-map-mobile.png | Bin 0 -> 115853 bytes .../screenshots/volunteer/canvass-map.png | Bin 0 -> 244453 bytes .../volunteer/dashboard-mobile.png | Bin 0 -> 54840 bytes .../screenshots/volunteer/dashboard.png | Bin 0 -> 97718 bytes .../images/screenshots/volunteer/discover.png | Bin 0 -> 61869 bytes .../images/screenshots/volunteer/feed.png | Bin 0 -> 66382 bytes .../images/screenshots/volunteer/friends.png | Bin 0 -> 65050 bytes .../screenshots/volunteer/notifications.png | Bin 0 -> 60735 bytes .../images/screenshots/volunteer/profile.png | Bin 0 -> 68676 bytes .../images/screenshots/volunteer/routes.png | Bin 0 -> 223171 bytes .../images/screenshots/volunteer/shifts.png | Bin 0 -> 70760 bytes .../social/docs/admin/events/check-in.png | Bin 0 -> 25674 bytes .../images/social/docs/admin/events/index.png | Bin 0 -> 24489 bytes .../docs/admin/events/ticketed-events.png | Bin 0 -> 28340 bytes .../social/docs/deployment/security.png | Bin 0 -> 29028 bytes .../repo-data/admin-changemaker.lite.json | 6 +- .../repo-data/anthropics-claude-code.json | 10 +- .../assets/repo-data/coder-code-server.json | 10 +- .../repo-data/gethomepage-homepage.json | 8 +- .../site/assets/repo-data/go-gitea-gitea.json | 10 +- .../site/assets/repo-data/knadh-listmonk.json | 10 +- .../site/assets/repo-data/lyqht-mini-qr.json | 6 +- mkdocs/site/assets/repo-data/n8n-io-n8n.json | 10 +- .../site/assets/repo-data/nocodb-nocodb.json | 10 +- .../site/assets/repo-data/ollama-ollama.json | 10 +- .../repo-data/squidfunk-mkdocs-material.json | 8 +- .../index.html | 6 + .../27/test-blog-post---version-7/index.html | 6 + .../index.html | 6 + mkdocs/site/blog/archive/2026/index.html | 6 + .../blog/category/announcements/index.html | 6 + mkdocs/site/blog/category/platform/index.html | 6 + .../blog/category/release-notes/index.html | 6 + mkdocs/site/blog/category/testing/index.html | 6 + mkdocs/site/blog/index.html | 6 + mkdocs/site/comments/callback/index.html | 6 + .../docs/admin/advocacy/campaigns/index.html | 72 + .../admin/advocacy/email-queue/index.html | 72 + mkdocs/site/docs/admin/advocacy/index.html | 72 + .../admin/advocacy/representatives/index.html | 72 + .../docs/admin/advocacy/responses/index.html | 72 + .../broadcast/email-templates/index.html | 72 + mkdocs/site/docs/admin/broadcast/index.html | 72 + .../admin/broadcast/newsletter/index.html | 72 + .../site/docs/admin/broadcast/sms/index.html | 72 + mkdocs/site/docs/admin/dashboard/index.html | 72 + .../docs/admin/events/check-in/index.html | 3265 ++++++++++++++++ mkdocs/site/docs/admin/events/index.html | 3131 +++++++++++++++ .../admin/events/ticketed-events/index.html | 3369 +++++++++++++++++ mkdocs/site/docs/admin/index.html | 77 + mkdocs/site/docs/admin/map/areas/index.html | 72 + .../site/docs/admin/map/canvassing/index.html | 72 + .../docs/admin/map/data-quality/index.html | 72 + mkdocs/site/docs/admin/map/index.html | 72 + .../site/docs/admin/map/locations/index.html | 72 + .../site/docs/admin/map/settings/index.html | 72 + mkdocs/site/docs/admin/map/shifts/index.html | 72 + mkdocs/site/docs/admin/media/ads/index.html | 72 + .../docs/admin/media/analytics/index.html | 72 + .../site/docs/admin/media/curated/index.html | 72 + mkdocs/site/docs/admin/media/index.html | 72 + .../site/docs/admin/media/library/index.html | 72 + .../docs/admin/media/moderation/index.html | 72 + .../docs/admin/payments/donations/index.html | 72 + mkdocs/site/docs/admin/payments/index.html | 72 + .../site/docs/admin/payments/plans/index.html | 72 + .../docs/admin/payments/products/index.html | 72 + .../docs/admin/payments/settings/index.html | 78 +- .../site/docs/admin/people-access/index.html | 72 + .../docs/admin/services/crowdsec/index.html | 80 +- mkdocs/site/docs/admin/services/index.html | 86 +- .../admin/services/integrations/index.html | 80 +- .../docs/admin/services/monitoring/index.html | 80 +- .../docs/admin/services/tunnel/index.html | 80 +- .../services/user-provisioning/index.html | 80 +- mkdocs/site/docs/admin/settings/index.html | 72 + .../docs/admin/web/documentation/index.html | 72 + .../site/docs/admin/web/homepage/index.html | 72 + mkdocs/site/docs/admin/web/index.html | 72 + .../docs/admin/web/landing-pages/index.html | 72 + .../site/docs/admin/web/navigation/index.html | 72 + mkdocs/site/docs/api/index.html | 10 + mkdocs/site/docs/architecture/index.html | 16 +- mkdocs/site/docs/deployment/index.html | 51 +- .../site/docs/deployment/security/index.html | 2961 +++++++++++++++ .../getting-started/control-panel/index.html | 10 + .../environment-variables/index.html | 10 + .../docs/getting-started/features/index.html | 10 + .../getting-started/first-steps/index.html | 10 + mkdocs/site/docs/getting-started/index.html | 10 + .../getting-started/installation/index.html | 10 + .../getting-started/prerequisites/index.html | 10 + .../docs/getting-started/services/index.html | 10 + .../docs/getting-started/upgrades/index.html | 10 + mkdocs/site/docs/index.html | 12 +- mkdocs/site/docs/phil/index.html | 10 + mkdocs/site/docs/services/index.html | 10 + mkdocs/site/docs/troubleshooting/index.html | 10 + .../site/docs/user-guide/campaigns/index.html | 10 + .../site/docs/user-guide/donations/index.html | 10 + mkdocs/site/docs/user-guide/events/index.html | 14 + .../site/docs/user-guide/gallery/index.html | 10 + mkdocs/site/docs/user-guide/index.html | 10 + mkdocs/site/docs/user-guide/map/index.html | 10 + .../site/docs/user-guide/profile/index.html | 10 + mkdocs/site/docs/user-guide/shifts/index.html | 10 + mkdocs/site/docs/user-guide/shop/index.html | 10 + .../docs/volunteer/achievements/index.html | 12 + .../site/docs/volunteer/canvassing/index.html | 14 + mkdocs/site/docs/volunteer/index.html | 13 + mkdocs/site/docs/volunteer/shifts/index.html | 12 + mkdocs/site/docs/volunteer/social/index.html | 40 + mkdocs/site/includes/abbreviations/index.html | 6 + mkdocs/site/main/index.html | 6 + mkdocs/site/overrides/main.html | 6 + mkdocs/site/search/search_index.json | 2 +- mkdocs/site/sitemap.xml | 196 +- mkdocs/site/sitemap.xml.gz | Bin 910 -> 941 bytes mkdocs/site/tags.json | 2 +- mkdocs/site/test-page/index.html | 6 + mkdocs/site/test/index.html | 6 + 143 files changed, 16486 insertions(+), 227 deletions(-) create mode 100644 mkdocs/site/assets/images/screenshots/admin/events/checkin-scanner.png create mode 100644 mkdocs/site/assets/images/screenshots/admin/events/create-event-drawer.png create mode 100644 mkdocs/site/assets/images/screenshots/admin/events/event-detail.png create mode 100644 mkdocs/site/assets/images/screenshots/admin/events/public-event-page.png create mode 100644 mkdocs/site/assets/images/screenshots/admin/events/ticketed-events-list.png create mode 100644 mkdocs/site/assets/images/screenshots/volunteer/achievements-mobile.png create mode 100644 mkdocs/site/assets/images/screenshots/volunteer/achievements.png create mode 100644 mkdocs/site/assets/images/screenshots/volunteer/activity.png create mode 100644 mkdocs/site/assets/images/screenshots/volunteer/canvass-map-mobile.png create mode 100644 mkdocs/site/assets/images/screenshots/volunteer/canvass-map.png create mode 100644 mkdocs/site/assets/images/screenshots/volunteer/dashboard-mobile.png create mode 100644 mkdocs/site/assets/images/screenshots/volunteer/dashboard.png create mode 100644 mkdocs/site/assets/images/screenshots/volunteer/discover.png create mode 100644 mkdocs/site/assets/images/screenshots/volunteer/feed.png create mode 100644 mkdocs/site/assets/images/screenshots/volunteer/friends.png create mode 100644 mkdocs/site/assets/images/screenshots/volunteer/notifications.png create mode 100644 mkdocs/site/assets/images/screenshots/volunteer/profile.png create mode 100644 mkdocs/site/assets/images/screenshots/volunteer/routes.png create mode 100644 mkdocs/site/assets/images/screenshots/volunteer/shifts.png create mode 100644 mkdocs/site/assets/images/social/docs/admin/events/check-in.png create mode 100644 mkdocs/site/assets/images/social/docs/admin/events/index.png create mode 100644 mkdocs/site/assets/images/social/docs/admin/events/ticketed-events.png create mode 100644 mkdocs/site/assets/images/social/docs/deployment/security.png create mode 100644 mkdocs/site/docs/admin/events/check-in/index.html create mode 100644 mkdocs/site/docs/admin/events/index.html create mode 100644 mkdocs/site/docs/admin/events/ticketed-events/index.html create mode 100644 mkdocs/site/docs/deployment/security/index.html diff --git a/mkdocs/docs/assets/repo-data/admin-changemaker.lite.json b/mkdocs/docs/assets/repo-data/admin-changemaker.lite.json index 2e17825d..bb973ada 100644 --- a/mkdocs/docs/assets/repo-data/admin-changemaker.lite.json +++ b/mkdocs/docs/assets/repo-data/admin-changemaker.lite.json @@ -3,14 +3,14 @@ "name": "changemaker.lite", "description": "Changemaker-lite is the current active development branch of Changemaker, focused on streamlining core services. These improvements will be merged into the master branch once ready.", "html_url": "http://gitea.bnkops.com/admin/changemaker.lite", - "language": "HTML", + "language": "TypeScript", "stars_count": 0, "forks_count": 0, "open_issues_count": 0, - "updated_at": "2026-04-16T20:55:22-06:00", + "updated_at": "2026-04-30T14:17:57-06:00", "created_at": "2025-05-28T14:54:59-06:00", "clone_url": "https://gitea.bnkops.com/admin/changemaker.lite.git", "ssh_url": "git@gitea.bnkops.com:admin/changemaker.lite.git", "default_branch": "main", - "last_build_update": "2026-04-16T20:55:22-06:00" + "last_build_update": "2026-04-30T14:17:57-06:00" } \ No newline at end of file diff --git a/mkdocs/docs/assets/repo-data/anthropics-claude-code.json b/mkdocs/docs/assets/repo-data/anthropics-claude-code.json index d3d46ae3..41570faa 100644 --- a/mkdocs/docs/assets/repo-data/anthropics-claude-code.json +++ b/mkdocs/docs/assets/repo-data/anthropics-claude-code.json @@ -4,13 +4,13 @@ "description": "Claude Code is an agentic coding tool that lives in your terminal, understands your codebase, and helps you code faster by executing routine tasks, explaining complex code, and handling git workflows - all through natural language commands.", "html_url": "https://github.com/anthropics/claude-code", "language": "Shell", - "stars_count": 115550, - "forks_count": 19277, - "open_issues_count": 10258, - "updated_at": "2026-04-18T20:36:34Z", + "stars_count": 119511, + "forks_count": 19822, + "open_issues_count": 10854, + "updated_at": "2026-05-01T00:39:46Z", "created_at": "2025-02-22T17:41:21Z", "clone_url": "https://github.com/anthropics/claude-code.git", "ssh_url": "git@github.com:anthropics/claude-code.git", "default_branch": "main", - "last_build_update": "2026-04-18T01:34:30Z" + "last_build_update": "2026-04-29T03:29:13Z" } \ No newline at end of file diff --git a/mkdocs/docs/assets/repo-data/coder-code-server.json b/mkdocs/docs/assets/repo-data/coder-code-server.json index c991accd..5d924a3d 100644 --- a/mkdocs/docs/assets/repo-data/coder-code-server.json +++ b/mkdocs/docs/assets/repo-data/coder-code-server.json @@ -4,13 +4,13 @@ "description": "VS Code in the browser", "html_url": "https://github.com/coder/code-server", "language": "TypeScript", - "stars_count": 77176, - "forks_count": 6620, - "open_issues_count": 138, - "updated_at": "2026-04-18T19:11:47Z", + "stars_count": 77342, + "forks_count": 6640, + "open_issues_count": 141, + "updated_at": "2026-04-30T23:32:22Z", "created_at": "2019-02-27T16:50:41Z", "clone_url": "https://github.com/coder/code-server.git", "ssh_url": "git@github.com:coder/code-server.git", "default_branch": "main", - "last_build_update": "2026-04-17T19:14:57Z" + "last_build_update": "2026-04-27T17:59:20Z" } \ No newline at end of file diff --git a/mkdocs/docs/assets/repo-data/gethomepage-homepage.json b/mkdocs/docs/assets/repo-data/gethomepage-homepage.json index cd00ee16..337e62b3 100644 --- a/mkdocs/docs/assets/repo-data/gethomepage-homepage.json +++ b/mkdocs/docs/assets/repo-data/gethomepage-homepage.json @@ -4,13 +4,13 @@ "description": "A highly customizable homepage (or startpage / application dashboard) with Docker and service API integrations.", "html_url": "https://github.com/gethomepage/homepage", "language": "JavaScript", - "stars_count": 29626, - "forks_count": 1889, + "stars_count": 29830, + "forks_count": 1891, "open_issues_count": 1, - "updated_at": "2026-04-18T20:32:38Z", + "updated_at": "2026-05-01T00:16:56Z", "created_at": "2022-08-24T07:29:42Z", "clone_url": "https://github.com/gethomepage/homepage.git", "ssh_url": "git@github.com:gethomepage/homepage.git", "default_branch": "dev", - "last_build_update": "2026-04-18T12:22:41Z" + "last_build_update": "2026-04-30T22:57:10Z" } \ No newline at end of file diff --git a/mkdocs/docs/assets/repo-data/go-gitea-gitea.json b/mkdocs/docs/assets/repo-data/go-gitea-gitea.json index f843c370..0743a91a 100644 --- a/mkdocs/docs/assets/repo-data/go-gitea-gitea.json +++ b/mkdocs/docs/assets/repo-data/go-gitea-gitea.json @@ -4,13 +4,13 @@ "description": "Git with a cup of tea! Painless self-hosted all-in-one software development service, including Git hosting, code review, team collaboration, package registry and CI/CD", "html_url": "https://github.com/go-gitea/gitea", "language": "Go", - "stars_count": 54976, - "forks_count": 6589, - "open_issues_count": 2824, - "updated_at": "2026-04-18T20:39:30Z", + "stars_count": 55256, + "forks_count": 6641, + "open_issues_count": 2774, + "updated_at": "2026-04-30T23:56:38Z", "created_at": "2016-11-01T02:13:26Z", "clone_url": "https://github.com/go-gitea/gitea.git", "ssh_url": "git@github.com:go-gitea/gitea.git", "default_branch": "main", - "last_build_update": "2026-04-18T20:40:15Z" + "last_build_update": "2026-04-30T18:15:01Z" } \ No newline at end of file diff --git a/mkdocs/docs/assets/repo-data/knadh-listmonk.json b/mkdocs/docs/assets/repo-data/knadh-listmonk.json index 6a9a0f93..46feb74e 100644 --- a/mkdocs/docs/assets/repo-data/knadh-listmonk.json +++ b/mkdocs/docs/assets/repo-data/knadh-listmonk.json @@ -4,13 +4,13 @@ "description": "High performance, self-hosted, newsletter and mailing list manager with a modern dashboard. Single binary app.", "html_url": "https://github.com/knadh/listmonk", "language": "Go", - "stars_count": 19565, - "forks_count": 2002, - "open_issues_count": 101, - "updated_at": "2026-04-18T19:55:06Z", + "stars_count": 19860, + "forks_count": 2033, + "open_issues_count": 97, + "updated_at": "2026-04-30T19:42:11Z", "created_at": "2019-06-26T05:08:39Z", "clone_url": "https://github.com/knadh/listmonk.git", "ssh_url": "git@github.com:knadh/listmonk.git", "default_branch": "master", - "last_build_update": "2026-04-18T04:46:18Z" + "last_build_update": "2026-04-30T03:11:27Z" } \ No newline at end of file diff --git a/mkdocs/docs/assets/repo-data/lyqht-mini-qr.json b/mkdocs/docs/assets/repo-data/lyqht-mini-qr.json index c211a390..960208b7 100644 --- a/mkdocs/docs/assets/repo-data/lyqht-mini-qr.json +++ b/mkdocs/docs/assets/repo-data/lyqht-mini-qr.json @@ -4,10 +4,10 @@ "description": "Create & scan cute qr codes easily \ud83d\udc7e", "html_url": "https://github.com/lyqht/mini-qr", "language": "Vue", - "stars_count": 1972, - "forks_count": 246, + "stars_count": 2018, + "forks_count": 251, "open_issues_count": 22, - "updated_at": "2026-04-17T18:24:10Z", + "updated_at": "2026-04-30T20:13:55Z", "created_at": "2023-04-21T14:20:14Z", "clone_url": "https://github.com/lyqht/mini-qr.git", "ssh_url": "git@github.com:lyqht/mini-qr.git", diff --git a/mkdocs/docs/assets/repo-data/n8n-io-n8n.json b/mkdocs/docs/assets/repo-data/n8n-io-n8n.json index 281cd31c..7c1206ee 100644 --- a/mkdocs/docs/assets/repo-data/n8n-io-n8n.json +++ b/mkdocs/docs/assets/repo-data/n8n-io-n8n.json @@ -4,13 +4,13 @@ "description": "Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.", "html_url": "https://github.com/n8n-io/n8n", "language": "TypeScript", - "stars_count": 184582, - "forks_count": 56921, - "open_issues_count": 1514, - "updated_at": "2026-04-18T20:37:25Z", + "stars_count": 186286, + "forks_count": 57265, + "open_issues_count": 1563, + "updated_at": "2026-05-01T00:40:12Z", "created_at": "2019-06-22T09:24:21Z", "clone_url": "https://github.com/n8n-io/n8n.git", "ssh_url": "git@github.com:n8n-io/n8n.git", "default_branch": "master", - "last_build_update": "2026-04-18T18:20:27Z" + "last_build_update": "2026-04-30T23:52:46Z" } \ No newline at end of file diff --git a/mkdocs/docs/assets/repo-data/nocodb-nocodb.json b/mkdocs/docs/assets/repo-data/nocodb-nocodb.json index dd1c4794..b88b4006 100644 --- a/mkdocs/docs/assets/repo-data/nocodb-nocodb.json +++ b/mkdocs/docs/assets/repo-data/nocodb-nocodb.json @@ -4,13 +4,13 @@ "description": "\ud83d\udd25 \ud83d\udd25 \ud83d\udd25 A Free & Self-hostable Airtable Alternative", "html_url": "https://github.com/nocodb/nocodb", "language": "TypeScript", - "stars_count": 62762, - "forks_count": 4728, - "open_issues_count": 670, - "updated_at": "2026-04-18T18:15:04Z", + "stars_count": 62889, + "forks_count": 4751, + "open_issues_count": 693, + "updated_at": "2026-04-30T22:56:22Z", "created_at": "2017-10-29T18:51:48Z", "clone_url": "https://github.com/nocodb/nocodb.git", "ssh_url": "git@github.com:nocodb/nocodb.git", "default_branch": "develop", - "last_build_update": "2026-04-18T18:27:20Z" + "last_build_update": "2026-04-30T14:59:37Z" } \ No newline at end of file diff --git a/mkdocs/docs/assets/repo-data/ollama-ollama.json b/mkdocs/docs/assets/repo-data/ollama-ollama.json index 64e324dc..26b950ff 100644 --- a/mkdocs/docs/assets/repo-data/ollama-ollama.json +++ b/mkdocs/docs/assets/repo-data/ollama-ollama.json @@ -4,13 +4,13 @@ "description": "Get up and running with Kimi-K2.5, GLM-5, MiniMax, DeepSeek, gpt-oss, Qwen, Gemma and other models.", "html_url": "https://github.com/ollama/ollama", "language": "Go", - "stars_count": 169357, - "forks_count": 15664, - "open_issues_count": 2984, - "updated_at": "2026-04-18T20:28:17Z", + "stars_count": 170419, + "forks_count": 15911, + "open_issues_count": 3124, + "updated_at": "2026-04-30T23:28:09Z", "created_at": "2023-06-26T19:39:32Z", "clone_url": "https://github.com/ollama/ollama.git", "ssh_url": "git@github.com:ollama/ollama.git", "default_branch": "main", - "last_build_update": "2026-04-18T18:56:35Z" + "last_build_update": "2026-04-30T23:43:41Z" } \ No newline at end of file diff --git a/mkdocs/docs/assets/repo-data/squidfunk-mkdocs-material.json b/mkdocs/docs/assets/repo-data/squidfunk-mkdocs-material.json index fb1f351a..7b6428a4 100644 --- a/mkdocs/docs/assets/repo-data/squidfunk-mkdocs-material.json +++ b/mkdocs/docs/assets/repo-data/squidfunk-mkdocs-material.json @@ -4,13 +4,13 @@ "description": "Documentation that simply works", "html_url": "https://github.com/squidfunk/mkdocs-material", "language": "Python", - "stars_count": 26571, - "forks_count": 4070, + "stars_count": 26641, + "forks_count": 4068, "open_issues_count": 1, - "updated_at": "2026-04-18T17:06:20Z", + "updated_at": "2026-04-30T22:40:30Z", "created_at": "2016-01-28T22:09:23Z", "clone_url": "https://github.com/squidfunk/mkdocs-material.git", "ssh_url": "git@github.com:squidfunk/mkdocs-material.git", "default_branch": "master", - "last_build_update": "2026-04-16T14:42:25Z" + "last_build_update": "2026-04-23T13:38:16Z" } \ No newline at end of file diff --git a/mkdocs/docs/overrides/main.html b/mkdocs/docs/overrides/main.html index 9810fa80..c46f2ab7 100644 --- a/mkdocs/docs/overrides/main.html +++ b/mkdocs/docs/overrides/main.html @@ -13,7 +13,10 @@ + + + + + +
+
+
+ + + + + +
+
+
+ + + +
+ + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + +

Check-in Scanner

+

Check attendees in at the door via QR code scan or manual lookup. The scanner runs full-screen at /app/events/:id/checkin — ideal for a tablet or phone held at the entrance.

+

Check-in scanner — manual mode

+
+

Opening the Scanner

+

From an event's detail page at /app/events/:id, click the Check-in Scanner button in the Actions row. The scanner opens full-screen (no sidebar or header) so it's usable on small mobile screens.

+

The scanner shows three live counters at the top:

+
    +
  • Checked In — tickets already scanned in
  • +
  • Remaining — tickets issued but not yet checked in
  • +
  • Total — all tickets issued for this event
  • +
+
+

Scan Modes

+

Switch between modes using the toggle at the top:

+

Camera (QR)

+

Uses the device's camera to scan ticket QR codes. Each ticket email includes a QR that encodes the ticket code. On first use, the browser will request camera permission — grant it and the live preview appears.

+

Valid scans auto-check the ticket in and flash a success banner. Duplicate scans of the same ticket show "Already checked in" with the original check-in timestamp.

+
+

HTTPS required for camera access

+

Browsers only expose the camera API on HTTPS origins (or localhost). In production, the scanner must be loaded via your app. subdomain over HTTPS — not an IP address.

+
+

Manual

+

Two input modes for situations where QR scanning fails (damaged code, no camera, printed ticket list):

+
    +
  • Enter Ticket Code — type the alphanumeric code from the ticket (format ABCD-1234)
  • +
  • Look up by Email — enter the attendee's email; if a single ticket matches, it's checked in directly. If multiple tickets match, a picker appears so the organizer can pick the right one.
  • +
+
+

Permissions

+

The check-in scanner requires one of:

+
    +
  • SUPER_ADMIN
  • +
  • EVENTS_ADMIN
  • +
  • Ownership of the event (the user who created it)
  • +
+

Non-admin event owners can check in attendees for their own events but not others'.

+
+

Audit Trail

+

Every check-in action is recorded with the ticket code, the user who performed the check-in, and a timestamp. The full log appears on the event detail page under the Check-ins tab, and is included in event exports.

+

Tickets marked as cancelled (after refund) cannot be checked in — the scanner rejects them with a red banner.

+
+

Admin Routes

+
    +
  • /app/events/:id/checkin — full-screen scanner for a specific event
  • +
+ + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/mkdocs/site/docs/admin/events/index.html b/mkdocs/site/docs/admin/events/index.html new file mode 100644 index 00000000..3875d4f3 --- /dev/null +++ b/mkdocs/site/docs/admin/events/index.html @@ -0,0 +1,3131 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Events - Changemaker Lite + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + +
+
+ + +
+ + + + + + + + + + + + + + + + + +
+ + +
+ + + +
+ +
+ + + + + + + +
+
+ + + +
+
+
+ + + + + + + +
+
+
+ + + +
+
+
+ + + + + +
+
+
+ + + +
+ + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + +

Events

+

Run paid, free, or donation-based events end-to-end — from creating an event with multiple ticket tiers, to Stripe-backed checkout for attendees, through QR-code check-in at the door.

+

Ticketed Events is a separate feature from the Gancio event calendar integration — Gancio publishes shift-based community events, while Ticketed Events handles commerce, capacity, and attendance tracking for in-person or online gatherings.

+
+

Feature flag

+

Enable in Settings → Feature Toggles, or set enableTicketedEvents=true in the site settings. Payments must also be enabled for paid tiers to work.

+
+
+

In This Section

+
+
    +
  • +

    Ticketed Events

    +
    +

    Create events, configure tier types (paid, free, donation), publish, and manage attendees.

    +
  • +
  • +

    Check-in Scanner

    +
    +

    QR scan or manual lookup to check attendees in at the door.

    +
  • +
+
+
+

How It Works

+
    +
  1. Create an event in the admin at /app/events — title, date, venue, format (in-person / online / hybrid).
  2. +
  3. Add ticket tiers — at least one tier is required. Each tier has a type (PAID, FREE, DONATION), price, and capacity.
  4. +
  5. Publish — the event transitions from DRAFT → PUBLISHED and becomes available at /event/:slug on your public site.
  6. +
  7. Attendees register — the public event page uses Stripe Checkout for paid tiers, a simple email form for free tiers, and a suggested-amount flow for donation tiers.
  8. +
  9. Tickets are emailed — each buyer receives an email with a unique ticket code (QR-scannable).
  10. +
  11. Check-in at the door — organizers use the Check-in Scanner on a phone or tablet to mark tickets as checked in.
  12. +
+
+

Event Lifecycle

+

Events move through the following statuses:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
StatusMeaning
DRAFTWork in progress — not visible publicly
PENDING_APPROVALSubmitted for review (if organizer is a non-admin)
PUBLISHEDLive on the public site; tickets can be purchased
CANCELLEDEvent cancelled — tickets marked for refund
COMPLETEDEvent has ended
+

Visibility controls who can see a published event:

+ + + + + + + + + + + + + + + + + + + + + +
VisibilityBehavior
PUBLICListed on /events and indexable
UNLISTEDOnly reachable by direct link (slug URL)
PRIVATERequires an invite code to access
+
+

Admin Routes

+
    +
  • /app/events — event list, create, edit, publish
  • +
  • /app/events/:id — event detail with tickets and check-ins
  • +
  • /app/events/:id/checkin — full-screen check-in scanner
  • +
+

Public Routes

+
    +
  • /events — browse public events (if enableEvents is on)
  • +
  • /event/:slug — event detail with ticket purchase
  • +
  • /event/:slug/ticket/:ticketCode — ticket confirmation with QR code
  • +
+ + + + + + + + + + + + + + + + +
+
+ + + + + +
+ + + +
+ + + +
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/mkdocs/site/docs/admin/events/ticketed-events/index.html b/mkdocs/site/docs/admin/events/ticketed-events/index.html new file mode 100644 index 00000000..c7e7912e --- /dev/null +++ b/mkdocs/site/docs/admin/events/ticketed-events/index.html @@ -0,0 +1,3369 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Ticketed Events - Changemaker Lite + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + +
+
+ + +
+ + + + + + + + + + + + + + + + + +
+ + +
+ + + +
+ +
+ + + + + + + +
+
+ + + +
+
+
+ + + + + + + +
+
+
+ + + + + + + +
+ + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + +

Ticketed Events

+

Create and manage events with paid, free, or donation-based tickets at /app/events.

+

Ticketed Events list

+
+

Creating an Event

+

Click Create Event to open the event drawer. Required fields are marked with an asterisk.

+

Create Event drawer

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldPurpose
TitleEvent name (also used to generate the public slug)
DescriptionShown on the public event page
Date / Start Time / End TimeRequired — used for timezone-aware display and calendar exports
Doors Open TimeOptional — shown to attendees separately from start time
Event FormatIn-Person, Online, or Hybrid. Online/Hybrid prompts for a Jitsi Meet link
Venue Name / AddressIn-Person or Hybrid events only
VisibilityPUBLIC (listed), UNLISTED (direct link only), PRIVATE (invite-code gated)
Max AttendeesHard cap across all tiers — leave blank for unlimited
Organizer NameShown on the public page under "Organized by…"
+

Events start in DRAFT status and are not publicly visible until you publish them.

+
+

Ticket Tiers

+

Every event needs at least one ticket tier before it can be published. Tiers support three types:

+ + + + + + + + + + + + + + + + + + + + + +
TypeBehavior
PAIDFixed price, Stripe checkout required. Payments module must be enabled.
FREENo payment, email-only registration
DONATIONSuggested price, but attendees can enter any amount ≥ $1
+

Each tier has a name (e.g. "General Admission", "Student", "VIP"), price in CAD (stored in cents at the API — the admin UI accepts dollars), max quantity, and max per order. Tiers are sorted by sortOrder on the public page.

+

Event detail with tiers

+

The Tier Breakdown panel on the event detail page shows sold/remaining counts per tier in real time.

+
+

Paid tiers require Stripe

+

Paid tiers only work when the Payments module is enabled and Stripe API keys are configured in Admin → Payments → Settings. If Stripe isn't configured, the public checkout button won't work.

+
+
+

Publishing

+

From the event detail page, click Publish to move the event from DRAFT to PUBLISHED:

+
    +
  • A public URL is generated at /event/{slug} (the slug is auto-derived from the title)
  • +
  • The event appears on /events if visibility is PUBLIC
  • +
  • Tickets become purchasable
  • +
  • Attendees can start registering
  • +
+

Use the Copy Link button in the Actions row to grab the public URL for social media or email campaigns.

+
+

Event Statuses and Actions

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
StatusAvailable Actions
DRAFTEdit, Publish, Delete
PENDING_APPROVALApprove, Reject (admin only)
PUBLISHEDEdit (restricted), Cancel, Mark Completed, Check-in Scanner
CANCELLEDView only
COMPLETEDView stats, export
+

Cancelling a published event marks all existing tickets as cancelled and triggers refund processing for paid tickets (if Stripe is configured).

+
+

Attendee Management

+

The event detail page includes two tabs:

+
    +
  • Tickets — all issued tickets with holder name, email, tier, status, and purchase timestamp. You can resend the ticket email or cancel an individual ticket from the Actions column.
  • +
  • Check-ins — chronological record of check-in events recorded by the Check-in Scanner.
  • +
+

Admins and event owners can filter, search, and export ticket lists for at-the-door lookup or post-event reporting.

+
+

Public Event Page

+

The public-facing page at /event/:slug shows the event details and lets attendees pick a tier and register:

+

Public event page

+
    +
  • Paid tiers link to Stripe Checkout
  • +
  • Free tiers use a simple email-only form
  • +
  • Donation tiers prompt for a custom amount
  • +
  • After purchase, attendees receive an email with their ticket code and QR
  • +
+
+

Admin Routes

+
    +
  • /app/events — event list, search, filter by status
  • +
  • /app/events/:id — event detail, tier management, ticket list, check-ins
  • +
  • /app/events/:id/checkin — full-screen Check-in Scanner
  • +
+ + + + + + + + + + + + + + + + + + +
+
+ + + + + +
+ + + +
+ + + +
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/mkdocs/site/docs/admin/index.html b/mkdocs/site/docs/admin/index.html index 90b00900..00ab31c2 100644 --- a/mkdocs/site/docs/admin/index.html +++ b/mkdocs/site/docs/admin/index.html @@ -133,7 +133,10 @@