Tonne of updates

This commit is contained in:
2026-02-18 17:15:31 -07:00
parent 56e262ad8b
commit 1a1f12c45b
176 changed files with 12786 additions and 388 deletions

View File

@@ -39,6 +39,7 @@
--branch-data: #22D3EE;
--branch-devops: #FBBF24;
--branch-sovereignty: #F87171;
--branch-fundraising: #EC4899;
/* Surfaces — dark */
--bg-deep: #0F172A;
@@ -887,6 +888,7 @@
.branch-icon.data { background: rgba(34, 211, 238, 0.15); border: 1px solid rgba(34, 211, 238, 0.3); }
.branch-icon.devops { background: rgba(251, 191, 36, 0.15); border: 1px solid rgba(251, 191, 36, 0.3); }
.branch-icon.sovereignty { background: rgba(248, 113, 113, 0.15); border: 1px solid rgba(248, 113, 113, 0.3); }
.branch-icon.fundraising { background: rgba(236, 72, 153, 0.15); border: 1px solid rgba(236, 72, 153, 0.3); }
.branch-title h3 {
font-size: 1.35rem;
@@ -935,6 +937,7 @@
.branch-data .feature-node { border-top: 2px solid var(--branch-data); }
.branch-devops .feature-node { border-top: 2px solid var(--branch-devops); }
.branch-sovereignty .feature-node { border-top: 2px solid var(--branch-sovereignty); }
.branch-fundraising .feature-node { border-top: 2px solid var(--branch-fundraising); }
.branch-comm .feature-node:hover { border-color: var(--branch-comm); box-shadow: 0 0 20px rgba(192,132,252,0.2); }
.branch-map .feature-node:hover { border-color: var(--branch-map); box-shadow: 0 0 20px rgba(52,211,153,0.2); }
@@ -942,6 +945,7 @@
.branch-data .feature-node:hover { border-color: var(--branch-data); box-shadow: 0 0 20px rgba(34,211,238,0.2); }
.branch-devops .feature-node:hover { border-color: var(--branch-devops); box-shadow: 0 0 20px rgba(251,191,36,0.2); }
.branch-sovereignty .feature-node:hover { border-color: var(--branch-sovereignty); box-shadow: 0 0 20px rgba(248,113,113,0.2); }
.branch-fundraising .feature-node:hover { border-color: var(--branch-fundraising); box-shadow: 0 0 20px rgba(236,72,153,0.2); }
/* Branch-specific node icon tinting */
.branch-comm .node-icon { background: rgba(192,132,252,0.12); }
@@ -950,6 +954,7 @@
.branch-data .node-icon { background: rgba(34,211,238,0.12); }
.branch-devops .node-icon { background: rgba(251,191,36,0.12); }
.branch-sovereignty .node-icon { background: rgba(248,113,113,0.12); }
.branch-fundraising .node-icon { background: rgba(236,72,153,0.12); }
.node-header {
display: flex;
@@ -1555,7 +1560,7 @@
<meta property="og:type" content="website" />
<meta property="og:title" content="Changemaker Lite" />
<meta property="og:description" content="Build Power. Not Rent It. Own your digital infrastructure." />
<meta property="og:description" content="Grow Power. Don't Rent It. Own your digital infrastructure." />
<meta property="og:image" content="https://bnkserve.org/assets/images/social/index.png" />
<meta property="og:image:type" content="image/png" />
<meta property="og:image:width" content="1200" />
@@ -1563,7 +1568,7 @@
<meta property="og:url" content="https://bnkserve.org/" />
<meta property="twitter:card" content="summary_large_image" />
<meta property="twitter:title" content="Changemaker Lite" />
<meta property="twitter:description" content="Build Power. Not Rent It. Own your digital infrastructure." />
<meta property="twitter:description" content="Grow Power. Don't Rent It. Own your digital infrastructure." />
<meta property="twitter:image" content="https://bnkserve.org/assets/images/social/index.png" />
</head>
<body>
@@ -1661,7 +1666,7 @@
<div class="hero-badge">Self-Hosted Campaign Infrastructure</div>
<h1>Grow Power.<br>Don't Rent It.</h1>
<p class="hero-subtitle">
Complete political independence on your own infrastructure. Own every byte of data, control every system.
A deeply integrated and opinionated collection of free and open source services and production ready applications for growing political movements. Campaigns, canvassing, fundraising, team chat, and media &mdash; all on your own infrastructure.
No corporate surveillance. No foreign interference. No monthly ransoms. Free and open source.
</p>
<div class="hero-cta">
@@ -1698,7 +1703,7 @@
<div class="hero-stat-label">Self-Hosted</div>
</div>
<div class="hero-stat">
<div class="hero-stat-value">26+</div>
<div class="hero-stat-value">30+</div>
<div class="hero-stat-label">Integrated Tools</div>
</div>
<div class="hero-stat">
@@ -1760,7 +1765,7 @@
<div class="container">
<div class="section-header reveal">
<h2>The Network</h2>
<p>26 tools connected &mdash; each node strengthens the whole</p>
<p>30+ tools connected &mdash; each node strengthens the whole</p>
</div>
<!-- ====== BRANCH 1: Communication ====== -->
@@ -1805,6 +1810,22 @@
<p>Public response collection with moderation, upvoting, and verification. Showcase supporter voices on your campaigns.</p>
<div class="node-tags"><span class="node-tag">Moderation</span><span class="node-tag">Upvoting</span><span class="node-tag">Verification</span></div>
</div>
<div class="feature-node">
<div class="node-header">
<div class="node-icon">&#x1F680;</div>
<h4>Rocket.Chat</h4>
</div>
<p>Self-hosted team chat with SSO integration. Automatic channel notifications for shift signups, canvass sessions, and campaign responses.</p>
<div class="node-tags"><span class="node-tag">SSO</span><span class="node-tag">Channels</span><span class="node-tag">Slack alternative</span></div>
</div>
<div class="feature-node">
<div class="node-header">
<div class="node-icon">&#x1F514;</div>
<h4>Smart Notifications</h4>
</div>
<p>Async notification queue for admin alerts and volunteer feedback. Shift reminders, session summaries, and signup confirmations.</p>
<div class="node-tags"><span class="node-tag">BullMQ</span><span class="node-tag">Reminders</span><span class="node-tag">Summaries</span></div>
</div>
</div>
</div>
@@ -1911,6 +1932,14 @@
<p>Full VS Code in the browser. Edit configuration, templates, and code from anywhere without SSH.</p>
<div class="node-tags"><span class="node-tag">VS Code</span><span class="node-tag">Browser IDE</span><span class="node-tag">Extensions</span></div>
</div>
<div class="feature-node">
<div class="node-header">
<div class="node-icon">&#x270F;</div>
<h4>Excalidraw Whiteboard</h4>
</div>
<p>Collaborative diagramming and whiteboard tool. Plan canvassing routes, sketch campaign strategies, and brainstorm as a team.</p>
<div class="node-tags"><span class="node-tag">Collaborative</span><span class="node-tag">Diagrams</span><span class="node-tag">Real-time</span></div>
</div>
</div>
</div>
@@ -2001,10 +2030,71 @@
<p>PostgreSQL dumps, Listmonk data, uploads archive, and optional S3 upload. One-command backup script.</p>
<div class="node-tags"><span class="node-tag">PostgreSQL</span><span class="node-tag">S3 optional</span><span class="node-tag">Scripted</span></div>
</div>
<div class="feature-node">
<div class="node-header">
<div class="node-icon">&#x1F510;</div>
<h4>Vaultwarden</h4>
</div>
<p>Self-hosted Bitwarden-compatible password manager. Secure credential sharing for your team with real-time sync and browser extensions.</p>
<div class="node-tags"><span class="node-tag">Bitwarden</span><span class="node-tag">Team sharing</span><span class="node-tag">Encrypted</span></div>
</div>
</div>
</div>
<!-- ====== BRANCH 6: Data Sovereignty ====== -->
<!-- ====== BRANCH 6: Fundraising & Commerce ====== -->
<div class="branch branch-fundraising" data-branch="fundraising">
<div class="branch-header reveal">
<div class="branch-icon fundraising">&#x1F4B3;</div>
<div class="branch-title">
<h3>Fundraising &amp; Commerce</h3>
<p>Donations, subscriptions, product sales, and supporter monetization</p>
</div>
</div>
<div class="nodes-grid stagger">
<div class="feature-node">
<div class="node-header">
<div class="node-icon">&#x1F4B0;</div>
<h4>Donation Platform</h4>
</div>
<p>Accept one-time donations with configurable suggested amounts, anonymous giving, and automatic tax receipts via email.</p>
<div class="node-tags"><span class="node-tag">Stripe</span><span class="node-tag">Anonymous</span><span class="node-tag">Receipts</span></div>
</div>
<div class="feature-node">
<div class="node-header">
<div class="node-icon">&#x1F504;</div>
<h4>Subscription Plans</h4>
</div>
<p>Recurring revenue with tiered plans, monthly and yearly billing, and automatic renewal management. Replace Patreon.</p>
<div class="node-tags"><span class="node-tag">Recurring</span><span class="node-tag">Tiers</span><span class="node-tag">MRR tracking</span></div>
</div>
<div class="feature-node">
<div class="node-header">
<div class="node-icon">&#x1F6D2;</div>
<h4>Product Shop</h4>
</div>
<p>Sell digital products, event tickets, and merchandise. Inventory management, download delivery, and capacity limits.</p>
<div class="node-tags"><span class="node-tag">Digital goods</span><span class="node-tag">Events</span><span class="node-tag">Inventory</span></div>
</div>
<div class="feature-node">
<div class="node-header">
<div class="node-icon">&#x1F4CA;</div>
<h4>Payment Dashboard</h4>
</div>
<p>Revenue analytics with subscriber counts, MRR tracking, donation history, and CSV exports for accounting.</p>
<div class="node-tags"><span class="node-tag">Analytics</span><span class="node-tag">CSV export</span><span class="node-tag">Refunds</span></div>
</div>
<div class="feature-node">
<div class="node-header">
<div class="node-icon">&#x1F4E2;</div>
<h4>Gallery Ads</h4>
</div>
<p>Promote donations, products, and subscriptions within the media gallery. Visibility targeting, scheduling, and click analytics.</p>
<div class="node-tags"><span class="node-tag">Targeting</span><span class="node-tag">Scheduling</span><span class="node-tag">CTR tracking</span></div>
</div>
</div>
</div>
<!-- ====== BRANCH 7: Data Sovereignty ====== -->
<div class="branch branch-sovereignty" data-branch="sovereignty">
<div class="branch-header reveal">
<div class="branch-icon sovereignty">&#x1F1E8;&#x1F1E6;</div>
@@ -2149,7 +2239,7 @@
<div class="price">$0</div>
<div class="price-period">forever</div>
<ul class="pricing-features">
<li>All 26 campaign tools</li>
<li>All 30+ campaign tools</li>
<li>Unlimited users &amp; data</li>
<li>Complete documentation</li>
<li>Community support</li>
@@ -2592,6 +2682,7 @@
{ sel: '.branch[data-branch="content"]',headerSel: '.branch[data-branch="content"] .branch-header',cardSel: '.feature-node', color: '#FB923C', angle: -0.22 },
{ sel: '.branch[data-branch="data"]', headerSel: '.branch[data-branch="data"] .branch-header', cardSel: '.feature-node', color: '#22D3EE', angle: 0.22 },
{ sel: '.branch[data-branch="devops"]', headerSel: '.branch[data-branch="devops"] .branch-header', cardSel: '.feature-node', color: '#FBBF24', angle: -0.08 },
{ sel: '.branch[data-branch="fundraising"]', headerSel: '.branch[data-branch="fundraising"] .branch-header', cardSel: '.feature-node', color: '#EC4899', angle: 0.18 },
{ sel: '.branch[data-branch="sovereignty"]', headerSel: '.branch[data-branch="sovereignty"] .branch-header', cardSel: '.feature-node', color: '#F87171', angle: 0.08 },
{ sel: '.live-sites', headerSel: '.live-sites .section-header', cardSel: '.site-card', color: '#8B5CF6', angle: -0.12 },
{ sel: '#pricing', headerSel: '#pricing .section-header', cardSel: '.pricing-card, .cost-compare', color: '#C084FC', angle: 0.12 },