diff --git a/LANDING_PAGE_DEVELOPMENT_PLAN.md b/LANDING_PAGE_DEVELOPMENT_PLAN.md new file mode 100644 index 0000000..53a176a --- /dev/null +++ b/LANDING_PAGE_DEVELOPMENT_PLAN.md @@ -0,0 +1,300 @@ +# Changemaker Lite Landing Page Development Plan +*UPDATED: Grid-Optimized Media Integration Strategy* + +## Executive Summary +We've revolutionized the Changemaker Lite landing page with an Alibaba-style grid system that maximizes screen real estate while aggressively promoting our self-hosting message: **"This Site Runs On Changemaker Lite."** The page is now a living proof-of-concept that converts visitors through demonstration, not just explanation. + +## πŸš€ SELF-HOSTING HYPE STRATEGY +**Core Message:** "The Infrastructure That Runs Itself" + +### Primary Positioning: +- **"🀯 This Site Runs On Changemaker Lite"** - Meta-badge visible throughout +- **Live Proof Points** - Show actual BNKops infrastructure running on the same hardware +- **Real Savings Data** - Our actual $13,800/year savings vs corporate SaaS +- **Zero Corporate Dependencies** - Emphasize complete digital liberation + +### Proof-of-Concept Integration: +1. **Meta-Validation** - Every page element proves the platform works +2. **Behind-the-Scenes Access** - Video demos of actual running services +3. **Real Stats Display** - Live subscriber counts, uptime metrics, cost savings +4. **Transparent Operations** - Show the actual $200 hardware running everything + +## 🎯 GRID SYSTEM ARCHITECTURE +**Maximum Screen Real Estate - Alibaba Style** + +### Grid Layout Principles: +- **Tight Spacing** - 0.5rem base gaps for content density +- **Modular Cards** - Every element in contained, hover-interactive cards +- **Responsive Scaling** - 4-column desktop β†’ 2-column tablet β†’ 1-column mobile +- **Information Hierarchy** - Color-coded importance levels + +### Section Structure: +1. **Hero Grid** - 2x2 layout: Main message + Video + Stats + Trust indicators +2. **Proof Grid** - 4-card layout showing live infrastructure +3. **Hardware Grid** - 3-option purchase matrix +4. **Services Grid** - Tight showcase of all 11 included services + +## πŸ“Ή MEDIA INTEGRATION STRATEGY + +### Video Content Requirements: + +#### 1. HERO VIDEO: "See Changemaker Lite In Action" (3:00) +**Script Outline:** +``` +[0:00-0:15] HOOK: "What you're looking at right now is running on $200 hardware" +[0:15-0:45] TERMINAL DEMO: docker compose ps, service URLs, real data +[0:45-1:30] DASHBOARD TOUR: Homepage overview, all 11 services working +[1:30-2:15] BACKEND ACCESS: NocoDB, Listmonk, email campaigns +[2:15-2:45] COST COMPARISON: Corporate bills vs our $50/month +[2:45-3:00] CTA: "Get the same setup for $200" +``` + +#### 2. BACKEND DEMO: "Homepage Dashboard Tour" (1:30) +**Script Outline:** +``` +[0:00-0:20] Homepage overview - all services green status +[0:20-0:50] Click through key services (NocoDB, Listmonk, Gitea) +[0:50-1:10] Show actual data - newsletters, databases, code repos +[1:10-1:30] "This is what you get out of the box" +``` + +#### 3. SETUP DEMO: "30-Minute Time-lapse" (5:23) +**Script Outline:** +``` +[0:00-0:30] Unboxing hardware, connection setup +[0:30-2:00] Initial boot, docker compose deployment +[2:00-3:30] Service configuration, domain setup +[3:30-4:30] Testing all services, sending first email +[4:30-5:23] Final dashboard tour, "You're live!" +``` + +#### 4. COST BREAKDOWN: "Corporate vs Changemaker" (2:00) +**Script Outline:** +``` +[0:00-0:30] Show typical SaaS stack bills ($1,200/mo) +[0:30-1:00] Break down each service cost vs Changemaker equivalent +[1:00-1:30] Annual savings calculation ($13,800) +[1:30-2:00] "Money for organizing, not shareholders" +``` + +### Video Production Specs: +- **Resolution:** 1920x1080 minimum, 4K preferred for hero video +- **Format:** MP4 with H.264 encoding +- **Length:** Keep under 3 minutes for engagement +- **Captions:** Required for accessibility +- **Hosting:** Self-hosted on Changemaker Lite (of course!) + +## 🎨 VISUAL DESIGN UPDATES + +### Grid-Optimized Elements: +- **Micro-interactions** - Card hovers, button states, loading animations +- **Progressive Enhancement** - Mobile-first, desktop-enhanced +- **Performance Focus** - Lazy loading, optimized assets, minimal JS +- **Brand Consistency** - Trans flag colors throughout + +### Component Library: +1. **Grid Cards** - Standardized containers with consistent padding +2. **Video Placeholders** - Interactive preview states with play buttons +3. **Stat Displays** - Animated counters with real data integration +4. **CTA Buttons** - Primary/secondary hierarchy with hover effects + +## πŸ’° CONVERSION OPTIMIZATION + +### Three-Path Strategy: +1. **Plug & Play ($200)** - Recommended, ships in 5 days +2. **DIY Install (Free)** - Technical users, community support +3. **Managed Hosting ($150/mo)** - Hands-off but still your infrastructure + +### Conversion Elements: +- **Social Proof** - "Powers BNKops.com" trust indicators +- **Urgency** - "Ships in 5 days" immediacy +- **Risk Reduction** - "30-minute setup" simplicity promise +- **Value Demonstration** - Live cost savings calculator + +## 🎭 CONTENT PERSONALITY + +### Voice & Tone: +- **Confident Revolutionary** - "We're not just selling it - we're living it" +- **Technical Transparency** - Show the actual infrastructure +- **Community-Focused** - "Trans liberation tech" +- **Anti-Corporate** - "Zero surveillance" messaging + +### Key Phrases: +- "The Infrastructure That Runs Itself" +- "What You're Looking At Right Now" +- "Money for organizing, not shareholders" +- "Your data, your power, your movement" +- "Digital liberation movement" + +## πŸ“Š SUCCESS METRICS + +### Primary KPIs: +1. **Hardware Orders** - Track $200 package conversions +2. **Installation Attempts** - DIY guide engagement +3. **Video Completion Rates** - Media effectiveness +4. **Time on Page** - Grid layout engagement + +### Secondary Metrics: +1. **Self-hosting Message Retention** - Post-visit surveys +2. **Social Shares** - Viral potential tracking +3. **Return Visits** - Community building indicator +4. **Email Signups** - Newsletter conversion funnel + +## 🚧 TECHNICAL IMPLEMENTATION + +### Completed Updates: +1. βœ… **Grid-optimized CSS** - Alibaba-style layout system +2. βœ… **Self-hosting badges** - Meta-validation throughout +3. βœ… **Grid HTML structure** - Maximum screen real estate utilization +4. βœ… **Video placeholder integration** - Ready for content production + +### Next Phase: +1. πŸ“Ή **Video Production** - Execute scripted content strategy +2. πŸ“Š **Analytics Setup** - Privacy-respecting conversion tracking +3. πŸ§ͺ **A/B Testing Framework** - Message optimization capability +4. πŸš€ **Performance Optimization** - Mobile loading improvements + +### Performance Targets: +- **Load Time:** <2 seconds on 3G +- **Mobile Score:** >90 Lighthouse +- **Accessibility:** AA WCAG compliance +- **SEO:** Structured data, meta optimization + +## 🎬 VIDEO PRODUCTION ROADMAP + +### Phase 1: Hero Content (Priority 1) +1. **"See Changemaker Lite In Action" (3:00)** - Main conversion driver +2. **"30-Minute Setup Time-lapse" (5:23)** - Risk reduction + +### Phase 2: Proof Content (Priority 2) +3. **"Homepage Dashboard Tour" (1:30)** - Technical demonstration +4. **"Corporate vs Changemaker Costs" (2:00)** - Value proposition + +### Phase 3: Advanced Content (Priority 3) +5. **"Behind the Scenes: How BNKops Runs" (4:00)** - Advanced proof +6. **"Community Testimonials" (2:30)** - Social proof compilation + +### Production Requirements: +- **Screen Recording:** OBS Studio with 1080p60 capture +- **Hardware Demo:** Good lighting, stable camera setup +- **Audio:** Clear narration, background music optional +- **Editing:** Simple cuts, captions, brand consistency +- **Hosting:** Self-hosted on Changemaker Lite infrastructure + +## πŸ“ˆ CONVERSION FUNNEL OPTIMIZATION + +### Landing Paths: +1. **Curious Visitor** β†’ Video Demo β†’ Understanding β†’ Newsletter Signup +2. **Ready Buyer** β†’ "Order Hardware" β†’ Immediate conversion +3. **DIY Techie** β†’ Installation Guide β†’ Community Engagement +4. **Managed Solution** β†’ Hosting Inquiry β†’ Sales Process + +### Optimization Priorities: +1. **Video Completion Rates** - Shorter, punchier content +2. **Hardware Order Flow** - Streamlined purchase process +3. **Newsletter Value** - Immediate PDF guides/resources +4. **Mobile Experience** - Touch-optimized interactions + +## 🎯 IMMEDIATE ACTION ITEMS + +### This Week: +1. **Video Script Finalization** - Get all 4 core scripts approved +2. **Screen Recording Setup** - Prepare clean demo environment +3. **Analytics Integration** - Privacy-respecting tracking setup +4. **Mobile Testing** - Cross-device grid layout verification + +### Next Week: +1. **Hero Video Production** - Priority 1 content creation +2. **Setup Demo Recording** - Time-lapse capture +3. **Performance Audit** - Loading speed optimization +4. **A/B Testing Framework** - Message variation testing + +### Month 1: +1. **Full Video Suite** - All 6 videos produced and integrated +2. **Conversion Optimization** - Data-driven improvements +3. **Community Feedback** - User testing and iteration +4. **SEO Enhancement** - Search visibility improvements + +## πŸ† SUCCESS DEFINITION + +### Quantitative Goals: +- **50% video completion rate** for hero video +- **15% conversion rate** from visitor to newsletter signup +- **10% hardware order rate** from engaged visitors +- **<2 second load time** on mobile devices + +### Qualitative Goals: +- **"I get it now"** - Clear self-hosting value proposition +- **"This looks professional"** - Trust and credibility establishment +- **"I want this"** - Emotional connection to digital sovereignty +- **"It's actually simple"** - Technical barrier reduction + +--- + +**THE LANDING PAGE IS NOW A LIVING PROOF THAT CHANGEMAKER LITE WORKS. EVERY VISITOR SEES EXACTLY WHAT THEY'LL GET - BECAUSE THEY'RE LOOKING AT IT.** + +## πŸ“Ή FUTURE MEDIA INTEGRATION + +### Video Content to Add Later: + +#### 1. HERO VIDEO: "The FOSS Campaign Revolution" (2:30) +**Location:** Hero grid section +**Script Outline:** +``` +[0:00-0:15] HOOK: "Stop paying $1,200/month for campaign tech" +[0:15-0:45] PROBLEM: Show corporate SaaS bills, vendor lock-in +[0:45-1:30] SOLUTION: Changemaker Lite demo - all services running +[1:30-2:00] PROOF: Real campaigns using it, cost savings +[2:00-2:30] CTA: "Join the digital liberation movement" +``` + +#### 2. SERVICE DEMOS: Individual Tool Showcases (0:30 each) +**Location:** Service cards in solution grid +- **Listmonk Demo:** Email campaign creation +- **NocoDB Demo:** Voter database management +- **Chatwoot Demo:** Text banking in action +- **n8n Demo:** Automation workflows + +#### 3. COMPARISON VIDEO: "Corporate vs FOSS" (1:30) +**Location:** Comparison grid section +**Content:** Side-by-side comparison of costs, features, data ownership + +#### 4. SETUP WALKTHROUGH: "From Box to Campaign" (5:00) +**Location:** Get started section +**Content:** Complete setup process time-lapse + +### Screenshot Requirements: +- Dashboard overview showing all services +- Individual service interfaces +- Cost comparison charts +- Hardware photos (unboxing, setup) +- Real campaign examples (anonymized) + +### Animation Enhancements: +- Service icon animations (already implemented) +- Interactive comparison table +- Live visitor counter +- Real-time savings calculator + +## 🎯 COMPLETED UPDATES + +### Page Focus: +βœ… **Repositioned as FOSS political campaign solution** +βœ… **Removed video placeholders for cleaner grid** +βœ… **Added comparison with corporate alternatives** +βœ… **Emphasized cost savings and data ownership** + +### Design Implementation: +βœ… **Ultra-tight grid system (Alibaba-style)** +βœ… **Neon animations with trans flag colors** +βœ… **Smooth scroll and parallax effects** +βœ… **Responsive grid that reflows perfectly** +βœ… **Stagger animations on scroll** +βœ… **Interactive hover states** + +### Content Strategy: +βœ… **Clear problem/solution messaging** +βœ… **Service-by-service breakdown** +βœ… **Direct corporate alternative comparisons** +βœ… **Three-tier pricing strategy** +βœ… **Trust indicators and social proof** diff --git a/README.md b/README.md index 63dd223..d2b2a44 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ Changemaker Lite is a streamlined documentation and development platform featuri ```bash # Clone the repository -git clone https://gitea.bnkops.com/admin/Changemaker.git +git clone https://gitea.bnkops.com/admin/changemaker.lite cd changemaker.lite # Configure environment (creates .env file) diff --git a/mkdocs/.cache/plugin/social/09bbbc93a961c0990fa7e3217673978f.png b/mkdocs/.cache/plugin/social/09bbbc93a961c0990fa7e3217673978f.png new file mode 100644 index 0000000..3bec336 Binary files /dev/null and b/mkdocs/.cache/plugin/social/09bbbc93a961c0990fa7e3217673978f.png differ diff --git a/mkdocs/.cache/plugin/social/2030a47afa1104093ebf519a6f22a7d1.png b/mkdocs/.cache/plugin/social/2030a47afa1104093ebf519a6f22a7d1.png new file mode 100644 index 0000000..b00e9d9 Binary files /dev/null and b/mkdocs/.cache/plugin/social/2030a47afa1104093ebf519a6f22a7d1.png differ diff --git a/mkdocs/.cache/plugin/social/2ebef08d3656ba930098da817110716f.png b/mkdocs/.cache/plugin/social/2ebef08d3656ba930098da817110716f.png new file mode 100644 index 0000000..2a8927b Binary files /dev/null and b/mkdocs/.cache/plugin/social/2ebef08d3656ba930098da817110716f.png differ diff --git a/mkdocs/.cache/plugin/social/361e599f2484bc4c4e5e1bf247f2da41.png b/mkdocs/.cache/plugin/social/361e599f2484bc4c4e5e1bf247f2da41.png new file mode 100644 index 0000000..0e645bf Binary files /dev/null and b/mkdocs/.cache/plugin/social/361e599f2484bc4c4e5e1bf247f2da41.png differ diff --git a/mkdocs/.cache/plugin/social/3df345a41836bfa1f24aa074839aff71.png b/mkdocs/.cache/plugin/social/3df345a41836bfa1f24aa074839aff71.png new file mode 100644 index 0000000..f62f0a0 Binary files /dev/null and b/mkdocs/.cache/plugin/social/3df345a41836bfa1f24aa074839aff71.png differ diff --git a/mkdocs/.cache/plugin/social/440935fb98e7e27d2e2cfdc0bbbdc6ae.png b/mkdocs/.cache/plugin/social/440935fb98e7e27d2e2cfdc0bbbdc6ae.png new file mode 100644 index 0000000..cce4739 Binary files /dev/null and b/mkdocs/.cache/plugin/social/440935fb98e7e27d2e2cfdc0bbbdc6ae.png differ diff --git a/mkdocs/.cache/plugin/social/461dbf70704556ebdba00d9b93fdd71a.png b/mkdocs/.cache/plugin/social/461dbf70704556ebdba00d9b93fdd71a.png new file mode 100644 index 0000000..8c9d2bc Binary files /dev/null and b/mkdocs/.cache/plugin/social/461dbf70704556ebdba00d9b93fdd71a.png differ diff --git a/mkdocs/.cache/plugin/social/59775a558e0236f880c9401534507ab3.png b/mkdocs/.cache/plugin/social/59775a558e0236f880c9401534507ab3.png new file mode 100644 index 0000000..7121640 Binary files /dev/null and b/mkdocs/.cache/plugin/social/59775a558e0236f880c9401534507ab3.png differ diff --git a/mkdocs/.cache/plugin/social/5c8323641288ce96dac5e5d0c03d1d88.png b/mkdocs/.cache/plugin/social/5c8323641288ce96dac5e5d0c03d1d88.png new file mode 100644 index 0000000..d3f2f01 Binary files /dev/null and b/mkdocs/.cache/plugin/social/5c8323641288ce96dac5e5d0c03d1d88.png differ diff --git a/mkdocs/.cache/plugin/social/5dc82dd4549191e7484d163c2916414e.png b/mkdocs/.cache/plugin/social/5dc82dd4549191e7484d163c2916414e.png new file mode 100644 index 0000000..340b120 Binary files /dev/null and b/mkdocs/.cache/plugin/social/5dc82dd4549191e7484d163c2916414e.png differ diff --git a/mkdocs/.cache/plugin/social/63fe0d7764ab46b6b1a896c92f5f08ad.png b/mkdocs/.cache/plugin/social/63fe0d7764ab46b6b1a896c92f5f08ad.png new file mode 100644 index 0000000..de606a1 Binary files /dev/null and b/mkdocs/.cache/plugin/social/63fe0d7764ab46b6b1a896c92f5f08ad.png differ diff --git a/mkdocs/.cache/plugin/social/6e0a466e141c6410aa3b931db727ad5a.png b/mkdocs/.cache/plugin/social/6e0a466e141c6410aa3b931db727ad5a.png new file mode 100644 index 0000000..98db777 Binary files /dev/null and b/mkdocs/.cache/plugin/social/6e0a466e141c6410aa3b931db727ad5a.png differ diff --git a/mkdocs/.cache/plugin/social/7339eda49b6ad5cd292f8762fe09c799.png b/mkdocs/.cache/plugin/social/7339eda49b6ad5cd292f8762fe09c799.png new file mode 100644 index 0000000..3a4518e Binary files /dev/null and b/mkdocs/.cache/plugin/social/7339eda49b6ad5cd292f8762fe09c799.png differ diff --git a/mkdocs/.cache/plugin/social/7b06061b4b9b4a82384b4b9cf809471d.png b/mkdocs/.cache/plugin/social/7b06061b4b9b4a82384b4b9cf809471d.png new file mode 100644 index 0000000..1a165eb Binary files /dev/null and b/mkdocs/.cache/plugin/social/7b06061b4b9b4a82384b4b9cf809471d.png differ diff --git a/mkdocs/.cache/plugin/social/7cc7e1ec8732cd69b83aa549bfb13cc3.png b/mkdocs/.cache/plugin/social/7cc7e1ec8732cd69b83aa549bfb13cc3.png new file mode 100644 index 0000000..6c00bdf Binary files /dev/null and b/mkdocs/.cache/plugin/social/7cc7e1ec8732cd69b83aa549bfb13cc3.png differ diff --git a/mkdocs/.cache/plugin/social/89cb9170565057569d85b76ef729d173.png b/mkdocs/.cache/plugin/social/89cb9170565057569d85b76ef729d173.png new file mode 100644 index 0000000..2762632 Binary files /dev/null and b/mkdocs/.cache/plugin/social/89cb9170565057569d85b76ef729d173.png differ diff --git a/mkdocs/.cache/plugin/social/8b4d2b2992e85f6cc7dcfc9a7eb7c502.png b/mkdocs/.cache/plugin/social/8b4d2b2992e85f6cc7dcfc9a7eb7c502.png new file mode 100644 index 0000000..11040cd Binary files /dev/null and b/mkdocs/.cache/plugin/social/8b4d2b2992e85f6cc7dcfc9a7eb7c502.png differ diff --git a/mkdocs/.cache/plugin/social/8e08f754f4d8c04a82391ae575aafaaa.png b/mkdocs/.cache/plugin/social/8e08f754f4d8c04a82391ae575aafaaa.png new file mode 100644 index 0000000..f84a58e Binary files /dev/null and b/mkdocs/.cache/plugin/social/8e08f754f4d8c04a82391ae575aafaaa.png differ diff --git a/mkdocs/.cache/plugin/social/9ce7dbc001bbf6d2aac4483d3c682a9b.png b/mkdocs/.cache/plugin/social/9ce7dbc001bbf6d2aac4483d3c682a9b.png new file mode 100644 index 0000000..f14d6ca Binary files /dev/null and b/mkdocs/.cache/plugin/social/9ce7dbc001bbf6d2aac4483d3c682a9b.png differ diff --git a/mkdocs/.cache/plugin/social/9d5df4651afceab422984c33bfbdc9ed.png b/mkdocs/.cache/plugin/social/9d5df4651afceab422984c33bfbdc9ed.png new file mode 100644 index 0000000..1c05739 Binary files /dev/null and b/mkdocs/.cache/plugin/social/9d5df4651afceab422984c33bfbdc9ed.png differ diff --git a/mkdocs/.cache/plugin/social/a2ad821d050eaeab17c1c5cc13a3277c.png b/mkdocs/.cache/plugin/social/a2ad821d050eaeab17c1c5cc13a3277c.png new file mode 100644 index 0000000..63c7038 Binary files /dev/null and b/mkdocs/.cache/plugin/social/a2ad821d050eaeab17c1c5cc13a3277c.png differ diff --git a/mkdocs/.cache/plugin/social/a33fe3375450956515c8b6a627d12fd1.png b/mkdocs/.cache/plugin/social/a33fe3375450956515c8b6a627d12fd1.png new file mode 100644 index 0000000..c6336a5 Binary files /dev/null and b/mkdocs/.cache/plugin/social/a33fe3375450956515c8b6a627d12fd1.png differ diff --git a/mkdocs/.cache/plugin/social/b3b12e8c71c3f991609d278875d5ca18.png b/mkdocs/.cache/plugin/social/b3b12e8c71c3f991609d278875d5ca18.png new file mode 100644 index 0000000..e5a8891 Binary files /dev/null and b/mkdocs/.cache/plugin/social/b3b12e8c71c3f991609d278875d5ca18.png differ diff --git a/mkdocs/.cache/plugin/social/c502f7e3a2048dd87b10fa6ff5291aab.png b/mkdocs/.cache/plugin/social/c502f7e3a2048dd87b10fa6ff5291aab.png new file mode 100644 index 0000000..0596860 Binary files /dev/null and b/mkdocs/.cache/plugin/social/c502f7e3a2048dd87b10fa6ff5291aab.png differ diff --git a/mkdocs/.cache/plugin/social/cb389f13acf697cb6aa15c98fec4a25a.png b/mkdocs/.cache/plugin/social/cb389f13acf697cb6aa15c98fec4a25a.png new file mode 100644 index 0000000..ffcc330 Binary files /dev/null and b/mkdocs/.cache/plugin/social/cb389f13acf697cb6aa15c98fec4a25a.png differ diff --git a/mkdocs/.cache/plugin/social/fbe77cdbcef871b9d78306f1c9bdce51.png b/mkdocs/.cache/plugin/social/fbe77cdbcef871b9d78306f1c9bdce51.png new file mode 100644 index 0000000..1dbabe1 Binary files /dev/null and b/mkdocs/.cache/plugin/social/fbe77cdbcef871b9d78306f1c9bdce51.png differ diff --git a/mkdocs/.cache/plugin/social/fd4de0e14e62b2216135775537405340.png b/mkdocs/.cache/plugin/social/fd4de0e14e62b2216135775537405340.png new file mode 100644 index 0000000..8697881 Binary files /dev/null and b/mkdocs/.cache/plugin/social/fd4de0e14e62b2216135775537405340.png differ diff --git a/mkdocs/.cache/plugin/social/fonts/Inter/18pt Black Italic.ttf b/mkdocs/.cache/plugin/social/fonts/Inter/18pt Black Italic.ttf new file mode 100644 index 0000000..b33602f Binary files /dev/null and b/mkdocs/.cache/plugin/social/fonts/Inter/18pt Black Italic.ttf differ diff --git a/mkdocs/.cache/plugin/social/fonts/Inter/18pt Black.ttf b/mkdocs/.cache/plugin/social/fonts/Inter/18pt Black.ttf new file mode 100644 index 0000000..89673de Binary files /dev/null and b/mkdocs/.cache/plugin/social/fonts/Inter/18pt Black.ttf differ diff --git a/mkdocs/.cache/plugin/social/fonts/Inter/18pt Bold Italic.ttf b/mkdocs/.cache/plugin/social/fonts/Inter/18pt Bold Italic.ttf new file mode 100644 index 0000000..0d19c1a Binary files /dev/null and b/mkdocs/.cache/plugin/social/fonts/Inter/18pt Bold Italic.ttf differ diff --git a/mkdocs/.cache/plugin/social/fonts/Inter/18pt Bold.ttf b/mkdocs/.cache/plugin/social/fonts/Inter/18pt Bold.ttf new file mode 100644 index 0000000..cd13f60 Binary files /dev/null and b/mkdocs/.cache/plugin/social/fonts/Inter/18pt Bold.ttf differ diff --git a/mkdocs/.cache/plugin/social/fonts/Inter/18pt ExtraBold Italic.ttf b/mkdocs/.cache/plugin/social/fonts/Inter/18pt ExtraBold Italic.ttf new file mode 100644 index 0000000..df45062 Binary files /dev/null and b/mkdocs/.cache/plugin/social/fonts/Inter/18pt ExtraBold Italic.ttf differ diff --git a/mkdocs/.cache/plugin/social/fonts/Inter/18pt ExtraBold.ttf b/mkdocs/.cache/plugin/social/fonts/Inter/18pt ExtraBold.ttf new file mode 100644 index 0000000..e71c601 Binary files /dev/null and b/mkdocs/.cache/plugin/social/fonts/Inter/18pt ExtraBold.ttf differ diff --git a/mkdocs/.cache/plugin/social/fonts/Inter/18pt ExtraLight Italic.ttf b/mkdocs/.cache/plugin/social/fonts/Inter/18pt ExtraLight Italic.ttf new file mode 100644 index 0000000..275f305 Binary files /dev/null and b/mkdocs/.cache/plugin/social/fonts/Inter/18pt ExtraLight Italic.ttf differ diff --git a/mkdocs/.cache/plugin/social/fonts/Inter/18pt ExtraLight.ttf b/mkdocs/.cache/plugin/social/fonts/Inter/18pt ExtraLight.ttf new file mode 100644 index 0000000..f9c6cfc Binary files /dev/null and b/mkdocs/.cache/plugin/social/fonts/Inter/18pt ExtraLight.ttf differ diff --git a/mkdocs/.cache/plugin/social/fonts/Inter/18pt Italic.ttf b/mkdocs/.cache/plugin/social/fonts/Inter/18pt Italic.ttf new file mode 100644 index 0000000..14d3595 Binary files /dev/null and b/mkdocs/.cache/plugin/social/fonts/Inter/18pt Italic.ttf differ diff --git a/mkdocs/.cache/plugin/social/fonts/Inter/18pt Light Italic.ttf b/mkdocs/.cache/plugin/social/fonts/Inter/18pt Light Italic.ttf new file mode 100644 index 0000000..f69e18b Binary files /dev/null and b/mkdocs/.cache/plugin/social/fonts/Inter/18pt Light Italic.ttf differ diff --git a/mkdocs/.cache/plugin/social/fonts/Inter/18pt Light.ttf b/mkdocs/.cache/plugin/social/fonts/Inter/18pt Light.ttf new file mode 100644 index 0000000..acae361 Binary files /dev/null and b/mkdocs/.cache/plugin/social/fonts/Inter/18pt Light.ttf differ diff --git a/mkdocs/.cache/plugin/social/fonts/Inter/18pt Medium Italic.ttf b/mkdocs/.cache/plugin/social/fonts/Inter/18pt Medium Italic.ttf new file mode 100644 index 0000000..5c8c8b1 Binary files /dev/null and b/mkdocs/.cache/plugin/social/fonts/Inter/18pt Medium Italic.ttf differ diff --git a/mkdocs/.cache/plugin/social/fonts/Inter/18pt Medium.ttf b/mkdocs/.cache/plugin/social/fonts/Inter/18pt Medium.ttf new file mode 100644 index 0000000..71d9017 Binary files /dev/null and b/mkdocs/.cache/plugin/social/fonts/Inter/18pt Medium.ttf differ diff --git a/mkdocs/.cache/plugin/social/fonts/Inter/18pt Regular.ttf b/mkdocs/.cache/plugin/social/fonts/Inter/18pt Regular.ttf new file mode 100644 index 0000000..ce097c8 Binary files /dev/null and b/mkdocs/.cache/plugin/social/fonts/Inter/18pt Regular.ttf differ diff --git a/mkdocs/.cache/plugin/social/fonts/Inter/18pt SemiBold Italic.ttf b/mkdocs/.cache/plugin/social/fonts/Inter/18pt SemiBold Italic.ttf new file mode 100644 index 0000000..d9c9896 Binary files /dev/null and b/mkdocs/.cache/plugin/social/fonts/Inter/18pt SemiBold Italic.ttf differ diff --git a/mkdocs/.cache/plugin/social/fonts/Inter/18pt SemiBold.ttf b/mkdocs/.cache/plugin/social/fonts/Inter/18pt SemiBold.ttf new file mode 100644 index 0000000..053185e Binary files /dev/null and b/mkdocs/.cache/plugin/social/fonts/Inter/18pt SemiBold.ttf differ diff --git a/mkdocs/.cache/plugin/social/fonts/Inter/18pt Thin Italic.ttf b/mkdocs/.cache/plugin/social/fonts/Inter/18pt Thin Italic.ttf new file mode 100644 index 0000000..134e837 Binary files /dev/null and b/mkdocs/.cache/plugin/social/fonts/Inter/18pt Thin Italic.ttf differ diff --git a/mkdocs/.cache/plugin/social/fonts/Inter/18pt Thin.ttf b/mkdocs/.cache/plugin/social/fonts/Inter/18pt Thin.ttf new file mode 100644 index 0000000..e68ec47 Binary files /dev/null and b/mkdocs/.cache/plugin/social/fonts/Inter/18pt Thin.ttf differ diff --git a/mkdocs/.cache/plugin/social/fonts/Inter/24pt Black Italic.ttf b/mkdocs/.cache/plugin/social/fonts/Inter/24pt Black Italic.ttf new file mode 100644 index 0000000..b89d61c Binary files /dev/null and b/mkdocs/.cache/plugin/social/fonts/Inter/24pt Black Italic.ttf differ diff --git a/mkdocs/.cache/plugin/social/fonts/Inter/24pt Black.ttf b/mkdocs/.cache/plugin/social/fonts/Inter/24pt Black.ttf new file mode 100644 index 0000000..dbb1b3b Binary files /dev/null and b/mkdocs/.cache/plugin/social/fonts/Inter/24pt Black.ttf differ diff --git a/mkdocs/.cache/plugin/social/fonts/Inter/24pt Bold Italic.ttf b/mkdocs/.cache/plugin/social/fonts/Inter/24pt Bold Italic.ttf new file mode 100644 index 0000000..d1c0f53 Binary files /dev/null and b/mkdocs/.cache/plugin/social/fonts/Inter/24pt Bold Italic.ttf differ diff --git a/mkdocs/.cache/plugin/social/fonts/Inter/24pt Bold.ttf b/mkdocs/.cache/plugin/social/fonts/Inter/24pt Bold.ttf new file mode 100644 index 0000000..46b3583 Binary files /dev/null and b/mkdocs/.cache/plugin/social/fonts/Inter/24pt Bold.ttf differ diff --git a/mkdocs/.cache/plugin/social/fonts/Inter/24pt ExtraBold Italic.ttf b/mkdocs/.cache/plugin/social/fonts/Inter/24pt ExtraBold Italic.ttf new file mode 100644 index 0000000..3461a92 Binary files /dev/null and b/mkdocs/.cache/plugin/social/fonts/Inter/24pt ExtraBold Italic.ttf differ diff --git a/mkdocs/.cache/plugin/social/fonts/Inter/24pt ExtraBold.ttf b/mkdocs/.cache/plugin/social/fonts/Inter/24pt ExtraBold.ttf new file mode 100644 index 0000000..b775c08 Binary files /dev/null and b/mkdocs/.cache/plugin/social/fonts/Inter/24pt ExtraBold.ttf differ diff --git a/mkdocs/.cache/plugin/social/fonts/Inter/24pt ExtraLight Italic.ttf b/mkdocs/.cache/plugin/social/fonts/Inter/24pt ExtraLight Italic.ttf new file mode 100644 index 0000000..c634a5d Binary files /dev/null and b/mkdocs/.cache/plugin/social/fonts/Inter/24pt ExtraLight Italic.ttf differ diff --git a/mkdocs/.cache/plugin/social/fonts/Inter/24pt ExtraLight.ttf b/mkdocs/.cache/plugin/social/fonts/Inter/24pt ExtraLight.ttf new file mode 100644 index 0000000..2ec6ca3 Binary files /dev/null and b/mkdocs/.cache/plugin/social/fonts/Inter/24pt ExtraLight.ttf differ diff --git a/mkdocs/.cache/plugin/social/fonts/Inter/24pt Italic.ttf b/mkdocs/.cache/plugin/social/fonts/Inter/24pt Italic.ttf new file mode 100644 index 0000000..1048b07 Binary files /dev/null and b/mkdocs/.cache/plugin/social/fonts/Inter/24pt Italic.ttf differ diff --git a/mkdocs/.cache/plugin/social/fonts/Inter/24pt Light Italic.ttf b/mkdocs/.cache/plugin/social/fonts/Inter/24pt Light Italic.ttf new file mode 100644 index 0000000..ded5a75 Binary files /dev/null and b/mkdocs/.cache/plugin/social/fonts/Inter/24pt Light Italic.ttf differ diff --git a/mkdocs/.cache/plugin/social/fonts/Inter/24pt Light.ttf b/mkdocs/.cache/plugin/social/fonts/Inter/24pt Light.ttf new file mode 100644 index 0000000..1a2a6f2 Binary files /dev/null and b/mkdocs/.cache/plugin/social/fonts/Inter/24pt Light.ttf differ diff --git a/mkdocs/.cache/plugin/social/fonts/Inter/24pt Medium Italic.ttf b/mkdocs/.cache/plugin/social/fonts/Inter/24pt Medium Italic.ttf new file mode 100644 index 0000000..be091b1 Binary files /dev/null and b/mkdocs/.cache/plugin/social/fonts/Inter/24pt Medium Italic.ttf differ diff --git a/mkdocs/.cache/plugin/social/fonts/Inter/24pt Medium.ttf b/mkdocs/.cache/plugin/social/fonts/Inter/24pt Medium.ttf new file mode 100644 index 0000000..5c88739 Binary files /dev/null and b/mkdocs/.cache/plugin/social/fonts/Inter/24pt Medium.ttf differ diff --git a/mkdocs/.cache/plugin/social/fonts/Inter/24pt Regular.ttf b/mkdocs/.cache/plugin/social/fonts/Inter/24pt Regular.ttf new file mode 100644 index 0000000..6b088a7 Binary files /dev/null and b/mkdocs/.cache/plugin/social/fonts/Inter/24pt Regular.ttf differ diff --git a/mkdocs/.cache/plugin/social/fonts/Inter/24pt SemiBold Italic.ttf b/mkdocs/.cache/plugin/social/fonts/Inter/24pt SemiBold Italic.ttf new file mode 100644 index 0000000..6921df2 Binary files /dev/null and b/mkdocs/.cache/plugin/social/fonts/Inter/24pt SemiBold Italic.ttf differ diff --git a/mkdocs/.cache/plugin/social/fonts/Inter/24pt SemiBold.ttf b/mkdocs/.cache/plugin/social/fonts/Inter/24pt SemiBold.ttf new file mode 100644 index 0000000..ceb8576 Binary files /dev/null and b/mkdocs/.cache/plugin/social/fonts/Inter/24pt SemiBold.ttf differ diff --git a/mkdocs/.cache/plugin/social/fonts/Inter/24pt Thin Italic.ttf b/mkdocs/.cache/plugin/social/fonts/Inter/24pt Thin Italic.ttf new file mode 100644 index 0000000..a3e6feb Binary files /dev/null and b/mkdocs/.cache/plugin/social/fonts/Inter/24pt Thin Italic.ttf differ diff --git a/mkdocs/.cache/plugin/social/fonts/Inter/24pt Thin.ttf b/mkdocs/.cache/plugin/social/fonts/Inter/24pt Thin.ttf new file mode 100644 index 0000000..3505b35 Binary files /dev/null and b/mkdocs/.cache/plugin/social/fonts/Inter/24pt Thin.ttf differ diff --git a/mkdocs/.cache/plugin/social/fonts/Inter/28pt Black Italic.ttf b/mkdocs/.cache/plugin/social/fonts/Inter/28pt Black Italic.ttf new file mode 100644 index 0000000..3c8fdf9 Binary files /dev/null and b/mkdocs/.cache/plugin/social/fonts/Inter/28pt Black Italic.ttf differ diff --git a/mkdocs/.cache/plugin/social/fonts/Inter/28pt Black.ttf b/mkdocs/.cache/plugin/social/fonts/Inter/28pt Black.ttf new file mode 100644 index 0000000..66a252f Binary files /dev/null and b/mkdocs/.cache/plugin/social/fonts/Inter/28pt Black.ttf differ diff --git a/mkdocs/.cache/plugin/social/fonts/Inter/28pt Bold Italic.ttf b/mkdocs/.cache/plugin/social/fonts/Inter/28pt Bold Italic.ttf new file mode 100644 index 0000000..6fce50a Binary files /dev/null and b/mkdocs/.cache/plugin/social/fonts/Inter/28pt Bold Italic.ttf differ diff --git a/mkdocs/.cache/plugin/social/fonts/Inter/28pt Bold.ttf b/mkdocs/.cache/plugin/social/fonts/Inter/28pt Bold.ttf new file mode 100644 index 0000000..d17828b Binary files /dev/null and b/mkdocs/.cache/plugin/social/fonts/Inter/28pt Bold.ttf differ diff --git a/mkdocs/.cache/plugin/social/fonts/Inter/28pt ExtraBold Italic.ttf b/mkdocs/.cache/plugin/social/fonts/Inter/28pt ExtraBold Italic.ttf new file mode 100644 index 0000000..1a56735 Binary files /dev/null and b/mkdocs/.cache/plugin/social/fonts/Inter/28pt ExtraBold Italic.ttf differ diff --git a/mkdocs/.cache/plugin/social/fonts/Inter/28pt ExtraBold.ttf b/mkdocs/.cache/plugin/social/fonts/Inter/28pt ExtraBold.ttf new file mode 100644 index 0000000..6d87cae Binary files /dev/null and b/mkdocs/.cache/plugin/social/fonts/Inter/28pt ExtraBold.ttf differ diff --git a/mkdocs/.cache/plugin/social/fonts/Inter/28pt ExtraLight Italic.ttf b/mkdocs/.cache/plugin/social/fonts/Inter/28pt ExtraLight Italic.ttf new file mode 100644 index 0000000..90e2f20 Binary files /dev/null and b/mkdocs/.cache/plugin/social/fonts/Inter/28pt ExtraLight Italic.ttf differ diff --git a/mkdocs/.cache/plugin/social/fonts/Inter/28pt ExtraLight.ttf b/mkdocs/.cache/plugin/social/fonts/Inter/28pt ExtraLight.ttf new file mode 100644 index 0000000..d42b3f5 Binary files /dev/null and b/mkdocs/.cache/plugin/social/fonts/Inter/28pt ExtraLight.ttf differ diff --git a/mkdocs/.cache/plugin/social/fonts/Inter/28pt Italic.ttf b/mkdocs/.cache/plugin/social/fonts/Inter/28pt Italic.ttf new file mode 100644 index 0000000..c2a143a Binary files /dev/null and b/mkdocs/.cache/plugin/social/fonts/Inter/28pt Italic.ttf differ diff --git a/mkdocs/.cache/plugin/social/fonts/Inter/28pt Light Italic.ttf b/mkdocs/.cache/plugin/social/fonts/Inter/28pt Light Italic.ttf new file mode 100644 index 0000000..6b90b76 Binary files /dev/null and b/mkdocs/.cache/plugin/social/fonts/Inter/28pt Light Italic.ttf differ diff --git a/mkdocs/.cache/plugin/social/fonts/Inter/28pt Light.ttf b/mkdocs/.cache/plugin/social/fonts/Inter/28pt Light.ttf new file mode 100644 index 0000000..5eeff3a Binary files /dev/null and b/mkdocs/.cache/plugin/social/fonts/Inter/28pt Light.ttf differ diff --git a/mkdocs/.cache/plugin/social/fonts/Inter/28pt Medium Italic.ttf b/mkdocs/.cache/plugin/social/fonts/Inter/28pt Medium Italic.ttf new file mode 100644 index 0000000..7481e7b Binary files /dev/null and b/mkdocs/.cache/plugin/social/fonts/Inter/28pt Medium Italic.ttf differ diff --git a/mkdocs/.cache/plugin/social/fonts/Inter/28pt Medium.ttf b/mkdocs/.cache/plugin/social/fonts/Inter/28pt Medium.ttf new file mode 100644 index 0000000..00120fe Binary files /dev/null and b/mkdocs/.cache/plugin/social/fonts/Inter/28pt Medium.ttf differ diff --git a/mkdocs/.cache/plugin/social/fonts/Inter/28pt Regular.ttf b/mkdocs/.cache/plugin/social/fonts/Inter/28pt Regular.ttf new file mode 100644 index 0000000..855b6f4 Binary files /dev/null and b/mkdocs/.cache/plugin/social/fonts/Inter/28pt Regular.ttf differ diff --git a/mkdocs/.cache/plugin/social/fonts/Inter/28pt SemiBold Italic.ttf b/mkdocs/.cache/plugin/social/fonts/Inter/28pt SemiBold Italic.ttf new file mode 100644 index 0000000..2e22c5a Binary files /dev/null and b/mkdocs/.cache/plugin/social/fonts/Inter/28pt SemiBold Italic.ttf differ diff --git a/mkdocs/.cache/plugin/social/fonts/Inter/28pt SemiBold.ttf b/mkdocs/.cache/plugin/social/fonts/Inter/28pt SemiBold.ttf new file mode 100644 index 0000000..8b84efc Binary files /dev/null and b/mkdocs/.cache/plugin/social/fonts/Inter/28pt SemiBold.ttf differ diff --git a/mkdocs/.cache/plugin/social/fonts/Inter/28pt Thin Italic.ttf b/mkdocs/.cache/plugin/social/fonts/Inter/28pt Thin Italic.ttf new file mode 100644 index 0000000..d3d44cd Binary files /dev/null and b/mkdocs/.cache/plugin/social/fonts/Inter/28pt Thin Italic.ttf differ diff --git a/mkdocs/.cache/plugin/social/fonts/Inter/28pt Thin.ttf b/mkdocs/.cache/plugin/social/fonts/Inter/28pt Thin.ttf new file mode 100644 index 0000000..94e6108 Binary files /dev/null and b/mkdocs/.cache/plugin/social/fonts/Inter/28pt Thin.ttf differ diff --git a/mkdocs/.cache/plugin/social/fonts/Inter/Italic.ttf b/mkdocs/.cache/plugin/social/fonts/Inter/Italic.ttf new file mode 100644 index 0000000..43ed4f5 Binary files /dev/null and b/mkdocs/.cache/plugin/social/fonts/Inter/Italic.ttf differ diff --git a/mkdocs/.cache/plugin/social/fonts/Inter/Regular.ttf b/mkdocs/.cache/plugin/social/fonts/Inter/Regular.ttf new file mode 100644 index 0000000..e31b51e Binary files /dev/null and b/mkdocs/.cache/plugin/social/fonts/Inter/Regular.ttf differ diff --git a/mkdocs/docs/cost-comparison.md b/mkdocs/docs/cost-comparison.md new file mode 100644 index 0000000..2e383aa --- /dev/null +++ b/mkdocs/docs/cost-comparison.md @@ -0,0 +1,203 @@ +# Cost Comparison: Corporation vs. Community + +## The True Cost of Corporate Dependency + +When movements choose corporate software, they're not just paying subscription feesβ€”they're paying with their power, their privacy, and their future. Let's break down the real costs. + +## Monthly Cost Analysis + +### Small Campaign (50 supporters, 5,000 emails/month) + +| Service Category | Corporate Solution | Monthly Cost | Changemaker Lite | Monthly Cost | +|------------------|-------------------|--------------|------------------|--------------| +| **Email Marketing** | Mailchimp | $59/month | Listmonk | $0* | +| **Database & CRM** | Airtable Pro | $240/month | NocoDB | $0* | +| **Website Hosting** | Squarespace | $40/month | Static Server | $0* | +| **Documentation** | Notion Team | $96/month | MkDocs | $0* | +| **Development** | GitHub Codespaces | $87/month | Code Server | $0* | +| **Automation** | Zapier Professional | $73/month | n8n | $0* | +| **File Storage** | Google Workspace | $72/month | PostgreSQL + Storage | $0* | +| **Analytics** | Corporate tracking | Privacy cost† | Self-hosted | $0* | +| **TOTAL** | | **$667/month** | | **$50/month** | + +*\*Included in base Changemaker Lite hosting cost* +*†Privacy costs are incalculable but include surveillance, data sales, and community manipulation* + +--- + +### Medium Campaign (500 supporters, 50,000 emails/month) + +| Service Category | Corporate Solution | Monthly Cost | Changemaker Lite | Monthly Cost | +|------------------|-------------------|--------------|------------------|--------------| +| **Email Marketing** | Mailchimp | $299/month | Listmonk | $0* | +| **Database & CRM** | Airtable Pro | $600/month | NocoDB | $0* | +| **Website Hosting** | Squarespace | $65/month | Static Server | $0* | +| **Documentation** | Notion Team | $240/month | MkDocs | $0* | +| **Development** | GitHub Codespaces | $174/month | Code Server | $0* | +| **Automation** | Zapier Professional | $146/month | n8n | $0* | +| **File Storage** | Google Workspace | $144/month | PostgreSQL + Storage | $0* | +| **Analytics** | Corporate tracking | Privacy cost† | Self-hosted | $0* | +| **TOTAL** | | **$1,668/month** | | **$75/month** | + +--- + +### Large Campaign (5,000 supporters, 500,000 emails/month) + +| Service Category | Corporate Solution | Monthly Cost | Changemaker Lite | Monthly Cost | +|------------------|-------------------|--------------|------------------|--------------| +| **Email Marketing** | Mailchimp | $1,499/month | Listmonk | $0* | +| **Database & CRM** | Airtable Pro | $1,200/month | NocoDB | $0* | +| **Website Hosting** | Squarespace + CDN | $120/month | Static Server | $0* | +| **Documentation** | Notion Team | $480/month | MkDocs | $0* | +| **Development** | GitHub Codespaces | $348/month | Code Server | $0* | +| **Automation** | Zapier Professional | $292/month | n8n | $0* | +| **File Storage** | Google Workspace | $288/month | PostgreSQL + Storage | $0* | +| **Analytics** | Corporate tracking | Privacy cost† | Self-hosted | $0* | +| **TOTAL** | | **$4,227/month** | | **$150/month** | + +## Annual Savings Breakdown + +### 3-Year Cost Comparison + +| Campaign Size | Corporate Total | Changemaker Total | **Savings** | +|---------------|----------------|-------------------|-------------| +| **Small** | $24,012 | $1,800 | **$22,212** | +| **Medium** | $60,048 | $2,700 | **$57,348** | +| **Large** | $152,172 | $5,400 | **$146,772** | + +## Hidden Costs of Corporate Software + +### What You Can't Put a Price On + +#### Privacy Violations +- **Data Harvesting**: Every interaction monitored and stored +- **Behavioral Profiling**: Your community mapped and analyzed +- **Third-Party Sales**: Your data sold to unknown entities +- **Government Access**: Warrantless surveillance through corporate partnerships + +#### Political Manipulation +- **Algorithmic Suppression**: Your content reach artificially limited +- **Narrative Control**: Corporate interests shape what your community sees +- **Shadow Banning**: Activists systematically de-platformed +- **Counter-Intelligence**: Your strategies monitored by opposition + +#### Movement Disruption +- **Dependency Creation**: Critical infrastructure controlled by adversaries +- **Community Fragmentation**: Platforms designed to extract attention, not build power +- **Organizing Interference**: Corporate algorithms prioritize engagement over solidarity +- **Cultural Assimilation**: Movement culture shaped by corporate values + +## The Changemaker Advantage + +### What You Get for $50-150/month + +#### Complete Infrastructure +- **Email System**: Unlimited contacts, unlimited sends +- **Database Power**: Unlimited records, unlimited complexity +- **Web Presence**: Unlimited sites, unlimited traffic +- **Development Environment**: Full coding environment with AI assistance +- **Documentation Platform**: Beautiful, searchable knowledge base +- **Automation Engine**: Connect everything, automate everything +- **File Storage**: Unlimited files, unlimited backups + +#### True Ownership +- **Your Domain**: No corporate branding or limitations +- **Your Data**: Complete export capability, no lock-in +- **Your Rules**: No terms of service to violate +- **Your Community**: No algorithmic manipulation + +#### Community Support +- **Open Documentation**: Complete guides and tutorials available +- **Community-Driven Development**: Built by and for liberation movements +- **Technical Support**: Professional assistance from BNKops cooperative +- **Political Alignment**: Technology designed with movement values + +## The Compound Effect + +### Year Over Year Savings + +Corporate software costs grow exponentially: +- **Year 1**: "Starter" pricing to hook you +- **Year 2**: Feature limits force tier upgrades +- **Year 3**: Usage growth triggers premium pricing +- **Year 4**: Platform changes force expensive migrations +- **Year 5**: Lock-in enables arbitrary price increases + +Changemaker Lite costs grow linearly with actual infrastructure needs: +- **Year 1**: Base infrastructure costs +- **Year 2**: Modest increases for storage/bandwidth only +- **Year 3**: Scale only with actual technical requirements +- **Year 4**: Community-driven improvements at no extra cost +- **Year 5**: Established infrastructure with declining per-user costs + +### 10-Year Projection + +| Year | Corporate (Medium Campaign) | Changemaker Lite | Annual Savings | +|------|---------------------------|------------------|----------------| +| 1 | $20,016 | $900 | $19,116 | +| 2 | $22,017 | $900 | $21,117 | +| 3 | $24,219 | $1,080 | $23,139 | +| 4 | $26,641 | $1,080 | $25,561 | +| 5 | $29,305 | $1,260 | $28,045 | +| 6 | $32,235 | $1,260 | $30,975 | +| 7 | $35,459 | $1,440 | $34,019 | +| 8 | $39,005 | $1,440 | $37,565 | +| 9 | $42,905 | $1,620 | $41,285 | +| 10 | $47,196 | $1,620 | $45,576 | +| **TOTAL** | **$318,998** | **$12,600** | **$306,398** | + +## Calculate Your Own Savings + +### Current Corporate Costs Worksheet + +**Email Marketing**: $____/month +**Database/CRM**: $____/month +**Website Hosting**: $____/month +**Documentation**: $____/month +**Development Tools**: $____/month +**Automation**: $____/month +**File Storage**: $____/month +**Other SaaS**: $____/month + +**Monthly Total**: $____ +**Annual Total**: $____ + +**Changemaker Alternative**: $50-150/month +**Your Annual Savings**: $____ + +## Beyond the Numbers + +### What Movements Do With Their Savings + +The money saved by choosing community-controlled technology doesn't disappearβ€”it goes directly back into movement building: + +- **Hire organizers** instead of paying corporate executives +- **Fund direct actions** instead of funding surveillance infrastructure +- **Support community members** instead of enriching shareholders +- **Build lasting power** instead of temporary platform dependency + +## Making the Switch + +### Transition Strategy + +You don't have to switch everything at once: + +1. **Start with documentation** - Move your knowledge base to MkDocs +2. **Add email infrastructure** - Set up Listmonk for newsletters +3. **Build your database** - Move contact management to NocoDB +4. **Automate connections** - Use n8n to integrate everything +5. **Phase out corporate tools** - Cancel subscriptions as you replicate functionality + +### Investment Timeline + +- **Month 1**: Initial setup and learning ($150 including setup time) +- **Month 2-3**: Data migration and team training ($100/month) +- **Month 4+**: Full operation at optimal cost ($50-150/month based on scale) + +### ROI Calculation + +Most campaigns recover their entire first-year investment in **60-90 days** through subscription savings alone. + +--- + +*Ready to stop feeding your budget to corporate surveillance? [Get started with Changemaker Lite today](/getting-started/) and take control of your digital infrastructure.* diff --git a/mkdocs/docs/getting-started.md b/mkdocs/docs/getting-started.md index d8b1138..09605ee 100644 --- a/mkdocs/docs/getting-started.md +++ b/mkdocs/docs/getting-started.md @@ -1,23 +1,55 @@ -# Getting Started +# Getting Started with Digital Liberation πŸ³οΈβ€βš§οΈ -Welcome to Changemaker Lite! This guide will help you get up and running on Ubuntu 24.04 LTS (Noble Numbat) with Docker. +Welcome to Changemaker Lite! You're about to reclaim your digital sovereignty and stop feeding your secrets to corporations. This guide will help you set up your own political infrastructure that you actually own and control. + +## Why Changemaker Lite? + +Before we dive into the technical setup, let's be clear about what you're doing here: + +!!! quote "The Reality" + **If you do politics, who is reading your secrets?** Every corporate platform you use is extracting your power, selling your data, and building profiles on your community. It's time to break free. + +### What You're Getting + +- **Data Sovereignty**: Your data stays on your servers +- **Cost Savings**: $50/month instead of $2,000+/month for corporate solutions +- **Community Control**: Technology that serves movements, not shareholders +- **Trans Liberation**: Tools built with radical politics and care + +### What You're Leaving Behind + +- ❌ Corporate surveillance and data extraction +- ❌ Escalating subscription fees and vendor lock-in +- ❌ Algorithmic manipulation of your community +- ❌ Terms of service that can silence you anytime + +--- ## System Requirements ### Operating System + - **Ubuntu 24.04 LTS (Noble Numbat)** - Recommended and tested - Other Linux distributions with systemd support - WSL2 on Windows (limited functionality) +!!! tip "New to Linux?" + Consider [Linux Mint](https://www.linuxmint.com/) - it looks like Windows but opens the door to true digital freedom. + ### Hardware Requirements + - **CPU**: 2+ cores (4+ recommended) -- **RAM**: 4GB minimum (8GB recommended) +- **RAM**: 4GB minimum (8GB recommended) - **Storage**: 20GB+ available disk space - **Network**: Stable internet connection +!!! info "Cloud Hosting" + You can run this on a VPS from providers like Hetzner, DigitalOcean, or Linode for $20-50/month. + ### Software Prerequisites 1. **Docker Engine** (24.0+) + ```bash # Install Docker curl -fsSL https://get.docker.com | sudo sh @@ -29,12 +61,14 @@ sudo usermod -aG docker $USER ``` 2. **Docker Compose** (v2.20+) + ```bash # Verify Docker Compose v2 is installed docker compose version ``` 3. **Essential Tools** + ```bash # Install required packages sudo apt update @@ -46,7 +80,7 @@ sudo apt install -y git curl jq openssl ### 1. Clone Repository ```bash -git clone https://gitea.bnkops.com/admin/Changemaker.git +git clone https://gitea.bnkops.com/admin/changemaker.lite cd changemaker.lite ``` @@ -59,6 +93,7 @@ The `config.sh` script will guide you through the initial setup: ``` This wizard will: + - βœ… Create a `.env` file with secure defaults - βœ… Scan for available ports to avoid conflicts - βœ… Set up your domain configuration @@ -106,6 +141,7 @@ docker compose ps ``` Expected output should show all services as "Up": + - code-server-changemaker - listmonk_app - listmonk_db @@ -124,26 +160,31 @@ Expected output should show all services as "Up": Once services are running, access them locally: ### 🏠 Homepage Dashboard + - **URL**: http://localhost:3010 - **Purpose**: Central hub for all services - **Features**: Service status, quick links, monitoring ### πŸ’» Development Tools + - **Code Server**: http://localhost:8888 - VS Code in browser - **Gitea**: http://localhost:3030 - Git repository management - **MkDocs Dev**: http://localhost:4000 - Live documentation preview - **MkDocs Prod**: http://localhost:4001 - Built documentation ### πŸ“§ Communication + - **Listmonk**: http://localhost:9000 - Email campaigns - Login with credentials set during configuration ### πŸ”„ Automation & Data + - **n8n**: http://localhost:5678 - Workflow automation - Login with credentials set during configuration - **NocoDB**: http://localhost:8090 - No-code database ### πŸ› οΈ Interactive Tools + - **Map Viewer**: http://localhost:3000 - Geographic data visualization - **Mini QR**: http://localhost:8089 - QR code generator @@ -158,6 +199,7 @@ For secure public access, use the production deployment script: ``` This script will: + 1. Install and configure `cloudflared` 2. Create a Cloudflare tunnel 3. Set up DNS records automatically @@ -177,6 +219,7 @@ This script will: After successful deployment, services will be available at: **Public Services**: + - `https://yourdomain.com` - Main documentation site - `https://listmonk.yourdomain.com` - Email campaigns - `https://docs.yourdomain.com` - Documentation preview @@ -187,6 +230,7 @@ After successful deployment, services will be available at: - `https://qr.yourdomain.com` - QR generator **Protected Services** (require authentication): + - `https://homepage.yourdomain.com` - Dashboard - `https://code.yourdomain.com` - Code Server @@ -283,11 +327,13 @@ docker compose up -d If services fail to start due to port conflicts: 1. Check which ports are in use: + ```bash sudo ss -tulpn | grep LISTEN ``` 2. Re-run configuration to get new ports: + ```bash ./config.sh ``` diff --git a/mkdocs/docs/index.md b/mkdocs/docs/index.md index 7ad2ac6..a559af5 100644 --- a/mkdocs/docs/index.md +++ b/mkdocs/docs/index.md @@ -1,6 +1,13 @@ +--- +template: home.html +hide: + - navigation + - toc +--- + # Welcome to Changemaker Lite -A streamlined, self-hosted platform for documentation, development, and digital activism. +Stop feeding your secrets to corporations. Own your political infrastructure. ## Quick Start @@ -8,7 +15,7 @@ Get up and running in minutes: ```bash # Clone the repository -git clone https://gitea.bnkops.com/admin/Changemaker.git +git clone https://gitea.bnkops.com/admin/changemaker.lite cd changemaker.lite # Configure environment @@ -26,21 +33,25 @@ docker compose up -d Changemaker Lite includes these essential services: ### Core Services + - **[Homepage](services/homepage.md)** (Port 3010) - Central dashboard and service monitoring - **[Code Server](services/code-server.md)** (Port 8888) - VS Code in your browser - **[MkDocs](services/mkdocs.md)** (Port 4000) - Documentation with live preview - **[Static Server](services/static-server.md)** (Port 4001) - Production documentation site ### Communication & Automation + - **[Listmonk](services/listmonk.md)** (Port 9000) - Newsletter and email campaign management - **[n8n](services/n8n.md)** (Port 5678) - Workflow automation platform ### Data & Development + - **[NocoDB](services/nocodb.md)** (Port 8090) - No-code database platform - **[PostgreSQL](services/postgresql.md)** (Port 5432) - Database backend for Listmonk - **[Gitea](services/gitea.md)** (Port 3030) - Self-hosted Git service ### Interactive Tools + - **[Map Viewer](services/map.md)** (Port 3000) - Interactive map with NocoDB integration - **[Mini QR](services/mini-qr.md)** (Port 8089) - QR code generator diff --git a/mkdocs/docs/javascripts/home.js b/mkdocs/docs/javascripts/home.js new file mode 100644 index 0000000..1707903 --- /dev/null +++ b/mkdocs/docs/javascripts/home.js @@ -0,0 +1,222 @@ +// Changemaker Lite - Minimal Interactions + +document.addEventListener('DOMContentLoaded', function() { + // Terminal copy functionality + const terminals = document.querySelectorAll('.terminal-box'); + terminals.forEach(terminal => { + terminal.addEventListener('click', function() { + const code = this.textContent.trim(); + navigator.clipboard.writeText(code).then(() => { + // Quick visual feedback + this.style.background = '#0a0a0a'; + setTimeout(() => { + this.style.background = '#000'; + }, 200); + }); + }); + }); + + // Smooth scroll for anchors + document.querySelectorAll('a[href^="#"]').forEach(anchor => { + anchor.addEventListener('click', function (e) { + e.preventDefault(); + const target = document.querySelector(this.getAttribute('href')); + if (target) { + target.scrollIntoView({ behavior: 'smooth', block: 'start' }); + } + }); + }); + + // Reduced motion support + if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) { + document.documentElement.style.scrollBehavior = 'auto'; + const style = document.createElement('style'); + style.textContent = '*, *::before, *::after { animation: none !important; transition: none !important; }'; + document.head.appendChild(style); + } +}); + +// Changemaker Lite - Smooth Grid Interactions + +document.addEventListener('DOMContentLoaded', function() { + // Smooth scroll for anchors + document.querySelectorAll('a[href^="#"]').forEach(anchor => { + anchor.addEventListener('click', function (e) { + e.preventDefault(); + const target = document.querySelector(this.getAttribute('href')); + if (target) { + target.scrollIntoView({ behavior: 'smooth', block: 'start' }); + } + }); + }); + + // Add stagger animation to grid cards on scroll + const observerOptions = { + threshold: 0.1, + rootMargin: '0px 0px -50px 0px' + }; + + const observer = new IntersectionObserver((entries) => { + entries.forEach((entry, index) => { + if (entry.isIntersecting) { + setTimeout(() => { + entry.target.style.opacity = '1'; + entry.target.style.transform = 'translateY(0)'; + }, index * 50); + observer.unobserve(entry.target); + } + }); + }, observerOptions); + + // Observe all grid cards + document.querySelectorAll('.grid-card').forEach((card, index) => { + card.style.opacity = '0'; + card.style.transform = 'translateY(20px)'; + card.style.transition = 'opacity 0.5s ease, transform 0.5s ease'; + observer.observe(card); + }); + + // Neon hover effect for service cards + document.querySelectorAll('.service-card').forEach(card => { + card.addEventListener('mouseenter', function(e) { + const rect = this.getBoundingClientRect(); + const x = e.clientX - rect.left; + const y = e.clientY - rect.top; + + const ripple = document.createElement('div'); + ripple.style.position = 'absolute'; + ripple.style.left = x + 'px'; + ripple.style.top = y + 'px'; + ripple.style.width = '0'; + ripple.style.height = '0'; + ripple.style.borderRadius = '50%'; + ripple.style.background = 'rgba(91, 206, 250, 0.3)'; + ripple.style.transform = 'translate(-50%, -50%)'; + ripple.style.pointerEvents = 'none'; + ripple.style.transition = 'width 0.6s, height 0.6s, opacity 0.6s'; + + this.appendChild(ripple); + + setTimeout(() => { + ripple.style.width = '200px'; + ripple.style.height = '200px'; + ripple.style.opacity = '0'; + }, 10); + + setTimeout(() => { + ripple.remove(); + }, 600); + }); + }); + + // Animated counter for stats + const animateValue = (element, start, end, duration) => { + const range = end - start; + const increment = range / (duration / 16); + let current = start; + + const timer = setInterval(() => { + current += increment; + if (current >= end) { + current = end; + clearInterval(timer); + } + element.textContent = Math.round(current); + }, 16); + }; + + // Animate stat numbers on scroll + const statObserver = new IntersectionObserver((entries) => { + entries.forEach(entry => { + if (entry.isIntersecting) { + const statNumber = entry.target.querySelector('.stat-number'); + if (statNumber && !statNumber.animated) { + statNumber.animated = true; + const value = parseInt(statNumber.textContent); + if (!isNaN(value)) { + statNumber.textContent = '0'; + animateValue(statNumber, 0, value, 1000); + } + } + statObserver.unobserve(entry.target); + } + }); + }, observerOptions); + + document.querySelectorAll('.stat-item').forEach(stat => { + statObserver.observe(stat); + }); + + // Add parallax effect to hero section + let ticking = false; + function updateParallax() { + const scrolled = window.pageYOffset; + const hero = document.querySelector('.hero-grid'); + if (hero) { + hero.style.transform = `translateY(${scrolled * 0.3}px)`; + } + ticking = false; + } + + function requestTick() { + if (!ticking) { + window.requestAnimationFrame(updateParallax); + ticking = true; + } + } + + // Only add parallax on desktop + if (window.innerWidth > 768) { + window.addEventListener('scroll', requestTick); + } + + // Button ripple effect + document.querySelectorAll('.btn').forEach(button => { + button.addEventListener('click', function(e) { + const rect = this.getBoundingClientRect(); + const x = e.clientX - rect.left; + const y = e.clientY - rect.top; + + const ripple = document.createElement('span'); + ripple.style.position = 'absolute'; + ripple.style.left = x + 'px'; + ripple.style.top = y + 'px'; + ripple.className = 'btn-ripple'; + + this.appendChild(ripple); + + setTimeout(() => { + ripple.remove(); + }, 600); + }); + }); + + // Reduced motion support + if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) { + document.documentElement.style.scrollBehavior = 'auto'; + window.removeEventListener('scroll', requestTick); + } +}); + +// Add CSS for button ripple +const style = document.createElement('style'); +style.textContent = ` + .btn-ripple { + position: absolute; + width: 20px; + height: 20px; + border-radius: 50%; + background: rgba(111, 66, 193, 0.5); /* mkdocs purple */ + transform: translate(-50%, -50%) scale(0); + animation: ripple-animation 0.6s ease-out; + pointer-events: none; + } + + @keyframes ripple-animation { + to { + transform: translate(-50%, -50%) scale(10); + opacity: 0; + } + } +`; +document.head.appendChild(style); \ No newline at end of file diff --git a/mkdocs/docs/overrides/home.html b/mkdocs/docs/overrides/home.html index e69de29..383b702 100644 --- a/mkdocs/docs/overrides/home.html +++ b/mkdocs/docs/overrides/home.html @@ -0,0 +1,339 @@ +{% extends "main.html" %} + +{% block extrahead %} + {{ super() }} + +{% endblock %} + +{% block content %} +
+ + +
+
+ +
+
🀯 This Site Runs On Changemaker Lite
+

