Bunch of updates to scheduling

This commit is contained in:
2026-03-15 13:50:09 -06:00
parent 12734aca16
commit 28e4bc9475
202 changed files with 4568 additions and 226 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

After

Width:  |  Height:  |  Size: 65 KiB

View File

@@ -143,7 +143,7 @@
"assets/images/social/services/postgresql.png": "831fb68dd3e01d9a017e59b100aaa8a455c8c112",
"assets/images/social/services/static-server.png": "f36d527c80adba4bcb7778784683f429acb4ce74",
"assets/images/social/test-2.png": "a6ae43d52d7c58fc106a562777e03b7da2263f83",
"assets/images/social/test-page.png": "c9d5751a1f0a4c1341336bb7d00c9bc743d33ef4",
"assets/images/social/test-page.png": "af2c353ee377343678a58555726f6ad7d0624488",
"assets/images/social/test.png": "a6ae43d52d7c58fc106a562777e03b7da2263f83",
"assets/images/social/testing.png": "f7aaf394b71cbe7084a6afa0e75a324ca59e23d8",
"assets/images/social/v1/adv/ansible.png": "cb542ad9a3cc9a869258b3b1353966e1b9616a2b",

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 435 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 167 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 140 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 119 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 179 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 179 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 253 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 203 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 993 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

View File

@@ -7,10 +7,10 @@
"stars_count": 0,
"forks_count": 0,
"open_issues_count": 23,
"updated_at": "2026-03-09T12:23:17-06:00",
"updated_at": "2026-03-10T18:27:08-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-03-09T12:23:17-06:00"
"last_build_update": "2026-03-10T18:27:08-06:00"
}

View File

@@ -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": 75798,
"forks_count": 6114,
"open_issues_count": 5868,
"updated_at": "2026-03-09T21:59:41Z",
"stars_count": 77129,
"forks_count": 6266,
"open_issues_count": 6171,
"updated_at": "2026-03-12T17:36:34Z",
"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-03-07T00:12:45Z"
"last_build_update": "2026-03-12T07:12:41Z"
}

View File

@@ -4,13 +4,13 @@
"description": "VS Code in the browser",
"html_url": "https://github.com/coder/code-server",
"language": "TypeScript",
"stars_count": 76554,
"forks_count": 6541,
"open_issues_count": 169,
"updated_at": "2026-03-09T20:21:15Z",
"stars_count": 76609,
"forks_count": 6547,
"open_issues_count": 172,
"updated_at": "2026-03-12T17:13:08Z",
"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-03-09T19:30:51Z"
"last_build_update": "2026-03-11T22:19:15Z"
}

View File

@@ -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": 28818,
"forks_count": 1812,
"stars_count": 28865,
"forks_count": 1813,
"open_issues_count": 1,
"updated_at": "2026-03-09T21:38:58Z",
"updated_at": "2026-03-12T15:01:15Z",
"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-03-09T17:02:06Z"
"last_build_update": "2026-03-12T12:22:19Z"
}

View File

@@ -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": 54194,
"forks_count": 6448,
"open_issues_count": 2850,
"updated_at": "2026-03-09T21:55:30Z",
"stars_count": 54251,
"forks_count": 6466,
"open_issues_count": 2853,
"updated_at": "2026-03-12T17:33:45Z",
"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-03-09T10:12:24Z"
"last_build_update": "2026-03-12T08:26:47Z"
}

View File

@@ -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": 19236,
"forks_count": 1945,
"open_issues_count": 99,
"updated_at": "2026-03-09T21:14:22Z",
"stars_count": 19256,
"forks_count": 1946,
"open_issues_count": 101,
"updated_at": "2026-03-12T16:54:34Z",
"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-03-09T03:05:44Z"
"last_build_update": "2026-03-12T16:54:26Z"
}

View File

@@ -4,13 +4,13 @@
"description": "Create & scan cute qr codes easily \ud83d\udc7e",
"html_url": "https://github.com/lyqht/mini-qr",
"language": "Vue",
"stars_count": 1897,
"stars_count": 1905,
"forks_count": 241,
"open_issues_count": 22,
"updated_at": "2026-03-09T15:15:51Z",
"open_issues_count": 19,
"updated_at": "2026-03-12T17:06:09Z",
"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",
"default_branch": "main",
"last_build_update": "2026-03-09T07:31:47Z"
"last_build_update": "2026-03-11T14:53:40Z"
}

