diff --git a/git-report.txt b/git-report.txt new file mode 100644 index 0000000..f789bcd --- /dev/null +++ b/git-report.txt @@ -0,0 +1,68 @@ +e488a23 2025-08-01 | admin | few small changes to language on the admin page +5b673da 2025-08-01 | admin | A tonne more changes, including new nocodb admin section, search for database, code cleanups, and debugging +9fcaf48 2025-08-01 | admin | website updates +55cd626 2025-08-01 | admin | Data converter +0dacdfc 2025-07-31 | admin | udpated config to properly build for smtp +52d921c 2025-07-31 | admin | smtp integration and password recovery. +c0811de 2025-07-31 | admin | a few more dashboard updates +d775dea 2025-07-30 | admin | mobile friendliness +373018c 2025-07-30 | admin | anaylitics dashboard +7edc665 2025-07-30 | admin | square representations of apartments +0d7bdf0 2025-07-29 | admin | Updated apartment locations to stand out mor +dfe7c69 2025-07-28 | admin | some auth updates that got over written +8cebb56 2025-07-27 | admin | Fixed the input form modal to be above the other modals. +d711456 2025-07-27 | admin | Full update to map css +994440a 2025-07-27 | admin | Added apartment views and city of edmonton data import +5da24ae 2025-07-27 | admin | New site frontend updates, search, and general bug fixes +3b7d382 2025-07-24 | admin | Some udpates to tracking user inputs. Still not happy with it but functional so moving on +bb7032d 2025-07-24 | admin | A tonne of updates to how the system builds the view points in hopes of having a better mobile expereince +59ca237 2025-07-22 | admin | QR Code Maker update +dd416f8 2025-07-20 | admin | fixed the search float +54b9210 2025-07-19 | admin | new stuff +5bf87d4 2025-07-19 | admin | New search functionality +0088ffd 2025-07-19 | admin | few cosmetic updates +7989ea0 2025-07-18 | admin | added a move system for the pins +b98207b 2025-07-17 | admin | Fixed some menu bugs +6aae0fe 2025-07-17 | admin | added in the user managment section. Need to also do some updates to the admin menue and whatnot however itll get figured. +88b80bc 2025-07-16 | admin | bug fixes for shifts functionality +65c786d 2025-07-16 | admin | new system for address confrimation +ff3e1e8 2025-07-16 | admin | Added calendar view to the shifts +e056290 2025-07-16 | admin | updated the config.sh so that multiple changemakers can be run on each machine easier. +167b82f 2025-07-16 | admin | added shift titles to the shift signup sheets to make tracking easier and adding shifts easier +fb90f2a 2025-07-16 | admin | Config fixes for the services. yaml and a couple minor things about making it more url agnostic. +2c0c943 2025-07-16 | admin | config changes to better build map .env and updates to the login ui controls +0dd56c0 2025-07-16 | admin | Couple more updates to shiftcontroller to make it more robust +a5bd0e9 2025-07-16 | admin | Fixed bug for displaying sign ups for shifts +9e5b319 2025-07-13 | admin | Fixed bug with where maps presents +2b05b60 2025-07-11 | admin | debugged build precision values on decimal places inside nocodb +0878237 2025-07-11 | admin | Fixes to the map display and several other bugs +c29ad2d 2025-07-10 | admin | Shifts manager +5cba672 2025-07-10 | admin | updates to saving settings +2778b15 2025-07-09 | admin | map system updates +1236c6b 2025-07-09 | admin | Mpas manual and udpates to map view buttons for simpler workflow +34ef38a 2025-07-09 | admin | UI updates to better position map for building dots +d11837e 2025-07-09 | admin | Added in a password field for login. need to add encryption sometime +ab2e91e 2025-07-08 | admin | fixed the preview on moblie for the walk sheet +e31b770 2025-07-08 | admin | naming updates +de3b349 2025-07-08 | admin | documentation updates +56ab400 2025-07-07 | admin | map styling update +488bb99 2025-07-07 | admin | build nocodb udpate - makes new base on every run +c1f6f25 2025-07-06 | admin | okay bidirectional saving done +1ba3899 2025-07-06 | admin | final update for the map server omg +18de90f 2025-07-06 | admin | got config save working +5f39ce8 2025-07-06 | admin | more configs and readme updates. +c4ea519 2025-07-06 | admin | reste.sh updatae +ac01d92 2025-07-06 | admin | okay got to a much more stable state. Fixed race condtion at stat of files. Should be smooth salining for a bit now. +1fc8b52 2025-07-06 | admin | final round of updates. Still need to stabalize first load for the map, having issues for sure; longer load time +f4eefa1 2025-07-05 | admin | resolved most in browser errors and got maps stable. Next need to do some work on the save configuration stuff. +412ca36 2025-07-05 | admin | config.sh fix +776420b 2025-07-05 | admin | build shell script for NocoDB map data +77c3a32 2025-07-05 | admin | new maps admin feature +09c8e02 2025-07-05 | admin | start production updates +4b6acbd 2025-07-04 | admin | update so we can run more than one changemaker per machine +e9d5af3 2025-07-04 | admin | removed the cloudflare credentials and yml from up +d41bd87 2025-07-04 | admin | pushing updates before doing a reset on local machine. +ed0bd33 2025-07-04 | admin | Clean up +949be0b 2025-07-03 | admin | maps updates +7e65665 2025-07-03 | admin | Some updates to the start-production script and just general clean up +ea6e5f1 2025-07-02 | admin | a tonne of improvements! We got maps updaTed, a tonne of documentaiton done, and several small upgrades to hook logic and other things. Fixed the looping problem for mkdocs and claude is not integrated with coder; if people wanna have a ai anyway \ No newline at end of file diff --git a/map/app/controllers/usersController.js b/map/app/controllers/usersController.js index c265c8a..7da2f64 100644 --- a/map/app/controllers/usersController.js +++ b/map/app/controllers/usersController.js @@ -2,6 +2,7 @@ const nocodbService = require('../services/nocodb'); const logger = require('../utils/logger'); const config = require('../config'); const { sanitizeUser, extractId } = require('../utils/helpers'); +const { sendLoginDetails } = require('../services/email'); class UsersController { async getAll(req, res) { @@ -155,6 +156,47 @@ class UsersController { }); } } + + async sendLoginDetails(req, res) { + try { + const userId = req.params.id; + + if (!config.nocodb.loginSheetId) { + return res.status(500).json({ + success: false, + error: 'Login sheet not configured' + }); + } + + // Get user data from database + const user = await nocodbService.getById( + config.nocodb.loginSheetId, + userId + ); + + if (!user) { + return res.status(404).json({ + success: false, + error: 'User not found' + }); + } + + // Send login details email + await sendLoginDetails(user); + + res.json({ + success: true, + message: 'Login details sent successfully' + }); + + } catch (error) { + logger.error('Error sending login details:', error); + res.status(500).json({ + success: false, + error: 'Failed to send login details' + }); + } + } } module.exports = new UsersController(); \ No newline at end of file diff --git a/map/app/public/js/admin.js b/map/app/public/js/admin.js index b9f1d50..2ff5f4f 100644 --- a/map/app/public/js/admin.js +++ b/map/app/public/js/admin.js @@ -346,7 +346,7 @@ function setupEventListeners() { } // User form submission - const userForm = document.getElementById('user-form'); + const userForm = document.getElementById('create-user-form'); if (userForm) { userForm.addEventListener('submit', createUser); } @@ -1269,6 +1269,9 @@ function displayUsers(users) { ${formattedDate}
+ @@ -1288,22 +1291,27 @@ function displayUsers(users) { } function setupUserActionListeners() { - const tableBody = document.getElementById('users-table-body'); - if (!tableBody) return; + const container = document.querySelector('.users-list'); + if (!container) return; - // Remove existing listeners by cloning the node - const newTableBody = tableBody.cloneNode(true); - tableBody.parentNode.replaceChild(newTableBody, tableBody); + // Remove existing event listeners by cloning the container + const newContainer = container.cloneNode(true); + container.parentNode.replaceChild(newContainer, container); // Get the updated reference - const updatedTableBody = document.getElementById('users-table-body'); + const updatedContainer = document.querySelector('.users-list'); - updatedTableBody.addEventListener('click', function(e) { + updatedContainer.addEventListener('click', function(e) { if (e.target.classList.contains('delete-user-btn')) { const userId = e.target.getAttribute('data-user-id'); const userEmail = e.target.getAttribute('data-user-email'); console.log('Delete button clicked for user:', userId); deleteUser(userId, userEmail); + } else if (e.target.classList.contains('send-login-btn')) { + const userId = e.target.getAttribute('data-user-id'); + const userEmail = e.target.getAttribute('data-user-email'); + console.log('Send login details button clicked for user:', userId); + sendLoginDetailsToUser(userId, userEmail); } }); } @@ -1333,13 +1341,40 @@ async function deleteUser(userId, userEmail) { } } +async function sendLoginDetailsToUser(userId, userEmail) { + if (!confirm(`Send login details to "${userEmail}"?`)) { + return; + } + + try { + const response = await fetch(`/api/users/${userId}/send-login-details`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + } + }); + + const data = await response.json(); + + if (data.success) { + showStatus(`Login details sent to "${userEmail}" successfully`, 'success'); + } else { + throw new Error(data.error || 'Failed to send login details'); + } + + } catch (error) { + console.error('Error sending login details:', error); + showStatus(`Failed to send login details: ${error.message}`, 'error'); + } +} + async function createUser(e) { e.preventDefault(); const email = document.getElementById('user-email').value.trim(); const password = document.getElementById('user-password').value; const name = document.getElementById('user-name').value.trim(); - const admin = document.getElementById('user-admin').checked; + const admin = document.getElementById('user-is-admin').checked; if (!email || !password) { showStatus('Email and password are required', 'error'); @@ -1382,7 +1417,7 @@ async function createUser(e) { } function clearUserForm() { - const form = document.getElementById('user-form'); + const form = document.getElementById('create-user-form'); if (form) { form.reset(); showStatus('User form cleared', 'info'); diff --git a/map/app/routes/users.js b/map/app/routes/users.js index 2e28f50..5521d70 100644 --- a/map/app/routes/users.js +++ b/map/app/routes/users.js @@ -8,6 +8,9 @@ router.get('/', usersController.getAll); // Create new user router.post('/', usersController.create); +// Send login details to user +router.post('/:id/send-login-details', usersController.sendLoginDetails); + // Delete user router.delete('/:id', usersController.delete); diff --git a/map/app/services/email.js b/map/app/services/email.js index 7fcc455..db2a3ca 100644 --- a/map/app/services/email.js +++ b/map/app/services/email.js @@ -92,8 +92,41 @@ const sendPasswordRecovery = async (user) => { } }; +const sendLoginDetails = async (user) => { + try { + const baseUrl = config.isProduction ? + `https://map.${config.domain}` : + `http://localhost:${config.port}`; + + const isAdmin = user.admin || user.Admin || false; + + const variables = { + APP_NAME: process.env.APP_NAME || 'CMlite Map', + USER_NAME: user.Name || user.name || user.Email || user.email, + USER_EMAIL: user.Email || user.email, + PASSWORD: user.Password || user.password, + USER_ROLE: isAdmin ? 'Administrator' : 'User', + LOGIN_URL: `${baseUrl}/login.html`, + TIMESTAMP: new Date().toLocaleString() + }; + + const { html, text } = await emailTemplates.render('login-details', variables); + + return await sendEmail({ + to: user.Email || user.email, + subject: `Your Login Details - ${variables.APP_NAME}`, + text, + html + }); + } catch (error) { + logger.error('Failed to send login details email:', error); + throw error; + } +}; + module.exports = { initializeEmailService, sendEmail, - sendPasswordRecovery + sendPasswordRecovery, + sendLoginDetails }; \ No newline at end of file diff --git a/map/app/templates/email/login-details.html b/map/app/templates/email/login-details.html new file mode 100644 index 0000000..cd61b51 --- /dev/null +++ b/map/app/templates/email/login-details.html @@ -0,0 +1,116 @@ + + + + + Your Login Details + + + +
+
+ +
+
+

Your Login Details

+

Hello {{USER_NAME}},

+

Here are your login credentials for {{APP_NAME}}:

+ +
+
+ Email: + {{USER_EMAIL}} +
+
+ Password: + {{PASSWORD}} +
+
+ Role: + {{USER_ROLE}} +
+
+ +

You can log in using the link below:

+

+ +

+ +

💡 For security reasons, we recommend changing your password after your first login.

+
+ +
+ + diff --git a/map/app/templates/email/login-details.txt b/map/app/templates/email/login-details.txt new file mode 100644 index 0000000..021b747 --- /dev/null +++ b/map/app/templates/email/login-details.txt @@ -0,0 +1,17 @@ +Login Details - {{APP_NAME}} + +Hello {{USER_NAME}}, + +Here are your login credentials for {{APP_NAME}}: + +Email: {{USER_EMAIL}} +Password: {{PASSWORD}} +Role: {{USER_ROLE}} + +You can log in at: {{LOGIN_URL}} + +For security reasons, we recommend changing your password after your first login. + +--- +This email was sent from {{APP_NAME}} at {{TIMESTAMP}} +If you have any questions, please contact your administrator. diff --git a/map/files-explainer.md b/map/files-explainer.md index a75bcf8..2b1dfae 100644 --- a/map/files-explainer.md +++ b/map/files-explainer.md @@ -62,7 +62,7 @@ Controller for aggregating and calculating dashboard statistics from locations a # app/controllers/usersController.js -Controller for user management (list, create, delete users). +Controller for user management (list, create, delete users, send login details via email). # app/middleware/auth.js @@ -98,7 +98,7 @@ Service for generating QR codes and handling QR-related logic. # app/services/email.js -Service for sending emails via SMTP, including password recovery emails using nodemailer. Supports multiple SMTP providers and includes connection verification and error handling. +Service for sending emails via SMTP, including password recovery emails and login details using nodemailer. Supports multiple SMTP providers and includes connection verification and error handling. # app/services/emailTemplates.js @@ -112,6 +112,14 @@ Plain text email template for password recovery notifications. Contains user-fri HTML email template for password recovery notifications. Features responsive design with styled password display box and security warnings for better user experience. +# app/templates/email/login-details.txt + +Plain text email template for sending login credentials to users. Contains email, password, role, and login URL with security recommendations. + +# app/templates/email/login-details.html + +HTML email template for sending login credentials to users. Features responsive design with styled credentials display and login button for better user experience. + # app/utils/helpers.js Utility functions for geographic data, validation, and helpers used across the backend. diff --git a/mkdocs/.cache/plugin/social/bae6e5d76e4a4ee30a1f912a9b050b3a.png b/mkdocs/.cache/plugin/social/bae6e5d76e4a4ee30a1f912a9b050b3a.png new file mode 100644 index 0000000..3183deb Binary files /dev/null and b/mkdocs/.cache/plugin/social/bae6e5d76e4a4ee30a1f912a9b050b3a.png differ diff --git a/mkdocs/docs/assets/repo-data/admin-changemaker.lite.json b/mkdocs/docs/assets/repo-data/admin-changemaker.lite.json index 8723a7d..8a18e54 100644 --- a/mkdocs/docs/assets/repo-data/admin-changemaker.lite.json +++ b/mkdocs/docs/assets/repo-data/admin-changemaker.lite.json @@ -7,10 +7,10 @@ "stars_count": 0, "forks_count": 0, "open_issues_count": 8, - "updated_at": "2025-08-01T10:32:33-06:00", + "updated_at": "2025-08-01T15:14:12-06:00", "created_at": "2025-05-28T14:54:59-06:00", "clone_url": "https://gitea.bnkops.com/admin/changemaker.lite.git", "ssh_url": "git@gitea.bnkops.com:admin/changemaker.lite.git", "default_branch": "main", - "last_build_update": "2025-08-01T10:32:33-06:00" + "last_build_update": "2025-08-01T15:14:12-06:00" } \ No newline at end of file diff --git a/mkdocs/docs/blog/posts/3.md b/mkdocs/docs/blog/posts/3.md new file mode 100644 index 0000000..70770a3 --- /dev/null +++ b/mkdocs/docs/blog/posts/3.md @@ -0,0 +1,74 @@ +--- +date: 2025-08-01 +--- + +Alrighty yall, it was a wild month of development, and we have a lot to cover! Here’s the latest on Changemaker Lite, including our new landing page, major updates to the map application, and a comprehensive overview of all changes made in the last month. + +Campaigning is going! We have candidates working the system in the field, and we’re excited to see how it performs in real-world scenarios. + +# Monthly Development Report – August 2025 + +## Git Change Summary (July–August 2025) + +Below is a summary of all changes pushed to git in the last month: + +- **Admin Panel & NocoDB Integration**: Major updates to the admin section, including a new NocoDB admin area, improved database search, and code cleanups. +- **Website & UI Updates**: Numerous updates to the website, including language tweaks, mobile friendliness, and new frontend features. +- **Shifts Management**: Comprehensive volunteer shift management system added, with calendar/grid views, admin controls, and real-time updates. +- **Authentication & User Management**: Enhanced login system, password recovery via SMTP, user management panel for admins, and role-based access control. +- **Map & Geocoding**: Improved map display, apartment views, geocoding integration, and address confirmation system. +- **Unified Search System**: Powerful search bar (Ctrl+K) for docs and address search, with real-time results, caching, and QR code generation. +- **Data Import & Conversion**: CSV data import with batch geocoding and visual progress, plus a new data converter tool. +- **Email & Notifications**: SMTP integration for email notifications and password recovery. +- **Performance & Bug Fixes**: Numerous bug fixes, code cleanups, and performance improvements across the stack. +- **Docker & Deployment**: Docker containerization, improved build scripts, and easier multi-instance deployment. +- **Documentation**: Expanded and updated documentation, including new manuals and guides. + +For a detailed commit log, see `git-report.txt`. + +--- + +## Overview of `lander.html` + +The `lander.html` file is a modern, responsive landing page for Changemaker Lite, featuring: + +- **Custom Theming**: Light/dark mode toggle with persistent user preference. +- **Sticky Header & Navigation**: Fixed header with smooth scroll and navigation links. +- **Hero Section**: Prominent introduction with call-to-action buttons. +- **Search Integration**: Inline MkDocs search with real-time results and keyboard shortcuts. +- **Feature Showcases**: Sections for problems, solutions, power tools, data ownership, pricing, integrations, testimonials, and live examples. +- **Responsive Design**: Mobile-friendly layout with adaptive grids and cards. +- **Animations**: Intersection observer for fade-in effects on cards and sections. +- **Video & Media**: Embedded video showcase and rich media support. +- **Footer**: Informative footer with links and contact info. + +The page is styled with CSS variables for easy theming and includes scripts for search, theme switching, and smooth scrolling. + +--- + +## New Features in Map (`README.md`) + +The map application has received significant upgrades: + +- **Interactive Map**: Real-time visualization with OpenStreetMap and Leaflet.js. +- **Unified Search**: Docs and address search in one bar, with keyboard shortcuts and smart caching. +- **Geolocation & Add Locations**: Real-time user geolocation and ability to add new locations directly from the map. +- **Auto-Refresh**: Map data auto-refreshes every 30 seconds. +- **Responsive & Mobile Ready**: Fully responsive design for all devices. +- **Secure API Proxy**: Protects credentials and secures API access. +- **Admin Panel**: System configuration, user management, and shift management for admins. +- **Walk Sheet Generator**: For door-to-door canvassing, with customizable titles and QR code integration. +- **Volunteer Shifts**: Calendar/grid views, signup/cancellation, admin shift creation, and real-time updates. +- **Role-Based Access**: Admin vs. user permissions throughout the app. +- **Email Notifications**: SMTP-based notifications and password recovery. +- **CSV Import & Geocoding**: Batch import with geocoding and progress tracking. +- **Dockerized Deployment**: Easy setup and scaling with Docker. +- **Open Source**: 100% open source, no proprietary dependencies. + +**API Endpoints**: Comprehensive REST API for locations, shifts, authentication, admin, and geocoding, all with rate limiting and security features. + +**Database Schema**: Auto-created tables for locations, users, settings, shifts, and signups, with detailed field definitions. + +--- + +For more details, see the full `README.md` and explore the live application. diff --git a/mkdocs/docs/phil/index.md b/mkdocs/docs/phil/index.md index 3c996d6..4412f25 100644 --- a/mkdocs/docs/phil/index.md +++ b/mkdocs/docs/phil/index.md @@ -54,20 +54,6 @@ Your data belongs to you and your community. We build tools that let you own you 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: @@ -90,7 +76,7 @@ Digital security culture asks: "Who controls the infrastructure where this infor 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 +- Are designed with liberation politics from the ground up using free and open source software - Prioritize care, consent, and collective power - Can be understood, modified, and improved by community members @@ -123,19 +109,6 @@ Real security comes from community control, not corporate promises. When you con - 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: diff --git a/mkdocs/site/assets/images/social/blog/posts/3.png b/mkdocs/site/assets/images/social/blog/posts/3.png new file mode 100644 index 0000000..3183deb Binary files /dev/null and b/mkdocs/site/assets/images/social/blog/posts/3.png differ diff --git a/mkdocs/site/assets/repo-data/admin-changemaker.lite.json b/mkdocs/site/assets/repo-data/admin-changemaker.lite.json index 8723a7d..8a18e54 100644 --- a/mkdocs/site/assets/repo-data/admin-changemaker.lite.json +++ b/mkdocs/site/assets/repo-data/admin-changemaker.lite.json @@ -7,10 +7,10 @@ "stars_count": 0, "forks_count": 0, "open_issues_count": 8, - "updated_at": "2025-08-01T10:32:33-06:00", + "updated_at": "2025-08-01T15:14:12-06:00", "created_at": "2025-05-28T14:54:59-06:00", "clone_url": "https://gitea.bnkops.com/admin/changemaker.lite.git", "ssh_url": "git@gitea.bnkops.com:admin/changemaker.lite.git", "default_branch": "main", - "last_build_update": "2025-08-01T10:32:33-06:00" + "last_build_update": "2025-08-01T15:14:12-06:00" } \ No newline at end of file diff --git a/mkdocs/site/blog/2025/07/10/2/index.html b/mkdocs/site/blog/2025/07/10/2/index.html index a2e23e8..3ebd12a 100644 --- a/mkdocs/site/blog/2025/07/10/2/index.html +++ b/mkdocs/site/blog/2025/07/10/2/index.html @@ -18,6 +18,8 @@ + + @@ -879,6 +881,22 @@ Changemaker Archive. Learn more + + + + + + diff --git a/mkdocs/site/blog/2025/08/01/3/index.html b/mkdocs/site/blog/2025/08/01/3/index.html new file mode 100644 index 0000000..f356eb8 --- /dev/null +++ b/mkdocs/site/blog/2025/08/01/3/index.html @@ -0,0 +1,1030 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + 3 - Changemaker Lite + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + Skip to content + + +
+
+ + + +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + + + + + + + + + +
+
+ +
+
+ + + +
+
+
+
+ + +
+
+
+
+ + + + + + + +

Alrighty yall, it was a wild month of development, and we have a lot to cover! Here’s the latest on Changemaker Lite, including our new landing page, major updates to the map application, and a comprehensive overview of all changes made in the last month.

+

Campaigning is going! We have candidates working the system in the field, and we’re excited to see how it performs in real-world scenarios.

+

Monthly Development Report – August 2025

+

Git Change Summary (July–August 2025)

+

Below is a summary of all changes pushed to git in the last month:

+
    +
  • Admin Panel & NocoDB Integration: Major updates to the admin section, including a new NocoDB admin area, improved database search, and code cleanups.
  • +
  • Website & UI Updates: Numerous updates to the website, including language tweaks, mobile friendliness, and new frontend features.
  • +
  • Shifts Management: Comprehensive volunteer shift management system added, with calendar/grid views, admin controls, and real-time updates.
  • +
  • Authentication & User Management: Enhanced login system, password recovery via SMTP, user management panel for admins, and role-based access control.
  • +
  • Map & Geocoding: Improved map display, apartment views, geocoding integration, and address confirmation system.
  • +
  • Unified Search System: Powerful search bar (Ctrl+K) for docs and address search, with real-time results, caching, and QR code generation.
  • +
  • Data Import & Conversion: CSV data import with batch geocoding and visual progress, plus a new data converter tool.
  • +
  • Email & Notifications: SMTP integration for email notifications and password recovery.
  • +
  • Performance & Bug Fixes: Numerous bug fixes, code cleanups, and performance improvements across the stack.
  • +
  • Docker & Deployment: Docker containerization, improved build scripts, and easier multi-instance deployment.
  • +
  • Documentation: Expanded and updated documentation, including new manuals and guides.
  • +
+

For a detailed commit log, see git-report.txt.

+
+

Overview of lander.html

+

The lander.html file is a modern, responsive landing page for Changemaker Lite, featuring:

+
    +
  • Custom Theming: Light/dark mode toggle with persistent user preference.
  • +
  • Sticky Header & Navigation: Fixed header with smooth scroll and navigation links.
  • +
  • Hero Section: Prominent introduction with call-to-action buttons.
  • +
  • Search Integration: Inline MkDocs search with real-time results and keyboard shortcuts.
  • +
  • Feature Showcases: Sections for problems, solutions, power tools, data ownership, pricing, integrations, testimonials, and live examples.
  • +
  • Responsive Design: Mobile-friendly layout with adaptive grids and cards.
  • +
  • Animations: Intersection observer for fade-in effects on cards and sections.
  • +
  • Video & Media: Embedded video showcase and rich media support.
  • +
  • Footer: Informative footer with links and contact info.
  • +
+

The page is styled with CSS variables for easy theming and includes scripts for search, theme switching, and smooth scrolling.

+
+

New Features in Map (README.md)

+

The map application has received significant upgrades:

+
    +
  • Interactive Map: Real-time visualization with OpenStreetMap and Leaflet.js.
  • +
  • Unified Search: Docs and address search in one bar, with keyboard shortcuts and smart caching.
  • +
  • Geolocation & Add Locations: Real-time user geolocation and ability to add new locations directly from the map.
  • +
  • Auto-Refresh: Map data auto-refreshes every 30 seconds.
  • +
  • Responsive & Mobile Ready: Fully responsive design for all devices.
  • +
  • Secure API Proxy: Protects credentials and secures API access.
  • +
  • Admin Panel: System configuration, user management, and shift management for admins.
  • +
  • Walk Sheet Generator: For door-to-door canvassing, with customizable titles and QR code integration.
  • +
  • Volunteer Shifts: Calendar/grid views, signup/cancellation, admin shift creation, and real-time updates.
  • +
  • Role-Based Access: Admin vs. user permissions throughout the app.
  • +
  • Email Notifications: SMTP-based notifications and password recovery.
  • +
  • CSV Import & Geocoding: Batch import with geocoding and progress tracking.
  • +
  • Dockerized Deployment: Easy setup and scaling with Docker.
  • +
  • Open Source: 100% open source, no proprietary dependencies.
  • +
+

API Endpoints: Comprehensive REST API for locations, shifts, authentication, admin, and geocoding, all with rate limiting and security features.

+

Database Schema: Auto-created tables for locations, users, settings, shifts, and signups, with detailed field definitions.

+
+

For more details, see the full README.md and explore the live application.

+ + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/mkdocs/site/blog/archive/2025/index.html b/mkdocs/site/blog/archive/2025/index.html index 0ecb763..6189950 100644 --- a/mkdocs/site/blog/archive/2025/index.html +++ b/mkdocs/site/blog/archive/2025/index.html @@ -770,6 +770,89 @@ Changemaker Archive. Learn more
+ +
+
+

3

+

Alrighty yall, it was a wild month of development, and we have a lot to cover! Here’s the latest on Changemaker Lite, including our new landing page, major updates to the map application, and a comprehensive overview of all changes made in the last month.

+

Campaigning is going! We have candidates working the system in the field, and we’re excited to see how it performs in real-world scenarios.

+

Monthly Development Report – August 2025

+

Git Change Summary (July–August 2025)

+

Below is a summary of all changes pushed to git in the last month:

+
    +
  • Admin Panel & NocoDB Integration: Major updates to the admin section, including a new NocoDB admin area, improved database search, and code cleanups.
  • +
  • Website & UI Updates: Numerous updates to the website, including language tweaks, mobile friendliness, and new frontend features.
  • +
  • Shifts Management: Comprehensive volunteer shift management system added, with calendar/grid views, admin controls, and real-time updates.
  • +
  • Authentication & User Management: Enhanced login system, password recovery via SMTP, user management panel for admins, and role-based access control.
  • +
  • Map & Geocoding: Improved map display, apartment views, geocoding integration, and address confirmation system.
  • +
  • Unified Search System: Powerful search bar (Ctrl+K) for docs and address search, with real-time results, caching, and QR code generation.
  • +
  • Data Import & Conversion: CSV data import with batch geocoding and visual progress, plus a new data converter tool.
  • +
  • Email & Notifications: SMTP integration for email notifications and password recovery.
  • +
  • Performance & Bug Fixes: Numerous bug fixes, code cleanups, and performance improvements across the stack.
  • +
  • Docker & Deployment: Docker containerization, improved build scripts, and easier multi-instance deployment.
  • +
  • Documentation: Expanded and updated documentation, including new manuals and guides.
  • +
+

For a detailed commit log, see git-report.txt.

+
+

Overview of lander.html

+

The lander.html file is a modern, responsive landing page for Changemaker Lite, featuring:

+
    +
  • Custom Theming: Light/dark mode toggle with persistent user preference.
  • +
  • Sticky Header & Navigation: Fixed header with smooth scroll and navigation links.
  • +
  • Hero Section: Prominent introduction with call-to-action buttons.
  • +
  • Search Integration: Inline MkDocs search with real-time results and keyboard shortcuts.
  • +
  • Feature Showcases: Sections for problems, solutions, power tools, data ownership, pricing, integrations, testimonials, and live examples.
  • +
  • Responsive Design: Mobile-friendly layout with adaptive grids and cards.
  • +
  • Animations: Intersection observer for fade-in effects on cards and sections.
  • +
  • Video & Media: Embedded video showcase and rich media support.
  • +
  • Footer: Informative footer with links and contact info.
  • +
+

The page is styled with CSS variables for easy theming and includes scripts for search, theme switching, and smooth scrolling.

+
+

New Features in Map (README.md)

+

The map application has received significant upgrades:

+
    +
  • Interactive Map: Real-time visualization with OpenStreetMap and Leaflet.js.
  • +
  • Unified Search: Docs and address search in one bar, with keyboard shortcuts and smart caching.
  • +
  • Geolocation & Add Locations: Real-time user geolocation and ability to add new locations directly from the map.
  • +
  • Auto-Refresh: Map data auto-refreshes every 30 seconds.
  • +
  • Responsive & Mobile Ready: Fully responsive design for all devices.
  • +
  • Secure API Proxy: Protects credentials and secures API access.
  • +
  • Admin Panel: System configuration, user management, and shift management for admins.
  • +
  • Walk Sheet Generator: For door-to-door canvassing, with customizable titles and QR code integration.
  • +
  • Volunteer Shifts: Calendar/grid views, signup/cancellation, admin shift creation, and real-time updates.
  • +
  • Role-Based Access: Admin vs. user permissions throughout the app.
  • +
  • Email Notifications: SMTP-based notifications and password recovery.
  • +
  • CSV Import & Geocoding: Batch import with geocoding and progress tracking.
  • +
  • Dockerized Deployment: Easy setup and scaling with Docker.
  • +
  • Open Source: 100% open source, no proprietary dependencies.
  • +
+

API Endpoints: Comprehensive REST API for locations, shifts, authentication, admin, and geocoding, all with rate limiting and security features.

+

Database Schema: Auto-created tables for locations, users, settings, shifts, and signups, with detailed field definitions.

+
+

For more details, see the full README.md and explore the live application.

+ +
+
+ +
+
+