The Only FOSS Political Campaign Stack

+

Stop paying $1,200/month to corporate platforms. Run your entire political campaign on $200 hardware with fewer corporate dependencies every day.

+ + +
+ + +
+

The Problem

+
+
πŸ’Έ NGP VAN: $1,000+/mo
+
πŸ“§ Mailchimp: $200+/mo
+
πŸ”’ Your data: Their servers
+
πŸ‘οΈ Surveillance: Always on
+
+
+ + +
+

The Solution

+
+
+
$200
+
One-time cost
+
+
+
11
+
Campaign tools
+
+
+
100%
+
Your data
+
+
+
↓
+
Fewer corporate deps every day
+
+
+
+ + +
+

Proven By

+
+
+ ⚑ + Powers BNKops.com +
+
+ πŸ³οΈβ€βš§οΈ + Trans liberation tech +
+
+ πŸ›‘οΈ + Zero surveillance +
+
+ πŸš€ + 30-min setup +
+
+
+
+
+ + +
+
+
+

Everything Your Campaign Needs

+

Replace your entire SaaS stack with open source alternatives. First free and open source canvassing solution included.

+
+ +
+ +
+
πŸ’»
+

Code Server

+
Replaces: VS Code
+
    +
  • Browser-based IDE
  • +
  • Customizable workspace
  • +
  • Live collaboration
  • +
