Update admin modals and page components for mobile responsiveness

Bunker Admin
This commit is contained in:
2026-04-09 11:43:23 -06:00
parent 849dea7ce2
commit f0d994074d
81 changed files with 1271 additions and 588 deletions

View File

@@ -2990,6 +2990,10 @@ body.cm-search-active .md-header--cm-hidden .md-search__output {
<h1 id="changemaker-control-panel-ccp">Changemaker Control Panel (CCP)<a class="headerlink" href="#changemaker-control-panel-ccp" title="Permanent link">&para;</a></h1>
<div class="admonition tip">
<p class="admonition-title">Need help getting set up?</p>
<p><strong>Bunker Operations</strong> provides managed infrastructure and hands-on setup assistance for organizations running Changemaker Lite. We handle domains, tunnels, SMTP, and servers so you can focus on your campaign. <strong>Get in touch:</strong> <a href="https://bnkops.com">bnkops.com</a> | <code>admin@bnkops.ca</code></p>
</div>
<p>The Changemaker Control Panel is a <strong>multi-tenant management layer</strong> for operators who run multiple Changemaker Lite instances from a single server. It provides a web UI to provision, monitor, and maintain a fleet of instances without manual configuration.</p>
<div class="admonition info">
<p class="admonition-title">Single instance?</p>

View File

@@ -3437,6 +3437,10 @@ body.cm-search-active .md-header--cm-hidden .md-search__output {
<h1 id="environment-variables">Environment Variables<a class="headerlink" href="#environment-variables" title="Permanent link">&para;</a></h1>
<div class="admonition tip">
<p class="admonition-title">Need help getting set up?</p>
<p><strong>Bunker Operations</strong> provides managed infrastructure and hands-on setup assistance for organizations running Changemaker Lite. We handle domains, tunnels, SMTP, and servers so you can focus on your campaign. <strong>Get in touch:</strong> <a href="https://bnkops.com">bnkops.com</a> | <code>admin@bnkops.ca</code></p>
</div>
<p>Changemaker Lite uses a single <code>.env</code> file at the project root to configure all services. Copy the example file to get started:</p>
<div class="language-bash highlight"><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a>cp<span class="w"> </span>.env.example<span class="w"> </span>.env
</span></code></pre></div>

View File

@@ -2521,6 +2521,10 @@ body.cm-search-active .md-header--cm-hidden .md-search__output {
<h1 id="features-at-a-glance">Features at a Glance<a class="headerlink" href="#features-at-a-glance" title="Permanent link">&para;</a></h1>
<div class="admonition tip">
<p class="admonition-title">Need help getting set up?</p>
<p><strong>Bunker Operations</strong> provides managed infrastructure and hands-on setup assistance for organizations running Changemaker Lite. We handle domains, tunnels, SMTP, and servers so you can focus on your campaign. <strong>Get in touch:</strong> <a href="https://bnkops.com">bnkops.com</a> | <code>admin@bnkops.ca</code></p>
</div>
<p>Changemaker Lite bundles advocacy campaigns, geographic mapping, volunteer management, media hosting, and landing pages into a single self-hosted platform. Every feature can be toggled on or off from <strong>Settings</strong> in the admin panel.</p>
<hr />
<h2 id="core-features">Core Features<a class="headerlink" href="#core-features" title="Permanent link">&para;</a></h2>

View File

@@ -2572,6 +2572,10 @@ body.cm-search-active .md-header--cm-hidden .md-search__output {
<h1 id="first-steps">First Steps<a class="headerlink" href="#first-steps" title="Permanent link">&para;</a></h1>
<div class="admonition tip">
<p class="admonition-title">Need help getting set up?</p>
<p><strong>Bunker Operations</strong> provides managed infrastructure and hands-on setup assistance for organizations running Changemaker Lite. We handle domains, tunnels, SMTP, and servers so you can focus on your campaign. <strong>Get in touch:</strong> <a href="https://bnkops.com">bnkops.com</a> | <code>admin@bnkops.ca</code></p>
</div>
<p>You've installed Changemaker Lite — here's what to do next.</p>
<hr />
<h2 id="1-log-in">1. Log In<a class="headerlink" href="#1-log-in" title="Permanent link">&para;</a></h2>

View File

@@ -7,7 +7,7 @@
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="description" content="Install and configure Changemaker Lite from scratch.">
<meta name="description" content="Everything you need to deploy Changemaker Lite from prerequisites to your first login.">
<meta name="author" content="Bunker Operations">
@@ -77,7 +77,7 @@
<meta property="og:type" content="website" />
<meta property="og:title" content="Getting Started - Changemaker Lite" />
<meta property="og:description" content="Install and configure Changemaker Lite from scratch." />
<meta property="og:description" content="Everything you need to deploy Changemaker Lite from prerequisites to your first login." />
<meta property="og:image" content="https://cmlite.org/assets/images/social/docs/getting-started/index.png" />
<meta property="og:image:type" content="image/png" />
<meta property="og:image:width" content="1200" />
@@ -85,7 +85,7 @@
<meta property="og:url" content="https://cmlite.org/docs/getting-started/" />
<meta property="twitter:card" content="summary_large_image" />
<meta property="twitter:title" content="Getting Started - Changemaker Lite" />
<meta property="twitter:description" content="Install and configure Changemaker Lite from scratch." />
<meta property="twitter:description" content="Everything you need to deploy Changemaker Lite from prerequisites to your first login." />
<meta property="twitter:image" content="https://cmlite.org/assets/images/social/docs/getting-started/index.png" />
</head>
@@ -2221,36 +2221,81 @@ body.cm-search-active .md-header--cm-hidden .md-search__output {
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#prerequisites" class="md-nav__link">
<a href="#what-youll-need" class="md-nav__link">
<span class="md-ellipsis">
Prerequisites
What You'll Need
</span>
</a>
<nav class="md-nav" aria-label="What You&#39;ll Need">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#development-local-testing" class="md-nav__link">
<span class="md-ellipsis">
Development (Local Testing)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#quick-install-pre-built-images" class="md-nav__link">
<li class="md-nav__item">
<a href="#production-deployment" class="md-nav__link">
<span class="md-ellipsis">
Quick Install (Pre-built Images)
Production Deployment
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#quick-start-from-source" class="md-nav__link">
<a href="#quick-install" class="md-nav__link">
<span class="md-ellipsis">
Quick Start (From Source)
Quick Install
</span>
</a>
<nav class="md-nav" aria-label="Quick Install">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#pre-built-images-recommended" class="md-nav__link">
<span class="md-ellipsis">
Pre-built Images (Recommended)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#from-source-development" class="md-nav__link">
<span class="md-ellipsis">
From Source (Development)
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
@@ -2265,10 +2310,21 @@ body.cm-search-active .md-header--cm-hidden .md-search__output {
</li>
<li class="md-nav__item">
<a href="#services" class="md-nav__link">
<a href="#pre-installation-checklist" class="md-nav__link">
<span class="md-ellipsis">
Services
Pre-Installation Checklist
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#services-at-a-glance" class="md-nav__link">
<span class="md-ellipsis">
Services at a Glance
</span>
</a>
@@ -2390,6 +2446,13 @@ body.cm-search-active .md-header--cm-hidden .md-search__output {
<span class="md-tag">operator</span>
<span class="md-tag">planning</span>
</nav>
@@ -2411,23 +2474,118 @@ body.cm-search-active .md-header--cm-hidden .md-search__output {
<h1 id="getting-started">Getting Started<a class="headerlink" href="#getting-started" title="Permanent link">&para;</a></h1>
<p>This guide walks you through installing Changemaker Lite, running your first deployment, and logging into the admin dashboard.</p>
<p><img alt="Admin Dashboard" loading="lazy" src="../../assets/images/screenshots/getting-started/dashboard.png" /></p>
<h2 id="prerequisites">Prerequisites<a class="headerlink" href="#prerequisites" title="Permanent link">&para;</a></h2>
<p>Changemaker Lite is a self-hosted campaign platform that runs entirely on Docker. This guide takes you from zero to a working deployment — whether you're evaluating locally or launching for a live campaign.</p>
<div class="admonition tip">
<p class="admonition-title">Need help getting set up?</p>
<p><strong>Bunker Operations</strong> provides managed infrastructure and hands-on setup assistance for organizations running Changemaker Lite. We handle domains, tunnels, SMTP, and servers so you can focus on your campaign. <strong>Get in touch:</strong> <a href="https://bnkops.com">bnkops.com</a> | <code>admin@bnkops.ca</code></p>
</div>
<hr />
<h2 id="what-youll-need">What You'll Need<a class="headerlink" href="#what-youll-need" title="Permanent link">&para;</a></h2>
<p>Before deploying, gather the essentials. The requirements differ depending on whether you're running a <strong>quick local test</strong> or a <strong>production deployment</strong> serving real users.</p>
<h3 id="development-local-testing"><span class="twemoji lg"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 6h16v10H4m16 2a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2H4c-1.11 0-2 .89-2 2v10a2 2 0 0 0 2 2H0v2h24v-2z"/></svg></span> Development (Local Testing)<a class="headerlink" href="#development-local-testing" title="Permanent link">&para;</a></h3>
<p>All you need is Docker — no domain, tunnel, or SMTP required:</p>
<div class="grid cards">
<ul>
<li><strong>Docker</strong> 24+ and <strong>Docker Compose</strong> v2</li>
<li><strong>OpenSSL</strong> (for secret generation)</li>
<li>A Linux server (Ubuntu 22.04+ recommended) or macOS for development</li>
<li>At least 2 GB RAM and 10 GB disk space</li>
<li>A domain name (optional, but recommended for production)</li>
<li>
<p><span class="twemoji lg middle"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M21.81 10.25c-.06-.04-.56-.43-1.64-.43-.28 0-.56.03-.84.08-.21-1.4-1.38-2.11-1.43-2.14l-.29-.17-.18.27c-.24.36-.43.77-.51 1.19-.2.8-.08 1.56.33 2.21-.49.28-1.29.35-1.46.35H2.62c-.34 0-.62.28-.62.63 0 1.15.18 2.3.58 3.38.45 1.19 1.13 2.07 2 2.61.98.6 2.59.94 4.42.94.79 0 1.61-.07 2.42-.22 1.12-.2 2.2-.59 3.19-1.16A8.3 8.3 0 0 0 16.78 16c1.05-1.17 1.67-2.5 2.12-3.65h.19c1.14 0 1.85-.46 2.24-.85.26-.24.45-.53.59-.87l.08-.24zm-17.96.99h1.76c.08 0 .16-.07.16-.16V9.5c0-.08-.07-.16-.16-.16H3.85c-.09 0-.16.07-.16.16v1.58c.01.09.07.16.16.16m2.43 0h1.76c.08 0 .16-.07.16-.16V9.5c0-.08-.07-.16-.16-.16H6.28c-.09 0-.16.07-.16.16v1.58c.01.09.07.16.16.16m2.47 0h1.75c.1 0 .17-.07.17-.16V9.5c0-.08-.06-.16-.17-.16H8.75c-.08 0-.15.07-.15.16v1.58c0 .09.06.16.15.16m2.44 0h1.77c.08 0 .15-.07.15-.16V9.5c0-.08-.06-.16-.15-.16h-1.77c-.08 0-.15.07-.15.16v1.58c0 .09.07.16.15.16M6.28 9h1.76c.08 0 .16-.09.16-.18V7.25c0-.09-.07-.16-.16-.16H6.28c-.09 0-.16.06-.16.16v1.57c.01.09.07.18.16.18m2.47 0h1.75c.1 0 .17-.09.17-.18V7.25c0-.09-.06-.16-.17-.16H8.75c-.08 0-.15.06-.15.16v1.57c0 .09.06.18.15.18m2.44 0h1.77c.08 0 .15-.09.15-.18V7.25c0-.09-.07-.16-.15-.16h-1.77c-.08 0-.15.06-.15.16v1.57c0 .09.07.18.15.18m0-2.28h1.77c.08 0 .15-.07.15-.16V5c0-.1-.07-.17-.15-.17h-1.77c-.08 0-.15.06-.15.17v1.56c0 .08.07.16.15.16m2.46 4.52h1.76c.09 0 .16-.07.16-.16V9.5c0-.08-.07-.16-.16-.16h-1.76c-.08 0-.15.07-.15.16v1.58c0 .09.07.16.15.16"/></svg></span> <strong>Docker 24+ &amp; Compose v2</strong></p>
<hr />
<p>The only hard requirement. All 30+ services run as containers.</p>
</li>
<li>
<p><span class="twemoji lg middle"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 17a2 2 0 0 0 2-2 2 2 0 0 0-2-2 2 2 0 0 0-2 2 2 2 0 0 0 2 2m6-9a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V10a2 2 0 0 1 2-2h1V6a5 5 0 0 1 5-5 5 5 0 0 1 5 5v2zm-6-5a3 3 0 0 0-3 3v2h6V6a3 3 0 0 0-3-3"/></svg></span> <strong>OpenSSL</strong></p>
<hr />
<p>Used by the config wizard to auto-generate 21 secrets (JWT, encryption keys, passwords).</p>
</li>
<li>
<p><span class="twemoji lg middle"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M17 17H7V7h10m4 4V9h-2V7a2 2 0 0 0-2-2h-2V3h-2v2h-2V3H9v2H7c-1.11 0-2 .89-2 2v2H3v2h2v2H3v2h2v2a2 2 0 0 0 2 2h2v2h2v-2h2v2h2v-2h2a2 2 0 0 0 2-2v-2h2v-2h-2v-2m-6 2h-2v-2h2m2-2H9v6h6z"/></svg></span> <strong>2 GB RAM / 10 GB Disk</strong></p>
<hr />
<p>Minimum for core services. 4 GB recommended if enabling media, chat, or monitoring.</p>
</li>
</ul>
<h2 id="quick-install-pre-built-images">Quick Install (Pre-built Images)<a class="headerlink" href="#quick-install-pre-built-images" title="Permanent link">&para;</a></h2>
<p>The fastest way to deploy — no source code, no compilation:</p>
</div>
<div class="admonition tip">
<p class="admonition-title">MailHog captures all emails locally</p>
<p>In dev mode, every outbound email is caught by MailHog at <code>http://localhost:8025</code> — no SMTP provider needed.</p>
</div>
<h3 id="production-deployment"><span class="twemoji lg"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 1h16a1 1 0 0 1 1 1v4a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1m0 8h16a1 1 0 0 1 1 1v4a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1v-4a1 1 0 0 1 1-1m0 8h16a1 1 0 0 1 1 1v4a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1v-4a1 1 0 0 1 1-1M9 5h1V3H9zm0 8h1v-2H9zm0 8h1v-2H9zM5 3v2h2V3zm0 8v2h2v-2zm0 8v2h2v-2z"/></svg></span> Production Deployment<a class="headerlink" href="#production-deployment" title="Permanent link">&para;</a></h3>
<p>For a deployment that serves real users, you'll also need:</p>
<div class="grid cards">
<ul>
<li>
<p><span class="twemoji lg middle"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M16.36 14c.08-.66.14-1.32.14-2s-.06-1.34-.14-2h3.38c.16.64.26 1.31.26 2s-.1 1.36-.26 2m-5.15 5.56c.6-1.11 1.06-2.31 1.38-3.56h2.95a8.03 8.03 0 0 1-4.33 3.56M14.34 14H9.66c-.1-.66-.16-1.32-.16-2s.06-1.35.16-2h4.68c.09.65.16 1.32.16 2s-.07 1.34-.16 2M12 19.96c-.83-1.2-1.5-2.53-1.91-3.96h3.82c-.41 1.43-1.08 2.76-1.91 3.96M8 8H5.08A7.92 7.92 0 0 1 9.4 4.44C8.8 5.55 8.35 6.75 8 8m-2.92 8H8c.35 1.25.8 2.45 1.4 3.56A8 8 0 0 1 5.08 16m-.82-2C4.1 13.36 4 12.69 4 12s.1-1.36.26-2h3.38c-.08.66-.14 1.32-.14 2s.06 1.34.14 2M12 4.03c.83 1.2 1.5 2.54 1.91 3.97h-3.82c.41-1.43 1.08-2.77 1.91-3.97M18.92 8h-2.95a15.7 15.7 0 0 0-1.38-3.56c1.84.63 3.37 1.9 4.33 3.56M12 2C6.47 2 2 6.5 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2"/></svg></span> <strong>A Domain Name</strong></p>
<hr />
<p>Changemaker Lite uses <strong>subdomain routing</strong><code>app.</code>, <code>api.</code>, <code>docs.</code>, <code>git.</code>, and 10+ more subdomains are created automatically. Wildcard DNS (<code>*.yourdomain.org</code>) is the simplest approach.</p>
<p>Budget ~$1015/year from any registrar.</p>
</li>
<li>
<p><span class="twemoji lg middle"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 2C6.5 2 2 6.5 2 12v10h20V12c0-5.5-4.5-10-10-10M7.1 5.69A7.94 7.94 0 0 1 11 4.07v2.02c-.91.15-1.75.51-2.47 1.02zm8.37 1.42A5.95 5.95 0 0 0 13 6.09V4.07c1.46.18 2.79.76 3.9 1.62zM5.69 7.1l1.42 1.43A5.95 5.95 0 0 0 6.09 11H4.07c.18-1.46.76-2.79 1.62-3.9M6 13v2.5H4V13zm-2 7v-2.5h2V20zM16.89 8.53l1.42-1.43a7.94 7.94 0 0 1 1.62 3.9h-2.02a5.95 5.95 0 0 0-1.02-2.47M18 13h2v2.5h-2zm0 7v-2.5h2V20z"/></svg></span> <strong>A Reverse Tunnel or Public IP</strong></p>
<hr />
<p>Your server needs to be reachable from the internet. Built-in support for <strong><a href="https://github.com/fosrl/pangolin">Pangolin</a></strong> — a self-hosted tunnel with SSL, subdomain routing, and access control. The admin dashboard includes a one-click setup wizard.</p>
<p><em>Alternatives: Cloudflare Tunnel, a VPS with public IP, or any reverse proxy with SSL.</em></p>
</li>
<li>
<p><span class="twemoji lg middle"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M22 5.5H9c-1.1 0-2 .9-2 2v9a2 2 0 0 0 2 2h13c1.11 0 2-.89 2-2v-9a2 2 0 0 0-2-2m0 3.67-6.5 3.33L9 9.17V7.5l6.5 3.31L22 7.5zM5 16.5c0 .17.03.33.05.5H1c-.552 0-1-.45-1-1s.448-1 1-1h4zM3 7h2.05c-.02.17-.05.33-.05.5V9H3c-.55 0-1-.45-1-1s.45-1 1-1m-2 5c0-.55.45-1 1-1h3v2H2c-.55 0-1-.45-1-1"/></svg></span> <strong>SMTP Email Provider</strong></p>
<hr />
<p>Campaign messages, password resets, volunteer invitations, and newsletters all need real email delivery.</p>
<p>Recommended: <strong><a href="https://proton.me/mail">Proton Mail</a></strong> (privacy-focused), <strong><a href="https://www.mailgun.com">Mailgun</a></strong> (100/day free), <strong><a href="https://aws.amazon.com/ses/">Amazon SES</a></strong> (cheapest at scale), or <strong><a href="https://www.brevo.com">Brevo</a></strong> (300/day free).</p>
</li>
<li>
<p><span class="twemoji lg middle"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M14.62 8.35c-.42.28-1.75 1.04-1.95 1.19-.39.31-.75.29-1.14-.01-.2-.16-1.53-.92-1.95-1.19-.48-.31-.45-.7.08-.92 1.64-.69 3.28-.64 4.91.03.49.21.51.6.05.9m7.22 7.28c-.93-2.09-2.2-3.99-3.84-5.66a4.3 4.3 0 0 1-1.06-1.88c-.1-.33-.17-.67-.24-1.01-.2-.88-.29-1.78-.7-2.61-.73-1.58-2-2.4-3.84-2.47-1.81.05-3.16.81-3.95 2.4-.21.43-.36.88-.46 1.34-.17.76-.32 1.55-.5 2.32-.15.65-.45 1.21-.96 1.71-1.61 1.57-2.9 3.37-3.88 5.35-.14.29-.28.58-.37.88-.19.66.29 1.12.99.96.44-.09.88-.18 1.3-.31.41-.15.57-.05.67.35.65 2.15 2.07 3.66 4.24 4.5 4.12 1.56 8.93-.66 9.97-4.58.07-.27.17-.37.47-.27.46.14.93.24 1.4.35.49.09.85-.16.92-.64.03-.26-.06-.49-.16-.73"/></svg></span> <strong>A Linux Server</strong></p>
<hr />
<p>Any Linux with Docker. Ubuntu 22.04+ LTS recommended. A VPS from <a href="https://www.digitalocean.com">DigitalOcean</a>, <a href="https://www.hetzner.com">Hetzner</a>, or <a href="https://www.linode.com">Linode</a> works great — or a spare machine on your network if using a tunnel.</p>
</li>
</ul>
</div>
<details class="info">
<summary>Optional services that enhance your deployment</summary>
<p>These aren't required but unlock additional features:</p>
<table>
<thead>
<tr>
<th>Service</th>
<th>Purpose</th>
<th>Free Tier</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong><a href="https://stripe.com">Stripe</a></strong></td>
<td>Donations, merchandise, membership plans</td>
<td>Free account, pay-as-you-go</td>
</tr>
<tr>
<td><strong><a href="https://www.mapbox.com/pricing">Mapbox</a></strong> or <strong><a href="https://developers.google.com/maps">Google Maps</a></strong></td>
<td>Better geocoding accuracy for mapping</td>
<td>100K req/mo (Mapbox) or $200/mo credit (Google)</td>
</tr>
<tr>
<td><strong><a href="https://www.maxmind.com/en/geolite2/signup">MaxMind GeoLite2</a></strong></td>
<td>Geographic analytics (visitor locations)</td>
<td>Free account</td>
</tr>
<tr>
<td><strong><a href="https://termux.dev">Android phone + Termux</a></strong></td>
<td>SMS campaigns via physical phone gateway</td>
<td>Free — no third-party SMS costs</td>
</tr>
<tr>
<td><strong>Public IP + UDP 10000</strong></td>
<td>Jitsi self-hosted video conferencing</td>
<td>Free (requires open firewall port)</td>
</tr>
</tbody>
</table>
<p>See <a href="prerequisites/">Prerequisites &amp; External Services</a> for setup details on each.</p>
</details>
<hr />
<h2 id="quick-install"><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M11 15H6l7-14v8h5l-7 14z"/></svg></span> Quick Install<a class="headerlink" href="#quick-install" title="Permanent link">&para;</a></h2>
<h3 id="pre-built-images-recommended">Pre-built Images (Recommended)<a class="headerlink" href="#pre-built-images-recommended" title="Permanent link">&para;</a></h3>
<p>The fastest path — no source code, no compilation:</p>
<div class="language-bash highlight"><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a>curl<span class="w"> </span>-fsSL<span class="w"> </span>https://gitea.bnkops.com/admin/changemaker.lite/raw/branch/main/scripts/install.sh<span class="w"> </span><span class="p">|</span><span class="w"> </span>bash
</span></code></pre></div>
<p>This downloads a lightweight release package (~2 MB), runs the configuration wizard, and pulls pre-built Docker images. First startup takes ~2 minutes. See <a href="installation/#pre-built-image-installation">Installation</a> for details.</p>
<h2 id="quick-start-from-source">Quick Start (From Source)<a class="headerlink" href="#quick-start-from-source" title="Permanent link">&para;</a></h2>
<p>For development or customization, clone the full repository:</p>
<p>This downloads a lightweight release package (~2 MB), runs the <strong>14-step configuration wizard</strong>, and pulls pre-built Docker images. First startup takes ~2 minutes.</p>
<h3 id="from-source-development">From Source (Development)<a class="headerlink" href="#from-source-development" title="Permanent link">&para;</a></h3>
<p>For development or customization:</p>
<div class="language-bash highlight"><pre><span></span><code><span id="__span-1-1"><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a>git<span class="w"> </span>clone<span class="w"> </span>https://gitea.bnkops.com/admin/changemaker.lite
</span><span id="__span-1-2"><a id="__codelineno-1-2" name="__codelineno-1-2" href="#__codelineno-1-2"></a><span class="nb">cd</span><span class="w"> </span>changemaker.lite
</span></code></pre></div>
@@ -2435,12 +2593,12 @@ body.cm-search-active .md-header--cm-hidden .md-search__output {
</span></code></pre></div>
<div class="language-bash highlight"><pre><span></span><code><span id="__span-3-1"><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a>docker<span class="w"> </span>compose<span class="w"> </span>up<span class="w"> </span>-d
</span></code></pre></div>
<p>Open <strong>http://localhost:3000</strong> and sign in with the admin email and password you configured. The API container automatically runs database migrations and seeding on first startup — no manual steps needed.</p>
<p>Open <strong>http://localhost:3000</strong> and sign in with the admin credentials you configured. The API container automatically runs database migrations and seeding on first startup.</p>
<div class="admonition warning">
<p class="admonition-title">Change your password</p>
<p>If you used the wizard's generated password, change it immediately from the admin dashboard.</p>
</div>
<p>For the full setup walkthrough, see <a href="installation/">Installation</a>.</p>
<hr />
<h2 id="configuration-wizard">Configuration Wizard<a class="headerlink" href="#configuration-wizard" title="Permanent link">&para;</a></h2>
<p>The <code>config.sh</code> wizard produces a fully populated <code>.env</code> file in <strong>14 steps</strong>:</p>
<table>
@@ -2510,7 +2668,22 @@ body.cm-search-active .md-header--cm-hidden .md-search__output {
</tbody>
</table>
<p>See <a href="installation/">Installation</a> for detailed documentation of each step.</p>
<h2 id="services">Services<a class="headerlink" href="#services" title="Permanent link">&para;</a></h2>
<hr />
<h2 id="pre-installation-checklist">Pre-Installation Checklist<a class="headerlink" href="#pre-installation-checklist" title="Permanent link">&para;</a></h2>
<p>Use this to make sure you're ready before running the installer:</p>
<ul class="task-list">
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled/><span class="task-list-indicator"></span></label> <strong>Docker 24+</strong> and <strong>Docker Compose v2</strong> installed</li>
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled/><span class="task-list-indicator"></span></label> <strong>OpenSSL</strong> installed (for secret generation)</li>
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled/><span class="task-list-indicator"></span></label> <strong>Domain name</strong> registered and DNS accessible</li>
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled/><span class="task-list-indicator"></span></label> <strong>DNS configured</strong> — wildcard <code>*.yourdomain.org</code> or individual subdomains pointing to your tunnel/server</li>
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled/><span class="task-list-indicator"></span></label> <strong>Tunnel or public IP</strong> — Pangolin credentials (API key + Org ID), or server with public IP + SSL</li>
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled/><span class="task-list-indicator"></span></label> <strong>SMTP credentials</strong> — host, port, username, password from your email provider</li>
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled/><span class="task-list-indicator"></span></label> <em>(Optional)</em> Stripe account for payments</li>
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled/><span class="task-list-indicator"></span></label> <em>(Optional)</em> Mapbox or Google Maps API key for geocoding</li>
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled/><span class="task-list-indicator"></span></label> <em>(Optional)</em> MaxMind account for geographic analytics</li>
</ul>
<hr />
<h2 id="services-at-a-glance">Services at a Glance<a class="headerlink" href="#services-at-a-glance" title="Permanent link">&para;</a></h2>
<p>Changemaker Lite includes <strong>30+ Docker services</strong> organized into 8 categories:</p>
<table>
<thead>
@@ -2564,19 +2737,52 @@ body.cm-search-active .md-header--cm-hidden .md-search__output {
</tbody>
</table>
<p>See <a href="services/">Services Overview</a> for the complete catalog with ports, feature flags, and detailed descriptions.</p>
<hr />
<h2 id="next-steps">Next Steps<a class="headerlink" href="#next-steps" title="Permanent link">&para;</a></h2>
<div class="grid cards">
<ul>
<li><a href="prerequisites/">Prerequisites</a> — external services checklist (domain, SMTP, tunnel)</li>
<li><a href="installation/">Installation</a> — detailed setup walkthrough and manual configuration</li>
<li><a href="services/">Services Overview</a> — complete service catalog (30+ containers)</li>
<li><a href="environment-variables/">Environment Variables</a>complete <code>.env</code> reference</li>
<li><a href="first-steps/">First Steps</a> — create your first campaign and add locations</li>
<li><a href="upgrades/">Updates &amp; Upgrades</a> — keep your installation current</li>
<li><a href="control-panel/">Control Panel (CCP)</a> — multi-instance management</li>
<li><a href="features/">Features at a Glance</a> — visual overview of every module</li>
<li><a href="../admin/">Admin Guide</a> — full administration reference</li>
<li><a href="../deployment/">Deployment</a> — production setup with SSL and tunneling</li>
<li>
<p><span class="twemoji lg middle"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 3h-4.18C14.4 1.84 13.3 1 12 1s-2.4.84-2.82 2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2m-7 0a1 1 0 0 1 1 1 1 1 0 0 1-1 1 1 1 0 0 1-1-1 1 1 0 0 1 1-1M7 7h10V5h2v14H5V5h2zm.5 6.5L9 12l2 2 4.5-4.5L17 11l-6 6z"/></svg></span> <strong><a href="prerequisites/">Prerequisites</a></strong></p>
<hr />
<p>Full details on every external servicedomain setup, SMTP providers, tunnel options, and optional integrations.</p>
</li>
<li>
<p><span class="twemoji lg middle"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M5 20h14v-2H5m14-9h-4V3H9v6H5l7 7z"/></svg></span> <strong><a href="installation/">Installation</a></strong></p>
<hr />
<p>Detailed setup walkthrough, manual configuration, and the full config wizard reference.</p>
</li>
<li>
<p><span class="twemoji lg middle"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 11h8V3H3m0 18h8v-8H3m10 8h8v-8h-8m0-10v8h8V3"/></svg></span> <strong><a href="services/">Services Overview</a></strong></p>
<hr />
<p>Complete catalog of 30+ containers with ports, feature flags, and descriptions.</p>
</li>
<li>
<p><span class="twemoji lg middle"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 15.5A3.5 3.5 0 0 1 8.5 12 3.5 3.5 0 0 1 12 8.5a3.5 3.5 0 0 1 3.5 3.5 3.5 3.5 0 0 1-3.5 3.5m7.43-2.53c.04-.32.07-.64.07-.97s-.03-.66-.07-1l2.11-1.63c.19-.15.24-.42.12-.64l-2-3.46c-.12-.22-.39-.31-.61-.22l-2.49 1c-.52-.39-1.06-.73-1.69-.98l-.37-2.65A.506.506 0 0 0 14 2h-4c-.25 0-.46.18-.5.42l-.37 2.65c-.63.25-1.17.59-1.69.98l-2.49-1c-.22-.09-.49 0-.61.22l-2 3.46c-.13.22-.07.49.12.64L4.57 11c-.04.34-.07.67-.07 1s.03.65.07.97l-2.11 1.66c-.19.15-.25.42-.12.64l2 3.46c.12.22.39.3.61.22l2.49-1.01c.52.4 1.06.74 1.69.99l.37 2.65c.04.24.25.42.5.42h4c.25 0 .46-.18.5-.42l.37-2.65c.63-.26 1.17-.59 1.69-.99l2.49 1.01c.22.08.49 0 .61-.22l2-3.46c.12-.22.07-.49-.12-.64z"/></svg></span> <strong><a href="environment-variables/">Environment Variables</a></strong></p>
<hr />
<p>Complete <code>.env</code> reference for every setting.</p>
</li>
<li>
<p><span class="twemoji lg middle"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M14.4 6H20v10h-7l-.4-2H7v7H5V4h9zm-.4 8h2v-2h2v-2h-2V8h-2v2l-1-2V6h-2v2H9V6H7v2h2v2H7v2h2v-2h2v2h2v-2l1 2zm-3-4V8h2v2zm3 0h2v2h-2z"/></svg></span> <strong><a href="first-steps/">First Steps</a></strong></p>
<hr />
<p>Create your first campaign, add locations to the map, and invite volunteers.</p>
</li>
<li>
<p><span class="twemoji lg middle"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 18v-8l3.5 3.5 1.42-1.42L12 6.16l-5.92 5.92L7.5 13.5 11 10v8zM12 2a10 10 0 0 1 10 10 10 10 0 0 1-10 10A10 10 0 0 1 2 12 10 10 0 0 1 12 2"/></svg></span> <strong><a href="upgrades/">Updates &amp; Upgrades</a></strong></p>
<hr />
<p>Keep your installation current with zero-downtime upgrades.</p>
</li>
<li>
<p><span class="twemoji lg middle"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M21 16V4H3v12zm0-14a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2h-7v2h2v2H8v-2h2v-2H3a2 2 0 0 1-2-2V4c0-1.11.89-2 2-2zM5 6h9v5H5zm10 0h4v2h-4zm4 3v5h-4V9zM5 12h4v2H5zm5 0h4v2h-4z"/></svg></span> <strong><a href="control-panel/">Control Panel</a></strong></p>
<hr />
<p>Manage multiple Changemaker Lite instances from a single dashboard.</p>
</li>
<li>
<p><span class="twemoji lg middle"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="m18.09 11.77 1.47 6.33L14 14.74 8.44 18.1l1.46-6.33L5 7.5l6.47-.54L14 1l2.53 5.96L23 7.5zM2 12.43c.19 0 .38-.06.55-.17l3.2-2.11-1.57-1.36-2.73 1.8c-.461.3-.589.91-.29 1.41.2.27.52.43.84.43m-.84 9.12c.2.29.52.45.84.45.19 0 .38-.05.55-.16l4.11-2.71.34-1.37.31-1.45-5.86 3.85c-.461.31-.589.93-.29 1.39m.29-6.17a1 1 0 0 0-.29 1.38c.2.3.52.45.84.45.19 0 .38-.05.55-.16l5.42-3.55.27-1.19-.92-.81z"/></svg></span> <strong><a href="features/">Features at a Glance</a></strong></p>
<hr />
<p>Visual overview of every module — advocacy, mapping, media, payments, and more.</p>
</li>
</ul>
</div>

View File

@@ -3055,6 +3055,10 @@ body.cm-search-active .md-header--cm-hidden .md-search__output {
<h1 id="installation">Installation<a class="headerlink" href="#installation" title="Permanent link">&para;</a></h1>
<div class="admonition tip">
<p class="admonition-title">Need help getting set up?</p>
<p><strong>Bunker Operations</strong> provides managed infrastructure and hands-on setup assistance for organizations running Changemaker Lite. We handle domains, tunnels, SMTP, and servers so you can focus on your campaign. <strong>Get in touch:</strong> <a href="https://bnkops.com">bnkops.com</a> | <code>admin@bnkops.ca</code></p>
</div>
<p>Changemaker Lite runs as a set of Docker containers orchestrated by Docker Compose. The <code>config.sh</code> wizard handles all configuration — or you can set things up manually.</p>
<div class="admonition info">
<p class="admonition-title">Have your external services ready?</p>

View File

@@ -2735,6 +2735,10 @@ body.cm-search-active .md-header--cm-hidden .md-search__output {
<h1 id="prerequisites-external-services">Prerequisites &amp; External Services<a class="headerlink" href="#prerequisites-external-services" title="Permanent link">&para;</a></h1>
<div class="admonition tip">
<p class="admonition-title">Need help getting set up?</p>
<p><strong>Bunker Operations</strong> provides managed infrastructure and hands-on setup assistance for organizations running Changemaker Lite. We handle domains, tunnels, SMTP, and servers so you can focus on your campaign. <strong>Get in touch:</strong> <a href="https://bnkops.com">bnkops.com</a> | <code>admin@bnkops.ca</code></p>
</div>
<p>Before running the installer, gather the external services and accounts listed below. Having these ready makes the configuration wizard a smooth, uninterrupted process.</p>
<div class="admonition tip">
<p class="admonition-title">Don't have these yet?</p>
@@ -2962,7 +2966,7 @@ body.cm-search-active .md-header--cm-hidden .md-search__output {
<div class="admonition quote">
<p class="admonition-title">Built by organizers, for organizers</p>
<p>Bunker Operations exists so campaign teams can focus on <strong>building power</strong> — not wrestling with infrastructure. We provide the plumbing so you can focus on the mission.</p>
<p><strong>Get in touch:</strong> <a href="https://bnkops.com">bnkops.com</a> or email <code>hello@bnkops.com</code></p>
<p><strong>Get in touch:</strong> <a href="https://bnkops.com">bnkops.com</a> | <code>admin@bnkops.ca</code></p>
</div>
<hr />
<h2 id="next-steps">Next Steps<a class="headerlink" href="#next-steps" title="Permanent link">&para;</a></h2>

View File

@@ -2745,6 +2745,10 @@ body.cm-search-active .md-header--cm-hidden .md-search__output {
<h1 id="services-overview">Services Overview<a class="headerlink" href="#services-overview" title="Permanent link">&para;</a></h1>
<div class="admonition tip">
<p class="admonition-title">Need help getting set up?</p>
<p><strong>Bunker Operations</strong> provides managed infrastructure and hands-on setup assistance for organizations running Changemaker Lite. We handle domains, tunnels, SMTP, and servers so you can focus on your campaign. <strong>Get in touch:</strong> <a href="https://bnkops.com">bnkops.com</a> | <code>admin@bnkops.ca</code></p>
</div>
<p>Changemaker Lite runs as <strong>30+ Docker containers</strong> orchestrated by Docker Compose. This page catalogs every service, organized by category.</p>
<div class="admonition tip">
<p class="admonition-title">Quick reference</p>

View File

@@ -3018,6 +3018,10 @@ body.cm-search-active .md-header--cm-hidden .md-search__output {
<h1 id="updates-upgrades">Updates &amp; Upgrades<a class="headerlink" href="#updates-upgrades" title="Permanent link">&para;</a></h1>
<div class="admonition tip">
<p class="admonition-title">Need help getting set up?</p>
<p><strong>Bunker Operations</strong> provides managed infrastructure and hands-on setup assistance for organizations running Changemaker Lite. We handle domains, tunnels, SMTP, and servers so you can focus on your campaign. <strong>Get in touch:</strong> <a href="https://bnkops.com">bnkops.com</a> | <code>admin@bnkops.ca</code></p>
</div>
<p>Changemaker Lite includes a built-in upgrade system that pulls code updates, rebuilds containers, runs database migrations, and restarts services — all while preserving your customizations.</p>
<p>There are two ways to upgrade:</p>
<ol>