View File

@@ -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": 178343,
"forks_count": 55592,
"stars_count": 178836,
"forks_count": 55709,
"open_issues_count": 1414,
"updated_at": "2026-03-09T21:52:13Z",
"updated_at": "2026-03-12T17:33:04Z",
"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-03-09T21:33:49Z"
"last_build_update": "2026-03-12T16:48:37Z"
}

View File

@@ -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": 62431,
"forks_count": 4659,
"open_issues_count": 629,
"updated_at": "2026-03-09T19:42:51Z",
"stars_count": 62459,
"forks_count": 4662,
"open_issues_count": 636,
"updated_at": "2026-03-12T17:22:54Z",
"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-03-09T12:25:14Z"
"last_build_update": "2026-03-12T15:47:46Z"
}

View File

@@ -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": 164642,
"forks_count": 14860,
"open_issues_count": 2609,
"updated_at": "2026-03-09T21:37:49Z",
"stars_count": 164918,
"forks_count": 14922,
"open_issues_count": 2623,
"updated_at": "2026-03-12T17:11:02Z",
"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-03-09T21:19:34Z"
"last_build_update": "2026-03-12T08:42:26Z"
}

View File

@@ -4,13 +4,13 @@
"description": "Documentation that simply works",
"html_url": "https://github.com/squidfunk/mkdocs-material",
"language": "Python",
"stars_count": 26215,
"forks_count": 4051,
"stars_count": 26261,
"forks_count": 4053,
"open_issues_count": 2,
"updated_at": "2026-03-09T19:46:16Z",
"updated_at": "2026-03-12T17:20:59Z",
"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-03-05T13:44:14Z"
"last_build_update": "2026-03-10T15:42:14Z"
}

View File

@@ -8,6 +8,9 @@ icon: material/email-fast
Help supporters contact their elected representatives through email campaigns.
![Campaigns Management](../../../assets/images/screenshots/admin/campaigns.png){ loading=lazy }
---
## How It Works

View File

@@ -8,6 +8,9 @@ icon: material/email-sync
Monitor outgoing advocacy emails processed through the BullMQ queue.
![Email Queue Monitor](../../../assets/images/screenshots/admin/email-queue.png){ loading=lazy }
---
## Key Features

View File