+
Code Server
+
+ + +
+
πŸ“–
+

Documentation

+
Replaces: Confluence
+
    +
  • Markdown-based
  • +
  • Live preview
  • +
  • Static site generation
  • +
+
MkDocs
+
+ + +
+
πŸ“§
+

Email Campaigns

+
Replaces: Mailchimp
+
    +
  • Unlimited subscribers
  • +
  • A/B testing
  • +
  • Analytics
  • +
+
Listmonk
+
+ + +
+
πŸ“Š
+

Database & Canvassing

+
Replaces: Airtable
+
    +
  • Contact management
  • +
  • Custom fields
  • +
  • Canvassing support
  • +
+
NocoDB
+
+ + +
+
πŸ—ΊοΈ
+

Interactive Maps

+
Replaces: Google Maps
+
    +
  • Real-time geolocation
  • +
  • Custom map layers
  • +
  • Location management
  • +
+
Map Viewer
+
+ + +
+
πŸ”„
+

Workflow Automation

+
Replaces: Zapier
+
    +
  • Workflow builder
  • +
  • API connections
  • +
  • Event triggers
  • +
+
n8n
+
+ + +
+
πŸ“±
+

QR Code Generator

+
Replaces: QR Code SaaS
+
    +
  • Customizable codes
  • +
  • Batch generation
  • +
  • Static and dynamic codes
  • +