@@ -8,6 +8,9 @@ icon: material/account-tie
The platform uses the [Represent API](https://represent.opennorth.ca/) to look up elected representatives by postal code across all government levels.
![Representatives Cache](../../../assets/images/screenshots/admin/representatives.png){ loading=lazy }
---
## How It Works

View File

@@ -8,6 +8,9 @@ icon: material/message-reply-text
Review and moderate representative responses submitted by supporters on the public response wall.
![Response Moderation](../../../assets/images/screenshots/admin/responses.png){ loading=lazy }
---
## Key Features

View File

@@ -8,6 +8,9 @@ icon: material/email-edit
Create reusable email templates with variable substitution for campaign communications. Templates are used by advocacy campaigns, shift confirmations, volunteer re-engagement emails, and other automated communications.
![Email Templates](../../../assets/images/screenshots/admin/email-templates.png){ loading=lazy }
---
## Template Categories

View File

@@ -8,6 +8,9 @@ icon: material/newspaper-variant
Integrated with [Listmonk](https://listmonk.app/) for opt-in mailing lists and newsletter campaigns. Enable with `LISTMONK_SYNC_ENABLED=true`.
![Newsletter Sync](../../../assets/images/screenshots/admin/newsletter.png){ loading=lazy }
---
## Managed Lists

View File

@@ -8,6 +8,9 @@ icon: material/message-text
Text message outreach via a Termux Android bridge. Uses a real Android phone to send and receive SMS — no third-party SMS gateway or Twilio account needed.
![SMS Dashboard](../../../assets/images/screenshots/admin/sms.png){ loading=lazy }
Enable with `ENABLE_SMS=true` or via the setup wizard.
---

View File

@@ -8,6 +8,9 @@ icon: material/view-dashboard
The admin dashboard (`/app`) provides a real-time overview of platform activity.
![Admin Dashboard](../../assets/images/screenshots/admin/dashboard.png){ loading=lazy }
---
## Dashboard Cards

View File

@@ -8,6 +8,9 @@ icon: material/vector-polygon
Draw polygon regions on the map to define canvassing territories. Areas organize locations into manageable chunks for volunteers.
![Areas (Cuts)](../../../assets/images/screenshots/admin/areas.png){ loading=lazy }
---
## Key Features

View File

@@ -8,6 +8,9 @@ icon: material/walk
Coordinate and monitor volunteer door-to-door outreach with the canvass dashboard, walk sheets, and contact export tools.
![Canvass Dashboard](../../../assets/images/screenshots/admin/canvassing.png){ loading=lazy }
---
## Canvass Dashboard

View File

@@ -8,6 +8,9 @@ icon: material/chart-box
Monitor geocoding accuracy and coverage from `/app/map/data-quality`.
![Data Quality Dashboard](../../../assets/images/screenshots/admin/data-quality.png){ loading=lazy }
---
## Key Metrics

View File

@@ -8,6 +8,9 @@ icon: material/map-marker-plus
Import addresses via CSV or the Canadian National Address Register (NAR), geocode them with multiple providers, and manage the location database.
![Map Locations](../../../assets/images/screenshots/admin/locations.png){ loading=lazy }
---
## Adding Locations

View File

@@ -8,6 +8,9 @@ icon: material/cog
Configure the default map view and QR code links from `/app/map/settings`.
![Map Settings](../../../assets/images/screenshots/admin/map-settings.png){ loading=lazy }
---
## Settings

View File

@@ -8,6 +8,9 @@ icon: material/calendar-clock
Schedule volunteer time slots and let people sign up through a public page. Shifts can be linked to specific areas so volunteers know where they'll be canvassing.
![Volunteer Shifts](../../../assets/images/screenshots/admin/shifts.png){ loading=lazy }
---
## Creating Shifts

View File

@@ -8,6 +8,9 @@ icon: material/chart-line
Track video engagement with GDPR-compliant analytics (IP hashing, 90-day retention).
![Media Analytics](../../../assets/images/screenshots/admin/media-analytics.png){ loading=lazy }
---
## Per-Video Metrics

View File

@@ -8,6 +8,9 @@ icon: material/playlist-play
Curate the public gallery experience with playlists, a shorts feed, and featured content.
![Curated Gallery](../../../assets/images/screenshots/admin/media-curated.png){ loading=lazy }
---
## Playlists

View File

@@ -8,6 +8,9 @@ icon: material/folder-play
The media library at `/app/media/library` is where you upload, organize, and publish video and photo content.
![Media Library](../../../assets/images/screenshots/admin/media-library.png){ loading=lazy }
---
## Video Upload

View File

@@ -8,6 +8,9 @@ icon: material/account-group
Manage platform user accounts and roles, and use the People CRM to get a unified view of every supporter, donor, and volunteer across all modules.
![Users Management](../../assets/images/screenshots/admin/users.png){ loading=lazy }
---
## User Management

View File

@@ -8,6 +8,9 @@ icon: material/chart-timeline-variant
The monitoring stack runs as a Docker Compose profile and provides metrics collection, visualization, and alerting.
![Observability Dashboard](../../../assets/images/screenshots/admin/monitoring.png){ loading=lazy }
---
## Starting the Stack

View File

@@ -8,6 +8,9 @@ icon: material/tunnel
Pangolin provides secure tunneling to expose your self-hosted services to the internet without port forwarding or a static IP.
![Tunnel Management](../../../assets/images/screenshots/admin/tunnel.png){ loading=lazy }
---
## Setup

View File

@@ -8,6 +8,9 @@ icon: material/cog
Centralized configuration for organization identity, theming, email delivery, feature modules, and automated notifications.
![Settings Page](../../assets/images/screenshots/admin/settings.png){ loading=lazy }
---
## Settings Tabs

View File

@@ -8,6 +8,9 @@ icon: material/application-edit
Build campaign microsites with a drag-and-drop visual editor.
![Landing Pages](../../../assets/images/screenshots/admin/landing-pages.png){ loading=lazy }
---
## How It Works

View File

@@ -14,6 +14,9 @@ You've installed Changemaker Lite — here's what to do next.
Open the admin panel at `http://localhost:3000` (or `app.DOMAIN` in production) and sign in with the admin email and password you configured during setup.
![Login Page](../../assets/images/screenshots/getting-started/login.png){ loading=lazy }
!!! warning "Change your password"
If you used the wizard's generated password, change it immediately from **Settings > Organization**.
@@ -23,6 +26,9 @@ Open the admin panel at `http://localhost:3000` (or `app.DOMAIN` in production)
The dashboard gives you an at-a-glance view of platform activity. Initially it will be empty — that's normal.
![Admin Dashboard](../../assets/images/screenshots/getting-started/dashboard.png){ loading=lazy }
---
## 3. Configure Settings
@@ -35,6 +41,9 @@ Visit **Settings** (`/app/settings`) to:
- Configure email delivery (MailHog for testing, production SMTP for live use)
- Check the **System** tab to verify your installation and check for updates
![Settings Page](../../assets/images/screenshots/getting-started/settings-organization.png){ loading=lazy }
---
## 4. Create Your First Campaign
@@ -46,6 +55,9 @@ Go to **Campaigns** (`/app/campaigns`) and click **Create Campaign**:
3. Select government levels to target
4. Publish — the campaign appears at `/campaigns`
![Campaigns Page](../../assets/images/screenshots/getting-started/campaigns.png){ loading=lazy }
---
## 5. Add Locations
@@ -56,6 +68,9 @@ Go to **Locations** (`/app/map`) and add addresses:
- Import a CSV of addresses
- Use the NAR (National Address Register) import for Canadian data
![Locations Page](../../assets/images/screenshots/getting-started/locations.png){ loading=lazy }
---
## 6. Schedule a Shift
@@ -66,6 +81,9 @@ Go to **Shifts** (`/app/map/shifts`) and create your first volunteer shift:
2. Optionally link it to a canvassing area
3. Share the public shifts page (`/shifts`) with volunteers
![Shifts Page](../../assets/images/screenshots/getting-started/shifts.png){ loading=lazy }
---
## 7. Invite Volunteers

View File

@@ -8,6 +8,9 @@ icon: material/rocket-launch
This guide walks you through installing Changemaker Lite, running your first deployment, and logging into the admin dashboard.
![Admin Dashboard](../../assets/images/screenshots/getting-started/dashboard.png){ loading=lazy }
## Prerequisites
- **Docker** 24+ and **Docker Compose** v2
@@ -22,9 +25,13 @@ This guide walks you through installing Changemaker Lite, running your first dep
git clone https://gitea.bnkops.com/admin/changemaker.lite
cd changemaker.lite
git checkout v2
```
```bash
bash config.sh
```
```bash
docker compose up -d
```

View File

@@ -22,16 +22,23 @@ Changemaker Lite runs as a set of Docker containers orchestrated by Docker Compo
## Quick Start
Clone the repository:
```bash
# Clone the repository
git clone https://gitea.bnkops.com/admin/changemaker.lite
cd changemaker.lite
git checkout v2
```
# Run the configuration wizard
Run the configuration wizard:
```bash
bash config.sh
```
# Start all services
Start all services:
```bash
docker compose up -d
```

View File

@@ -1026,6 +1026,42 @@
margin-top: 0.25rem;
}
/* Branch preview screenshot */
.branch-preview {
margin-bottom: 2rem;
position: relative;
z-index: 2;
border-radius: var(--radius-lg);
overflow: hidden;
border: 1px solid var(--border-color);
box-shadow: var(--shadow-md);
background: var(--bg-card);
}
.branch-preview img {
width: 100%;
height: auto;
display: block;
}
.branch-preview-caption {
padding: 0.625rem 1.25rem;
font-size: 0.8rem;
color: var(--text-muted);
border-top: 1px solid var(--border-color);
display: flex;
align-items: center;
gap: 0.5rem;
}
.branch-preview-caption .caption-dot {
width: 6px;
height: 6px;
border-radius: 50%;
background: var(--success);
flex-shrink: 0;
}
/* Feature nodes grid */
.nodes-grid {
display: grid;
@@ -2071,6 +2107,10 @@
<p>Email campaigns, SMS outreach, newsletters, advocacy, and team chat</p>
</div>
</div>
<div class="branch-preview reveal">
<img src="/assets/images/screenshots/public/campaigns.png" alt="Public campaigns page with postal code representative lookup and email advocacy" loading="lazy" width="1440" height="900">
<div class="branch-preview-caption"><span class="caption-dot"></span> Public Campaigns — postal code lookup to find representatives and send advocacy emails</div>
</div>
<div class="nodes-grid stagger">
<div class="feature-node">
<div class="node-header">
@@ -2148,6 +2188,10 @@
<p>GPS tracking, door-to-door canvassing, geographic organization</p>
</div>
</div>
<div class="branch-preview reveal">
<img src="/assets/images/screenshots/public/map.png" alt="Public interactive map showing Edmonton with canvassing territory overlays and support level legend" loading="lazy" width="1440" height="900">
<div class="branch-preview-caption"><span class="caption-dot"></span> Public Map — interactive Leaflet map with territory cuts, marker clustering, and support levels</div>
</div>
<div class="nodes-grid stagger">
<div class="feature-node">
<div class="node-header">
@@ -2217,6 +2261,10 @@
<p>Video, photos, playlists, page builder, documentation, and web IDE</p>
</div>
</div>
<div class="branch-preview reveal">
<img src="/assets/images/screenshots/public/gallery.png" alt="Public media gallery with video cards, sidebar navigation, chat, and content categories" loading="lazy" width="1440" height="900">
<div class="branch-preview-caption"><span class="caption-dot"></span> Media Gallery — browse videos, shorts, photos, and playlists with live chat and reactions</div>
</div>
<div class="nodes-grid stagger">
<div class="feature-node">
<div class="node-header">
@@ -2294,6 +2342,10 @@
<p>Database browsing, workflow automation, version control, search, and utilities</p>
</div>
</div>
<div class="branch-preview reveal">
<img src="/assets/images/screenshots/public/home.png" alt="Public homepage with hero section, upcoming shifts, latest videos, and recent activity feed" loading="lazy" width="1440" height="900">
<div class="branch-preview-caption"><span class="caption-dot"></span> Public Homepage — hero section, upcoming shifts, latest videos, and activity feed</div>
</div>
<div class="nodes-grid stagger">
<div class="feature-node">
<div class="node-header">
@@ -2355,6 +2407,10 @@
<p>Tunnel management, monitoring, security hardening, and backups</p>
</div>
</div>
<div class="branch-preview reveal">
<img src="/assets/images/screenshots/admin/monitoring.png" alt="Observability dashboard with Prometheus metrics, Grafana dashboards, and service health" loading="lazy" width="1440" height="900">
<div class="branch-preview-caption"><span class="caption-dot"></span> Observability Dashboard — Prometheus metrics, Grafana dashboards, and alert management</div>
</div>
<div class="nodes-grid stagger">
<div class="feature-node">
<div class="node-header">
@@ -2416,6 +2472,10 @@
<p>Donations, subscriptions, product sales, and supporter monetization</p>
</div>
</div>
<div class="branch-preview reveal">
<img src="/assets/images/screenshots/public/pricing.png" alt="Subscription pricing page with free and pro plan cards, monthly/yearly toggle, and feature lists" loading="lazy" width="1440" height="900">
<div class="branch-preview-caption"><span class="caption-dot"></span> Pricing Plans — subscription tiers with monthly/yearly billing and feature comparison</div>
</div>
<div class="nodes-grid stagger">
<div class="feature-node">
<div class="node-header">
@@ -2477,6 +2537,10 @@
<p>Friendships, activity feeds, achievements, groups, reactions, and real-time notifications</p>
</div>
</div>
<div class="branch-preview reveal">
<img src="/assets/images/screenshots/public/wall-of-fame.png" alt="Wall of Fame with volunteer spotlight, leaderboard tabs for canvass, shifts, and campaigns" loading="lazy" width="1440" height="900">
<div class="branch-preview-caption"><span class="caption-dot"></span> Wall of Fame — volunteer spotlight, achievement leaderboards, and community recognition</div>
</div>
<div class="nodes-grid stagger">
<div class="feature-node">
<div class="node-header">

View File

@@ -4,11 +4,4 @@ hide:
- navigation
- toc
title: "Test Page"
---
---
template: test-page.html
hide:
- navigation
- toc
title: "Test Page"
---
---

View File

@@ -2,8 +2,13 @@
Testing page.
[[test-page]]]]
[[test-page]]
TEst
test
test
<div class="photo-block" data-photo-id="1" data-size="large" data-caption="" data-link-to-gallery="true" data-alignment="center">Loading...</div>

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 435 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 167 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 140 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 119 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

Some files were not shown because too many files have changed in this diff Show More