+
Mini QR
+
+ + +
+
πŸ”§
+

Version Control

+
Replaces: GitHub
+
    +
  • Self-hosted Git
  • +
  • Collaborative development
  • +
  • Issue tracking
  • +
+
Gitea
+
+
+
+
+ + +
+
+
+

Corporate SaaS vs Changemaker Lite

+

Why campaigns are switching to self-hosted FOSS

+
+ +
+
+
+
Corporate SaaS
+
Changemaker Lite
+
+ +
+
Monthly Cost
+
$1,200+
+
$50 hosting
+
+ +
+
Data Ownership
+
Their servers
+
100% yours
+
+ +
+
Surveillance
+
Always tracked
+
Zero tracking
+
+ +
+
Vendor Lock-in
+
Trapped forever
+
Export anytime
+
+ +
+
Customization
+
Limited options
+
Full control
+
+
+
+
+ + +
+
+
+

Start Your Digital Liberation

+

Three ways to break free from corporate campaign tech

+
+ +
+ + + + +
+
πŸ› οΈ
+

DIY Install

+
Free
+
+
βœ“ Use your hardware
+
βœ“ Docker compose
+
βœ“ Full documentation
+
βœ“ Community support
+
βœ“ Learn the system
+
+ Install Guide +
+ + +
+
☁️
+

Managed Hosting

+
$???/mo
+
+
βœ“ We manage everything
+
βœ“ Your domain
+
βœ“ Daily backups
+
βœ“ 24/7 monitoring
+
βœ“ Still your data
+
+ Learn More +
+
+ + +
+

Join the Movement

+

Some of the biggest players in local politics are already using it; maybe give it a try?

+ +
+ + +
+
+ +
+{% endblock %} diff --git a/mkdocs/docs/overrides/main.html b/mkdocs/docs/overrides/main.html index 8e9cee7..68348ba 100644 --- a/mkdocs/docs/overrides/main.html +++ b/mkdocs/docs/overrides/main.html @@ -1,6 +1,8 @@ {% extends "base.html" %} {% block extrahead %} + {{ super() }} + {% endblock %} {% block announce %} diff --git a/mkdocs/docs/philosophy.md b/mkdocs/docs/philosophy.md new file mode 100644 index 0000000..29c2652 --- /dev/null +++ b/mkdocs/docs/philosophy.md @@ -0,0 +1,188 @@ +# Philosophy: Your Secrets, Your Power, Your Movement + +## The Question That Changes Everything + +**If you are a political actor, who do you trust with your secrets?** + +This isn't just a technical questionβ€”it's the core political question of our time. Every email you send, every document you create, every contact list you build, every strategy you develop: where does it live? Who owns the servers? Who has the keys? + +## The Corporate Extraction Machine + +### How They Hook You + +Corporate software companies have perfected the art of digital colonization: + +1. **Free Trials** - They lure you in with "free" accounts +2. **Feature Creep** - Essential features require paid tiers +3. **Data Lock-In** - Your data becomes harder to export +4. **Price Escalation** - $40/month becomes $750/month as you grow +5. **Surveillance Integration** - Your organizing becomes their intelligence + +### The Real Product + +!!! warning "You Are Not the Customer" + If you're not paying for the product, you ARE the product. But even when you are paying, you're often still the product. + +Corporate platforms don't make money from your subscription feesβ€”they make money from: + +- **Data Sales** to third parties +- **Algorithmic Manipulation** for corporate and political interests +- **Surveillance Contracts** with governments and corporations +- **Predictive Analytics** about your community and movement + +## The BNKops Alternative + +### Who We Are + +**BNKops** is a cooperative based in amiskwaciy-wΓ’skahikan (Edmonton, Alberta) on Treaty 6 territory. We're not a corporationβ€”we're a collective of skilled organizers, developers, and community builders who believe technology should serve liberation, not oppression. + +### Our Principles + +#### πŸ³οΈβ€βš§οΈ πŸ‡΅πŸ‡Έ Liberation First + +Technology that centers the most marginalized voices and fights for collective liberation. Trans rights are human rights, and our tools reflect this commitment. + +#### 🀝 Community Over Profit + +We operate as a cooperative because we believe in shared ownership and democratic decision-making. No venture capitalists, no shareholders, no extraction. + +#### ⚑ Data Sovereignty + +Your data belongs to you and your community. We build tools that let you own your digital infrastructure completely. + +#### πŸ”’ Security Culture + +Real security comes from community control, not corporate promises. We integrate security culture practices into our technology design. + +## The Changemaker Difference + +### Traditional Corporate Flow + +``` +Your Data β†’ Corporate Server β†’ Surveillance β†’ Profit β†’ Your Oppression +``` + +### Changemaker Flow + +``` +Your Data β†’ Your Server β†’ Your Community β†’ Your Power β†’ Liberation +``` + +### Why This Matters + +When you control your technology infrastructure: + +- **Your secrets stay secret** - No corporate access to sensitive organizing data +- **Your community stays connected** - No algorithmic manipulation of your reach +- **Your costs stay low** - No extraction-based pricing as you grow +- **Your future stays yours** - No vendor lock-in or platform dependency + +## The Philosophy in Practice + +### Security Culture Meets Technology + +Traditional security culture asks: "Who needs to know this information?" + +Digital security culture asks: "Who controls the infrastructure where this information lives?" + +### Community Technology + +We believe in **community technology** - tools that: + +- Are owned and controlled by the communities that use them +- Are designed with liberation politics from the ground up +- Prioritize care, consent, and collective power +- Can be understood, modified, and improved by community members + +### Prefigurative Politics + +The tools we use shape the movements we build. Corporate tools create corporate movementsβ€”hierarchical, surveilled, and dependent. Community-controlled tools create community-controlled movementsβ€”democratic, secure, and sovereign. + +## Common Questions + +### "Isn't this just for tech people?" + +**No.** We specifically designed Changemaker Lite for organizers, activists, and movement builders who may not have technical backgrounds. Our philosophy is that everyone deserves digital sovereignty, not just people with computer science degrees. + +### "What about convenience?" + +Corporate platforms are convenient because they've extracted billions of dollars from users to fund that convenience. When you own your tools, there's a learning curveβ€”but it's the same learning curve as learning to organize, learning to build power, learning to create change. + +### "Can't we just use corporate tools carefully?" + +Would you hold your most sensitive organizing meetings in a room owned by your opposition? Would you store your membership lists in filing cabinets at a corporation that profits from surveillance? Digital tools are the same. + +### "What about security?" + +Real security comes from community control, not corporate promises. When you control your infrastructure: + +- You decide what gets logged and what doesn't +- You choose who has access and who doesn't +- You know exactly where your data is and who can see it +- You can't be de-platformed or locked out of your own data + +## Historical Context + +### Learning from Past Struggles + +Every liberation movement has had to solve the problem of secure communication and information sharing: + +- **Underground Railroad** - Coded songs and safe houses +- **Labor Movement** - Secret meetings and encrypted telegrams +- **Civil Rights Movement** - CB radios and phone trees +- **LGBTQ+ Liberation** - Chosen families and community networks + +The internet should expand these traditions, not replace them with corporate surveillance. + +### The Surveillance Capitalism Trap + +As Shoshana Zuboff documents in "The Age of Surveillance Capitalism," we're living through a new form of capitalism that extracts value from human experience itself. Political movements are particularly valuable targets because: + +- Political data predicts behavior +- Movement intelligence can be used to counter-organize +- Community networks can be mapped and disrupted +- Organizing strategies can be monitored and neutralized + +## Taking Action + +### Start Where You Are + +You don't have to replace everything at once. Start with one tool, one campaign, one project. Learn the technology alongside your organizing. + +### Build Community Capacity + +The goal isn't individual self-sufficiencyβ€”it's community technological sovereignty. Share skills, pool resources, learn together. + +### Connect with Others + +You're not alone in this. The free and open source software community, the digital security community, and the appropriate technology movement are all working on similar problems. + +### Remember Why + +This isn't about technology for its own sake. It's about building the infrastructure for the world we want to seeβ€”where communities have power, where people control their own data, where technology serves liberation. + +--- + +## Resources for Deeper Learning + +### Essential Reading + +- [De-corp Your Software Stack](https://docs.bnkops.com/archive/repo.archive/thatreallyblondehuman/Thoughts%20πŸ€”/If%20you%20do%20politics%20who%20is%20reading%20your%20secrets%20-%20why%20you%20should%20de-corp%20your%20software%20stack/) - Our full manifesto +- [The Age of Surveillance Capitalism](https://en.wikipedia.org/wiki/The_Age_of_Surveillance_Capitalism) by Shoshana Zuboff +- [Security Culture Handbook](https://docs.bnkops.com/archive/repo.archive/Zines%20We%20Like%20😎/What%20Is%20Security%20Culture%20☠/) + +### Community Resources + +- [BNKops Repository](https://docs.bnkops.com/) - Documentation and knowledge base +- [Activist Handbook](https://activist.org/) - Movement building resources +- [EFF Surveillance Self-Defense](https://ssd.eff.org/) - Digital security guides + +### Technical Learning + +- [Self-Hosted Awesome List](https://github.com/awesome-selfhosted/awesome-selfhosted) - Open source alternatives +- [Linux Journey](https://linuxjourney.com/) - Learn Linux basics +- [Docker Curriculum](https://docker-curriculum.com/) - Learn containerization + +--- + +*This philosophy document is a living document. Contribute your thoughts, experiences, and improvements through the [BNKops documentation platform](https://docs.bnkops.com/).* diff --git a/mkdocs/docs/services/gitea.md b/mkdocs/docs/services/gitea.md new file mode 100644 index 0000000..880839f --- /dev/null +++ b/mkdocs/docs/services/gitea.md @@ -0,0 +1,53 @@ +# Gitea + +Self-hosted Git service for collaborative development. + +## Overview + +Gitea is a lightweight, self-hosted Git service similar to GitHub, GitLab, and Bitbucket. It provides a web interface for managing repositories, issues, pull requests, and more. + +## Features + +- Git repository hosting +- Web-based interface +- Issue tracking +- Pull requests +- Wiki and code review +- Lightweight and easy to deploy + +## Access + +- **Default Web Port**: `${GITEA_WEB_PORT:-3030}` (default: 3030) +- **Default SSH Port**: `${GITEA_SSH_PORT:-2222}` (default: 2222) +- **URL**: `http://localhost:${GITEA_WEB_PORT:-3030}` +- **Default Data Directory**: `/data/gitea` + +## Configuration + +### Environment Variables + +- `GITEA__database__DB_TYPE`: Database type (e.g., `sqlite3`, `mysql`, `postgres`) +- `GITEA__database__HOST`: Database host (default: `${GITEA_DB_HOST:-gitea-db:3306}`) +- `GITEA__database__NAME`: Database name (default: `${GITEA_DB_NAME:-gitea}`) +- `GITEA__database__USER`: Database user (default: `${GITEA_DB_USER:-gitea}`) +- `GITEA__database__PASSWD`: Database password (from `.env`) +- `GITEA__server__ROOT_URL`: Root URL (e.g., `${GITEA_ROOT_URL}`) +- `GITEA__server__HTTP_PORT`: Web port (default: 3000 inside container) +- `GITEA__server__DOMAIN`: Domain (e.g., `${GITEA_DOMAIN}`) + +### Volumes + +- `gitea_data:/data`: Gitea configuration and data +- `/etc/timezone:/etc/timezone:ro` +- `/etc/localtime:/etc/localtime:ro` + +## Usage + +1. Access Gitea at `http://localhost:${GITEA_WEB_PORT:-3030}` +2. Register or log in as an admin user +3. Create or import repositories +4. Collaborate with your team + +## Official Documentation + +For more details, visit the [official Gitea documentation](https://docs.gitea.com/). diff --git a/mkdocs/docs/services/homepage.md b/mkdocs/docs/services/homepage.md index c597aa0..d5e03c5 100644 --- a/mkdocs/docs/services/homepage.md +++ b/mkdocs/docs/services/homepage.md @@ -55,15 +55,18 @@ Homepage uses YAML configuration files located in `./configs/homepage/`: Homepage is pre-configured with all Changemaker Lite services: ### Essential Tools + - **Code Server** (Port 8888): VS Code in the browser - **Listmonk** (Port 9000): Newsletter & mailing list manager - **NocoDB** (Port 8090): No-code database platform ### Content & Documentation + - **MkDocs** (Port 4000): Live documentation server - **Static Site** (Port 4001): Built documentation hosting ### Automation & Data + - **n8n** (Port 5678): Workflow automation platform - **PostgreSQL** (Port 5432): Database backends @@ -142,21 +145,25 @@ Homepage monitors Docker containers automatically when configured: ### Common Issues **Configuration not loading**: Check YAML syntax in configuration files + ```bash docker logs homepage-changemaker ``` **Icons not displaying**: Verify icon paths and file permissions + ```bash ls -la ./assets/icons/ ``` **Services not reachable**: Verify network connectivity between containers + ```bash docker exec homepage-changemaker ping service-name ``` **Widget data not updating**: Check Docker socket permissions and container access + ```bash docker exec homepage-changemaker ls -la /var/run/docker.sock ``` @@ -193,6 +200,7 @@ responsive: ## Official Documentation For comprehensive configuration guides and advanced features: + - [Homepage Documentation](https://gethomepage.dev/) - [GitHub Repository](https://github.com/gethomepage/homepage) - [Configuration Examples](https://gethomepage.dev/configs/) diff --git a/mkdocs/docs/services/map.md b/mkdocs/docs/services/map.md new file mode 100644 index 0000000..05e85cb --- /dev/null +++ b/mkdocs/docs/services/map.md @@ -0,0 +1,98 @@ +# Map + +Interactive map service for geospatial data visualization, powered by NocoDB and Leaflet.js. + +## Overview + +The Map service provides an interactive web-based map for displaying, searching, and analyzing geospatial data from a NocoDB backend. It supports real-time geolocation, adding new locations, and is optimized for both desktop and mobile use. + +## Features + +- Interactive map visualization with OpenStreetMap +- Real-time geolocation support +- Add new locations directly from the map +- Auto-refresh every 30 seconds +- Responsive design for mobile devices +- Secure API proxy to protect credentials +- Docker containerization for easy deployment + +## Access + +- **Default Port**: `${MAP_PORT:-3000}` (default: 3000) +- **URL**: `http://localhost:${MAP_PORT:-3000}` +- **Default Workspace**: `/app/public/` + +## Configuration + +All configuration is done via environment variables: + +| Variable | Description | Default | +|---------------------|------------------------------------|--------------| +| `NOCODB_API_URL` | NocoDB API base URL | Required | +| `NOCODB_API_TOKEN` | API authentication token | Required | +| `NOCODB_VIEW_URL` | Full NocoDB view URL | Required | +| `PORT` | Server port | 3000 | +| `DEFAULT_LAT` | Default map latitude | 53.5461 | +| `DEFAULT_LNG` | Default map longitude | -113.4938 | +| `DEFAULT_ZOOM` | Default map zoom level | 11 | + +### Volumes + +- `./map/app/public`: Map public assets + +## Usage + +1. Access the map at `http://localhost:${MAP_PORT:-3000}` +2. Search for locations or addresses +3. Add or view custom markers +4. Analyze geospatial data as needed + +## NocoDB Table Setup + +### Required Columns + +- `geodata` (Text): Format "latitude;longitude" +- `latitude` (Decimal): Precision 10, Scale 8 +- `longitude` (Decimal): Precision 11, Scale 8 + +### Form Fields (as seen in the interface) + +- `First Name` (Text): Person's first name +- `Last Name` (Text): Person's last name +- `Email` (Email): Contact email address +- `Unit Number` (Text): Apartment/unit number +- `Support Level` (Single Select): + - 1 - Strong Support (Green) + - 2 - Moderate Support (Yellow) + - 3 - Low Support (Orange) + - 4 - No Support (Red) +- `Address` (Text): Full street address +- `Sign` (Checkbox): Has campaign sign (true/false) +- `Sign Size` (Single Select): Small, Medium, Large +- `Geo-Location` (Text): Formatted as "latitude;longitude" + +## API Endpoints + +- `GET /api/locations` - Fetch all locations +- `POST /api/locations` - Create new location +- `GET /api/locations/:id` - Get single location +- `PUT /api/locations/:id` - Update location +- `DELETE /api/locations/:id` - Delete location +- `GET /health` - Health check + +## Security Considerations + +- API tokens are kept server-side only +- CORS is configured for security +- Rate limiting prevents abuse +- Input validation on all endpoints +- Helmet.js for security headers + +## Troubleshooting + +- Ensure NocoDB table has required columns and valid coordinates +- Check API token permissions and network connectivity + +## Official Documentation + +Refer to the [project README](../../map/README.md) for more information. diff --git a/mkdocs/docs/services/mini-qr.md b/mkdocs/docs/services/mini-qr.md new file mode 100644 index 0000000..5970a37 --- /dev/null +++ b/mkdocs/docs/services/mini-qr.md @@ -0,0 +1,40 @@ +# Mini QR + +Simple QR code generator service. + +## Overview + +Mini QR is a lightweight service for generating QR codes for URLs, text, or other data. It provides a web interface for quick QR code creation and download. + +## Features + +- Generate QR codes for text or URLs +- Download QR codes as images +- Simple and fast interface +- No user registration required + +## Access + +- **Default Port**: `${MINI_QR_PORT:-8089}` (default: 8089) +- **URL**: `http://localhost:${MINI_QR_PORT:-8089}` + +## Configuration + +### Environment Variables + +- `QR_DEFAULT_SIZE`: Default size of generated QR codes +- `QR_IMAGE_FORMAT`: Image format (e.g., `png`, `svg`) + +### Volumes + +- `./configs/mini-qr`: QR code service configuration + +## Usage + +1. Access Mini QR at `http://localhost:${MINI_QR_PORT:-8089}` +2. Enter the text or URL to encode +3. Download or share the generated QR code + +## Official Documentation + +See the [project README](../../README.md) for more details. diff --git a/mkdocs/docs/services/n8n.md b/mkdocs/docs/services/n8n.md index 07da533..28b6fe3 100644 --- a/mkdocs/docs/services/n8n.md +++ b/mkdocs/docs/services/n8n.md @@ -57,27 +57,32 @@ n8n is a powerful workflow automation tool that allows you to connect various ap ## Common Use Cases ### Documentation Automation + - Auto-generate documentation from code comments - Sync documentation between different platforms - Notify team when documentation is updated ### Email Campaign Integration + - Connect Listmonk with external data sources - Automate subscriber management - Trigger campaigns based on events ### Database Management with NocoDB + - Sync data between NocoDB and external APIs - Automate data entry and validation - Create backup workflows for database content - Generate reports from NocoDB data ### Development Workflows + - Auto-deploy documentation on git push - Sync code changes with documentation - Backup automation ### Data Processing + - Process CSV files and import to databases - Transform data between different formats - Schedule regular data updates @@ -85,16 +90,19 @@ n8n is a powerful workflow automation tool that allows you to connect various ap ## Example Workflows ### Simple Webhook to Email + ``` Webhook β†’ Email ``` ### Scheduled Documentation Backup + ``` Schedule β†’ Read Files β†’ Compress β†’ Upload to Storage ``` ### Git Integration + ``` Git Webhook β†’ Process Changes β†’ Update Documentation β†’ Notify Team ``` @@ -110,6 +118,7 @@ Git Webhook β†’ Process Changes β†’ Update Documentation β†’ Notify Team ## Integration with Other Services n8n can integrate with all services in your Changemaker Lite setup: + - **Listmonk**: Manage subscribers and campaigns - **PostgreSQL**: Read/write database operations - **Code Server**: File operations and git integration @@ -139,6 +148,7 @@ docker exec -it n8n-changemaker sh ## Official Documentation For comprehensive n8n documentation: + - [n8n Documentation](https://docs.n8n.io/) - [Community Workflows](https://n8n.io/workflows/) - [Node Reference](https://docs.n8n.io/integrations/builtin/) diff --git a/mkdocs/docs/services/nocodb.md b/mkdocs/docs/services/nocodb.md index a1ca8d4..440ca60 100644 --- a/mkdocs/docs/services/nocodb.md +++ b/mkdocs/docs/services/nocodb.md @@ -34,6 +34,7 @@ NocoDB is an open-source no-code platform that transforms any database into a sm ### Database Backend NocoDB uses a dedicated PostgreSQL instance (`root_db`) with the following configuration: + - **Database Name**: `root_db` - **Username**: `postgres` - **Password**: `password` @@ -56,16 +57,19 @@ NocoDB uses a dedicated PostgreSQL instance (`root_db`) with the following confi ## Common Use Cases ### Content Management + - Create content databases for blogs and websites - Manage product catalogs and inventories - Track customer information and interactions ### Project Management + - Task and project tracking systems - Team collaboration workspaces - Resource and timeline management ### Data Collection + - Custom forms for surveys and feedback - Event registration and management - Lead capture and CRM systems @@ -131,16 +135,19 @@ Application settings and metadata are stored in the `nc_data` volume. ### Common Issues **Service won't start**: Check if the PostgreSQL database is healthy + ```bash docker logs root_db ``` **Database connection errors**: Verify database credentials and network connectivity + ```bash docker exec nocodb nc_data nc ``` **Performance issues**: Monitor resource usage and optimize queries + ```bash docker stats nocodb root_db ``` @@ -148,6 +155,7 @@ docker stats nocodb root_db ## Official Documentation For comprehensive guides and advanced features: + - [NocoDB Documentation](https://docs.nocodb.com/) - [GitHub Repository](https://github.com/nocodb/nocodb) - [Community Forum](https://community.nocodb.com/) \ No newline at end of file diff --git a/mkdocs/docs/stylesheets/extra.css b/mkdocs/docs/stylesheets/extra.css new file mode 100644 index 0000000..e69de29 diff --git a/mkdocs/docs/stylesheets/home.css b/mkdocs/docs/stylesheets/home.css new file mode 100644 index 0000000..a64b72d --- /dev/null +++ b/mkdocs/docs/stylesheets/home.css @@ -0,0 +1,706 @@ +/* Changemaker Lite - Ultra-Tight Grid System */ + +/* Homepage-specific variables */ +.md-content--home { + /* Trans flag colors with neon glow variants */ + --mkdocs-purple: #6f42c1; + --mkdocs-purple-dark: #3d2064; + --trans-blue: var(--mkdocs-purple); /* override for main accent */ + --trans-pink: #F5A9B8; + --trans-white: #FFFFFF; + --trans-white-dim: #E0E0E0; + + /* Dark theme colors */ + --home-dark-bg: #0a0a0a; + --home-dark-surface: #151515; + --home-dark-card: #1a1a1a; + --home-dark-border: #2a2a2a; + --home-dark-text: #e0e0e0; + --home-dark-text-muted: #999; + + /* Grid colors */ + --grid-primary: var(--trans-blue); + --grid-secondary: var(--trans-pink); + --grid-accent: var(--trans-white); + --grid-border: rgba(91, 206, 250, 0.2); + + /* Neon effects - optimized for grid density */ + --neon-blue-shadow: 0 0 8px rgba(91, 206, 250, 0.6); + --neon-pink-shadow: 0 0 8px rgba(245, 169, 184, 0.6); + --neon-white-shadow: 0 0 6px rgba(255, 255, 255, 0.4); + + /* Tight spacing for maximum content density */ + --space-xs: 0.25rem; + --space-sm: 0.5rem; + --space-md: 0.75rem; + --space-lg: 1rem; + --space-xl: 1.5rem; + --space-2xl: 2rem; + + /* Compact typography */ + --text-xs: 0.7rem; + --text-sm: 0.8rem; + --text-base: 0.9rem; + --text-lg: 1rem; + --text-xl: 1.1rem; + --text-2xl: 1.3rem; + --text-3xl: 1.8rem; + --text-4xl: 2.2rem; + + /* Layout */ + --home-radius: 8px; + --home-max-width: 1400px; + --grid-gap: var(--space-sm); + --card-padding: var(--space-md); +} + +/* Homepage body setup */ +body[data-md-template="home"] { + background: var(--home-dark-bg); + margin: 0; + padding: 0; + overflow-x: hidden; +} + +/* Hide MkDocs chrome completely */ +body[data-md-template="home"] .md-header, +body[data-md-template="home"] .md-tabs, +body[data-md-template="home"] .md-sidebar, +body[data-md-template="home"] .md-footer, +body[data-md-template="home"] .md-footer-meta { + display: none !important; +} + +body[data-md-template="home"] .md-content { + padding: 0 !important; + margin: 0 !important; +} + +body[data-md-template="home"] .md-main__inner { + margin: 0 !important; + max-width: none !important; +} + +/* Homepage content wrapper */ +.md-content--home { + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; + color: var(--home-dark-text); + background: var(--home-dark-bg); + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + min-height: 100vh; + line-height: 1.4; +} + +/* ================================= + ULTRA-TIGHT GRID SYSTEM + ================================= */ + +.grid-container { + max-width: 1200px; + margin: 0 auto; + padding: var(--space-sm); + display: grid; + gap: var(--space-xs); +} + +.grid-card { + background: var(--home-dark-card); + border: 1px solid var(--grid-border); + border-radius: 4px; + padding: var(--space-md); + transition: all 0.2s ease; + position: relative; + overflow: hidden; +} + +.grid-card::before { + content: ''; + position: absolute; + top: 0; + left: -100%; + width: 100%; + height: 2px; + background: linear-gradient(90deg, transparent, var(--trans-blue), transparent); + transition: left 0.5s ease; +} + +.grid-card:hover::before { + left: 100%; +} + +.grid-card:hover { + border-color: var(--trans-blue); + box-shadow: 0 0 15px rgba(91, 206, 250, 0.3); + transform: translateY(-1px); +} + +/* ================================= + HERO GRID - ULTRA COMPACT + ================================= */ + +.hero-grid { + padding: var(--space-md) 0; + background: linear-gradient(180deg, var(--home-dark-bg) 0%, var(--home-dark-surface) 100%); +} + +.hero-grid .grid-container { + grid-template-columns: 2fr 1fr; + grid-template-rows: auto auto; + grid-template-areas: + "hero-main hero-problem" + "hero-stats hero-trust"; + gap: var(--space-sm); +} + +.hero-main { + grid-area: hero-main; +} + +.hero-problem { + grid-area: hero-problem; +} + +.hero-stats { + grid-area: hero-stats; +} + +.hero-trust { + grid-area: hero-trust; +} + +/* Neon badge animation */ +.meta-badge { + background: linear-gradient(135deg, var(--trans-blue), var(--trans-pink)); + color: #000; + font-size: 0.7rem; + font-weight: 700; + padding: 0.2rem 0.8rem; + border-radius: 20px; + display: inline-block; + margin-bottom: var(--space-sm); + animation: neon-pulse 2s ease-in-out infinite; +} + +@keyframes neon-pulse { + 0%, 100% { + box-shadow: 0 0 5px rgba(91, 206, 250, 0.8), + 0 0 10px rgba(91, 206, 250, 0.6), + 0 0 15px rgba(91, 206, 250, 0.4); + } + 50% { + box-shadow: 0 0 10px rgba(245, 169, 184, 0.8), + 0 0 20px rgba(245, 169, 184, 0.6), + 0 0 30px rgba(245, 169, 184, 0.4); + } +} + +.hero-main h1 { + font-size: 2rem; + font-weight: 800; + margin: 0 0 var(--space-sm) 0; + line-height: 1.1; + background: linear-gradient(135deg, var(--trans-white), var(--trans-blue)); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; + animation: text-glow 3s ease-in-out infinite; +} + +@keyframes text-glow { + 0%, 100% { filter: brightness(1); } + 50% { filter: brightness(1.2); } +} + +.hero-main p { + font-size: 0.9rem; + color: var(--home-dark-text-muted); + margin: 0 0 var(--space-lg) 0; + line-height: 1.4; +} + +.hero-ctas { + display: flex; + gap: var(--space-sm); +} + +/* Problem/Solution blocks */ +.hero-problem h3, +.hero-stats h3, +.hero-trust h3 { + font-size: 0.9rem; + margin: 0 0 var(--space-sm) 0; + color: var(--trans-blue); + text-transform: uppercase; + letter-spacing: 0.05em; +} + +.problem-list { + display: flex; + flex-direction: column; + gap: var(--space-xs); +} + +.problem-item { + font-size: 0.8rem; + color: var(--home-dark-text-muted); + padding: var(--space-xs); + background: var(--home-dark-surface); + border-radius: 2px; +} + +.stat-grid { + display: grid; + grid-template-columns: 1fr 1fr; + gap: var(--space-xs); +} + +.stat-item { + text-align: center; + padding: var(--space-xs); + background: var(--home-dark-surface); + border-radius: 2px; +} + +.stat-number { + font-size: 1.2rem; + font-weight: 700; + color: var(--trans-blue); + margin: 0; + animation: number-glow 4s ease-in-out infinite; +} + +@keyframes number-glow { + 0%, 100% { text-shadow: 0 0 5px rgba(91, 206, 250, 0.5); } + 50% { text-shadow: 0 0 10px rgba(91, 206, 250, 0.8); } +} + +.stat-label { + font-size: 0.65rem; + color: var(--home-dark-text-muted); + margin: 0; +} + +.trust-items { + display: grid; + grid-template-columns: 1fr 1fr; + gap: var(--space-xs); +} + +.trust-item { + display: flex; + align-items: center; + gap: var(--space-xs); + font-size: 0.7rem; + padding: var(--space-xs); + background: var(--home-dark-surface); + border-radius: 2px; +} + +/* ================================= + SERVICES GRID - ULTRA COMPACT + ================================= */ + +.solution-grid { + padding: var(--space-lg) 0; + border-top: 1px solid var(--grid-border); +} + +.section-header { + text-align: center; + margin-bottom: var(--space-lg); +} + +.section-header h2 { + font-size: 1.8rem; + font-weight: 700; + margin: 0 0 var(--space-xs) 0; + color: var(--home-dark-text); +} + +.section-header p { + font-size: 0.9rem; + color: var(--home-dark-text-muted); + margin: 0; +} + +.services-grid { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); + gap: var(--space-sm); +} + +.service-card { + text-align: center; + cursor: pointer; +} + +.service-card:hover .service-icon { + animation: icon-bounce 0.5s ease; +} + +@keyframes icon-bounce { + 0%, 100% { transform: translateY(0); } + 50% { transform: translateY(-5px); } +} + +.service-icon { + font-size: 2rem; + margin-bottom: var(--space-xs); +} + +.service-card h3 { + font-size: 0.9rem; + margin: 0 0 var(--space-xs) 0; + color: var(--home-dark-text); +} + +.service-replaces { + font-size: 0.65rem; + color: var(--trans-pink); + margin-bottom: var(--space-sm); + text-transform: uppercase; + letter-spacing: 0.05em; +} + +.service-features { + list-style: none; + padding: 0; + margin: 0 0 var(--space-sm) 0; + font-size: 0.7rem; + color: var(--home-dark-text-muted); +} + +.service-features li { + padding: 0.1rem 0; +} + +.service-tool { + font-size: 0.75rem; + font-weight: 600; + color: var(--trans-blue); + padding: 0.2rem 0.5rem; + background: var(--home-dark-surface); + border-radius: 2px; + display: inline-block; +} + +/* ================================= + COMPARISON TABLE - GRID STYLE + ================================= */ + +.comparison-grid { + padding: var(--space-lg) 0; + background: var(--home-dark-surface); +} + +.comparison-table { + display: grid; + gap: var(--space-xs); +} + +.comparison-header, +.comparison-row { + display: grid; + grid-template-columns: 1fr 1fr 1fr; + align-items: center; +} + +.comparison-header { + font-weight: 700; + font-size: 0.8rem; + text-transform: uppercase; + letter-spacing: 0.05em; +} + +.compare-col { + text-align: center; + padding: var(--space-sm); +} + +.compare-col.highlight { + color: var(--trans-blue); +} + +.comparison-row { + font-size: 0.8rem; +} + +.compare-label { + padding: var(--space-sm); + font-weight: 600; +} + +.compare-value { + text-align: center; + padding: var(--space-sm); +} + +.compare-value.bad { + color: #ff6b6b; +} + +.compare-value.good { + color: #4ecdc4; + font-weight: 600; +} + +/* ================================= + OPTIONS GRID - ULTRA COMPACT + ================================= */ + +.get-started-grid { + padding: var(--space-lg) 0; +} + +.options-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); + gap: var(--space-sm); + margin-bottom: var(--space-lg); +} + +.option-card { + text-align: center; + position: relative; +} + +.option-card.featured { + border-color: var(--trans-blue); + animation: featured-glow 3s ease-in-out infinite; +} + +@keyframes featured-glow { + 0%, 100% { + box-shadow: 0 0 10px rgba(91, 206, 250, 0.4), + 0 0 20px rgba(91, 206, 250, 0.2); + } + 50% { + box-shadow: 0 0 20px rgba(91, 206, 250, 0.6), + 0 0 30px rgba(91, 206, 250, 0.3); + } +} + +.option-badge { + position: absolute; + top: -8px; + left: 50%; + transform: translateX(-50%); + background: var(--trans-blue); + color: #000; + padding: 0.1rem 0.6rem; + border-radius: 10px; + font-size: 0.65rem; + font-weight: 700; +} + +.option-icon { + font-size: 2.5rem; + margin-bottom: var(--space-sm); +} + +.option-card h3 { + font-size: 1.2rem; + margin: 0 0 var(--space-xs) 0; + color: var(--home-dark-text); +} + +.option-price { + font-size: 2rem; + font-weight: 700; + color: var(--trans-blue); + margin-bottom: var(--space-sm); +} + +.option-features { + margin-bottom: var(--space-lg); + text-align: left; +} + +.feature { + padding: 0.2rem 0; + color: var(--home-dark-text-muted); + font-size: 0.75rem; +} + +/* Final CTA */ +.final-cta { + text-align: center; + padding: var(--space-xl); +} + +.final-cta h3 { + font-size: 1.5rem; + margin: 0 0 var(--space-sm) 0; + color: var(--home-dark-text); +} + +.final-cta p { + font-size: 0.9rem; + color: var(--home-dark-text-muted); + margin: 0 0 var(--space-lg) 0; +} + +.cta-buttons { + display: flex; + gap: var(--space-sm); + justify-content: center; +} + +/* ================================= + BUTTONS - NEON STYLE + ================================= */ + +.btn { + display: inline-flex; + align-items: center; + justify-content: center; + padding: 0.4rem 1rem; + font-size: 0.8rem; + font-weight: 600; + text-decoration: none; + border-radius: 4px; + transition: all 0.2s ease; + border: 1px solid transparent; + cursor: pointer; + min-width: 100px; + position: relative; + overflow: hidden; + color: var(--mkdocs-purple-dark); +} + +.btn::before { + content: ''; + position: absolute; + top: 50%; + left: 50%; + width: 0; + height: 0; + border-radius: 50%; + background: rgba(255, 255, 255, 0.2); + transform: translate(-50%, -50%); + transition: width 0.6s, height 0.6s; +} + +.btn:hover::before { + width: 300px; + height: 300px; +} + +.btn-primary { + background: var(--mkdocs-purple); + color: var(--mkdocs-purple-dark); + border-color: var(--mkdocs-purple); +} + +.btn-primary:hover { + background: var(--mkdocs-purple-dark); + color: #000; + box-shadow: 0 0 15px var(--mkdocs-purple); + transform: translateY(-1px); +} + +.btn-secondary { + background: transparent; + color: var(--mkdocs-purple); + border-color: var(--mkdocs-purple); +} + +.btn-secondary:hover { + background: var(--mkdocs-purple-dark); + color: #000; + box-shadow: 0 0 15px var(--mkdocs-purple); +} + +/* ================================= + RESPONSIVE - ULTRA TIGHT + ================================= */ + +@media (max-width: 768px) { + .grid-container { + gap: var(--space-xs); + padding: var(--space-xs); + } + + .hero-grid .grid-container { + grid-template-columns: 1fr; + grid-template-areas: + "hero-main" + "hero-problem" + "hero-stats" + "hero-trust"; + } + + .services-grid { + grid-template-columns: 1fr; + } + + .comparison-header, + .comparison-row { + font-size: 0.7rem; + } + + .options-grid { + grid-template-columns: 1fr; + } + + .cta-buttons { + flex-direction: column; + } + + .hero-main h1 { + font-size: 1.5rem; + } +} + +@media (max-width: 480px) { + .grid-card { + padding: var(--space-sm); + } + + .trust-items, + .stat-grid { + grid-template-columns: 1fr; + } + + .service-card { + padding: var(--space-sm); + } + + .hero-main h1 { + font-size: 1.3rem; + } +} + +/* ================================= + PERFORMANCE + ================================= */ + +@media (prefers-reduced-motion: reduce) { + * { + animation: none !important; + transition: none !important; + } +} + +/* GPU acceleration */ +.grid-card, +.btn { + will-change: transform; + backface-visibility: hidden; +} + +/* Badge for FOSS First */ +.badge-new { + display: inline-block; + background: var(--mkdocs-purple); + color: #fff; + font-size: 0.65em; + font-weight: 700; + border-radius: 8px; + padding: 0.1em 0.5em; + margin-left: 0.3em; + letter-spacing: 0.03em; + vertical-align: middle; + box-shadow: 0 0 6px var(--mkdocs-purple-dark); +} \ No newline at end of file diff --git a/mkdocs/mkdocs.yml b/mkdocs/mkdocs.yml index ba42217..2368878 100644 --- a/mkdocs/mkdocs.yml +++ b/mkdocs/mkdocs.yml @@ -1,66 +1,169 @@ -site_name: Changemaker Lite Documentation -site_description: Self-hosted platform for documentation and development +site_name: Changemaker Lite +site_description: Build Power. Not Rent It. Own your digital infrastructure. site_url: https://cmlite.org -site_author: Bunker Ops +site_author: Bunker Operations docs_dir: docs site_dir: site +# Repository +repo_url: https://gitea.bnkops.com/admin/changemaker.lite +repo_name: changemaker.lite +edit_uri: "" + # Theme theme: name: material custom_dir: docs/overrides + # logo: assets/logo.png # Commented out until logo exists + # favicon: assets/favicon.png # Commented out until favicon exists palette: - scheme: slate - primary: deep purple - accent: amber + - scheme: slate + primary: deep purple + accent: amber + toggle: + icon: material/weather-night + name: Switch to light mode + - scheme: default + primary: deep purple + accent: amber + toggle: + icon: material/weather-sunny + name: Switch to dark mode + font: + text: Inter + code: JetBrains Mono features: - - navigation.tracking - - navigation.indexes - - navigation.collapse - - navigation.path + - announce.dismiss + - content.action.edit + - content.action.view + - content.code.annotate - content.code.copy + - content.tooltips + - navigation.expand + - navigation.footer + - navigation.indexes + - navigation.instant + - navigation.instant.prefetch + - navigation.instant.progress + - navigation.path + - navigation.prune + - navigation.sections + - navigation.tabs + - navigation.tabs.sticky - navigation.top - - navigation.tabs # Added for top-level navigation tabs - -extra_css: - - stylesheets/extra.css -markdown_extensions: - - pymdownx.highlight: - anchor_linenums: true - - pymdownx.superfences - - admonition - - pymdownx.details - - attr_list - - md_in_html - - pymdownx.emoji # Simplified emoji config - - footnotes - - toc: - permalink: true - # The specific slugify line was removed to avoid previous tool error, - # you may need to add back your preferred slugify option: - # slugify: !!python/name:pymdownx.slugs.uslugify - -copyright: Copyright © 2024 The Bunker Operations - Built with Change Maker + - navigation.tracking + - search.highlight + - search.share + - search.suggest + - toc.follow # Plugins plugins: - - social - - search - - blog - # - tags # Consider adding if you use tags for your blog or docs + - search: + separator: '[\s\u200b\-_,:!=\[\]()"`/]+|\.(?!\d)|&[lg]t;|(?!\b)(?=[A-Z][a-z])' + - social: + cards_layout_options: + background_color: "#5BCEFA" + color: "#FFFFFF" + - blog: + blog_dir: blog + post_date_format: medium + archive_name: Archive + categories_name: Categories + - tags -# Navigation +# Extra CSS and JS +extra_css: + - stylesheets/extra.css + - stylesheets/home.css + +extra_javascript: + - javascripts/home.js + +# Markdown Extensions +markdown_extensions: + - abbr + - admonition + - attr_list + - def_list + - footnotes + - md_in_html + - toc: + permalink: true + title: On this page + - pymdownx.arithmatex: + generic: true + - pymdownx.betterem: + smart_enable: all + - pymdownx.caret + - pymdownx.details + - pymdownx.emoji: + emoji_index: !!python/name:material.extensions.emoji.twemoji + emoji_generator: !!python/name:material.extensions.emoji.to_svg + - pymdownx.highlight: + anchor_linenums: true + line_spans: __span + pygments_lang_class: true + - pymdownx.inlinehilite + - pymdownx.keys + - pymdownx.mark + - pymdownx.smartsymbols + - pymdownx.snippets + - pymdownx.superfences: + custom_fences: + - name: mermaid + class: mermaid + format: !!python/name:pymdownx.superfences.fence_code_format + - pymdownx.tabbed: + alternate_style: true + combine_header_slug: true + - pymdownx.tasklist: + custom_checkbox: true + - pymdownx.tilde + +# Extra configuration +extra: + generator: false + social: + - icon: fontawesome/brands/github + link: https://gitea.bnkops.com/admin + name: Gitea Repository + - icon: fontawesome/solid/paper-plane + link: https://listmonk.bnkops.com/subscription/form + name: Newsletter + # Removed analytics as plausible is not built-in + consent: + title: Cookie consent + description: >- + We use cookies to recognize your repeated visits and preferences, as well + as to measure the effectiveness of our documentation and whether users + find what they're searching for. With your consent, you're helping us to + make our documentation better. + +# Copyright +copyright: > + Copyright © 2024 The Bunker Operations – + Change cookie settings + +# Navigation - Updated to match existing files nav: - Home: index.md - Getting Started: getting-started.md + - Philosophy: philosophy.md + - Cost Comparison: cost-comparison.md - Services: - - Overview: services/index.md + - services/index.md - Homepage: services/homepage.md - Code Server: services/code-server.md - - MkDocs Material: services/mkdocs.md - - Static Site Server: services/static-server.md + - MkDocs: services/mkdocs.md + - Static Server: services/static-server.md - Listmonk: services/listmonk.md - PostgreSQL: services/postgresql.md - n8n: services/n8n.md - NocoDB: services/nocodb.md - - Blog: blog/index.md + - Gitea: services/gitea.md + - Map Viewer: services/map.md + - Mini QR: services/mini-qr.md + - Cloudflare Tunnels: cloudflare/index.md + - Blog: + - blog/index.md diff --git a/mkdocs/site/404.html b/mkdocs/site/404.html index cf8baae..e7f8a05 100644 --- a/mkdocs/site/404.html +++ b/mkdocs/site/404.html @@ -6,10 +6,10 @@ - + - + @@ -20,7 +20,7 @@ - Changemaker Lite Documentation + Changemaker Lite @@ -41,13 +41,15 @@ - - + + + + @@ -55,12 +57,16 @@ + + + + @@ -78,12 +84,19 @@ @@ -91,9 +104,11 @@ Changemaker Archive. Learn more -
+ + +
-
-
- - - - - + + +
+ +
+ +
@@ -281,15 +401,27 @@ Changemaker Archive. Learn more
@@ -636,7 +679,9 @@ Changemaker Archive. Learn more
-