# .env

Environment configuration file containing NocoDB API credentials, table URLs, and sheet references for database integration. Contains sensitive API tokens and configuration URLs for the various NocoDB sheets used by the application.

# .gitignore

Git ignore file specifying which files and directories should be excluded from version control, including environment files, logs, node_modules, and other temporary files.

# ADMIN_IMPLEMENTATION.md

Summarizes the implementation of the admin panel and related backend/frontend changes for the NocoDB Map Viewer.

# Instuctions.md

Project development instructions and rules for contributors to the canvassing map application.

# README.md

Main documentation for the NocoDB Map Viewer project, including features, setup, and usage.

# build-nocodb.md

Documents the development and requirements of the NocoDB automation script for table setup.

# build-nocodb.sh

Bash script to automate creation of required NocoDB tables and default data for the app. Features:
- Creates fresh NocoDB base with 6 required tables (locations, login, settings, shifts, shift_signups, cuts)
- Optional data migration from existing NocoDB bases (--migrate-data flag)
- Interactive base and table selection for migration
- Preserves original data while creating new base
- Auto-updates .env file with new table URLs
- Dependency checking (requires jq and curl)
- Comprehensive error handling and user feedback

# combined.log

Application log file containing all server events, errors, warnings, and informational messages in JSON format. Used for monitoring application health and debugging issues.

# docker-compose.yml

Docker Compose file to orchestrate the map-viewer app container and its environment.

# error.log

Dedicated error log file containing only error-level messages from the application for focused error monitoring and debugging.

# test-addresses.csv

Sample CSV file containing test address data for development and testing purposes. Used for validating data import and geocoding functionality.

# app/Dockerfile

Dockerfile for building the Node.js application image for deployment.

# app/config/index.js

Handles environment config and NocoDB URL parsing for the backend.

# app/controllers/authController.js

Controller for user authentication (login, logout, session check).

# app/controllers/locationsController.js

Controller for CRUD operations on map locations.

# app/controllers/passwordRecoveryController.js

Controller for handling password recovery requests via email. Validates email format, looks up users in the database, and sends password recovery emails while maintaining security by not revealing whether accounts exist.

# app/controllers/settingsController.js

Controller for application settings, start location, and walk sheet config.

# app/controllers/shiftsController.js

Controller for handling shift management, signup/cancellation, and admin operations on volunteer shifts. Includes comprehensive email functionality for sending shift details to all volunteers with professional HTML templates, user management within shifts, and calendar integration features.

# app/controllers/publicShiftsController.js

Controller for handling public-facing shift signup functionality. Manages public shift viewing, temporary user account creation during signup, email confirmation for public signups, and integration with the existing shift system. Includes rate limiting, validation, and automated email notifications for new volunteers.

# app/controllers/dataConvertController.js

Controller for handling CSV upload and batch geocoding of addresses with advanced multi-provider support. Features include CSV parsing with unit number detection, multi-provider geocoding with automatic fallback (Mapbox, LocationIQ, Nominatim, Photon, ArcGIS), confidence scoring and address validation, real-time progress tracking via Server-Sent Events (SSE), and comprehensive downloadable CSV reports. Also includes admin database scan-and-geocode functionality to identify and geocode existing records missing location data, with direct database updates and detailed reporting.

# app/controllers/dashboardController.js

Controller for aggregating and calculating dashboard statistics from locations and users data.

# app/controllers/usersController.js

Controller for user management (list, create, delete users, send login details via email). Features rich HTML email broadcasting to all users with live preview, temporary user support with expiration tracking, and comprehensive user role management.

# app/controllers/cutsController.js

Controller for CRUD operations on map cuts (geographic polygon overlays). Handles cut creation, editing, deletion, and visibility management with admin-only access for modifications and public access for viewing public cuts.

# app/controllers/listmonkController.js

Controller for managing Listmonk email list synchronization. Handles sync status checking, bulk synchronization operations for locations and users, list statistics retrieval, connection testing, and list reinitialization. Provides admin-only endpoints for managing the email marketing integration.

# app/controllers/externalDataController.js

Controller for integrating with external data sources like the City of Edmonton's Socrata API. Handles fetching parcel addresses and other government datasets with filtering, pagination, and bounds-based queries. Provides endpoints for loading external address data to supplement the map display.

# app/middleware/auth.js

Express middleware for authentication and admin access control.

# app/middleware/rateLimiter.js

Express middleware for API rate limiting, with Cloudflare IP support.

# app/package.json

Node.js project manifest, dependencies, and scripts for the backend app.

# app/server.js

Main Express server entry point for the map application backend.

# app/server copy.js

Legacy or backup version of the main server file, possibly for reference or migration.

# app/services/email.js

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

Service for loading and rendering email templates with variable substitution. Handles HTML and plain text email generation with caching support and template variable replacement functionality.

# app/services/geocoding.js

Comprehensive geocoding service supporting multiple providers with intelligent fallback and quality assessment. Features premium providers (Mapbox, LocationIQ) and free alternatives (Nominatim, Photon, ArcGIS), automatic provider selection based on API key availability, confidence scoring and address validation for all providers, retry logic with exponential backoff, result normalization across different provider APIs, and caching for improved performance. Includes forwardGeocodeSearch for address search functionality and specialized Canadian address handling with unit number support.

# app/services/listmonk.js

Service for integrating with Listmonk email marketing platform. Handles API communication, list management, subscriber synchronization, and automatic segmentation. Creates and manages email lists for locations (segmented by support level, sign status) and users, with real-time sync capabilities and bulk operations support.

# app/services/nocodb.js

Service for interacting with the NocoDB API (CRUD, config, etc).

# app/services/qrcode.js

Service for generating QR codes and handling QR-related logic.

# app/services/socrata.js

Service for integrating with Socrata API to access external government datasets. Handles API communication with Edmonton's open data platform for retrieving parcel and address information.

# app/services/accountExpiration.js

Service for managing temporary user account expiration. Automatically checks for and removes expired temporary user accounts on a scheduled basis. Provides cleanup functionality to maintain database hygiene and ensure temporary accounts don't persist beyond their intended lifespan.

# app/templates/email/password-recovery.txt

Plain text email template for password recovery notifications. Contains user-friendly formatting with password display and security warnings.

# app/templates/email/password-recovery.html

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/templates/email/shift-details.html

Professional HTML email template for sending shift details to volunteers. Features responsive design with structured shift information display, status badges, important notes section, and branded layout for enhanced communication.

# app/templates/email/shift-details.txt

Plain text email template for shift detail notifications sent to volunteers. Contains comprehensive shift information including date, time, location, volunteer count, status, and important instructions with professional formatting.

# app/templates/email/user-broadcast.html

HTML email template for admin broadcasting messages to all users. Features rich text content support, responsive design, professional styling with typography, lists, links, and blockquotes for effective mass communication.

# app/templates/email/user-broadcast.txt

Plain text email template for admin broadcast messages to all users. Provides clean, accessible format for mass communication with proper formatting and sender information.

# app/templates/email/public-shift-signup-new.html

HTML email template for public shift signup confirmation sent to new users. Features responsive design with shift details, temporary account credentials, login instructions, and professional styling for volunteer onboarding experience.

# app/templates/email/public-shift-signup-new.txt

Plain text email template for public shift signup confirmation sent to new users. Contains shift details, temporary account credentials, and login instructions in accessible format.

# app/templates/email/public-shift-signup-existing.html

HTML email template for public shift signup confirmation sent to existing users. Features responsive design with shift details and account access instructions for returning volunteers.

# app/templates/email/public-shift-signup-existing.txt

Plain text email template for public shift signup confirmation sent to existing users. Contains shift details and account access instructions in accessible format.

# app/utils/helpers.js

Utility functions for geographic data, validation, and helpers used across the backend.

# app/utils/logger.js

Winston logger configuration for backend logging.

# app/utils/cacheBusting.js

Utility for managing cache busting functionality to ensure users get the latest version of the application when updates are deployed. Handles versioning and cache invalidation strategies with server-side version generation and file hash management.

# app/utils/spatial.js

Utility for spatial operations including point-in-polygon calculations and geographic boundary operations. Provides functions for determining if locations fall within cut boundaries and other spatial analysis needed for map-based filtering and location management.

# app/public/admin.html

# app/public/admin.html

Comprehensive admin panel HTML page for managing start location, walk sheet, shift management, user management, email broadcasting, and enhanced geocoding operations. Features rich text editor with live preview for composing broadcast emails, shift volunteer management modals, CSV data import with multi-provider geocoding and real-time progress tracking, database scan-and-geocode functionality to update existing records, geocoding provider status dashboard, comprehensive admin interface with user role controls, and quick access links to both NocoDB database management and Listmonk email marketing interfaces.

# app/public/css/admin.css

Main entry point for admin panel CSS with modular imports. Refactored from a single large file into focused modules for better maintainability. Imports all admin-specific CSS modules including variables, layout, forms, user management, walk sheets, and responsive design.

# app/public/css/admin/variables.css

CSS custom properties and theme configuration for the admin panel. Defines colors, spacing, typography, shadows, and z-index layers used consistently across all admin modules.

# app/public/css/admin/layout.css

Layout components for the admin panel including container structure, sidebar navigation, content areas, map controls, and mobile menu components. Handles the overall admin interface layout and navigation.

# app/public/css/admin/forms.css

Form and button styles for the admin interface. Includes form field styling, button variations (primary, secondary, danger, etc.), form actions, and special form field types like circles and validation states.

# app/public/css/admin/status-messages.css

Status messages, notifications, and progress indicators for the admin panel. Handles toast notifications, progress bars, loading states, QR code generation status, and various status icons with animations.

# app/public/css/admin/user-management.css

User management interface styles including user tables, role badges, expiration indicators, volunteer management components, and user form styling. Handles the complete user administration interface.

# app/public/css/admin/walk-sheet.css

Walk sheet configuration and preview styles. Handles QR code display, printable walk sheet layout (8.5x11 paper), form field circles, notes sections, and print-specific styling for walk sheet generation.

# app/public/css/admin/data-convert.css

Data conversion interface styles for CSV upload and processing. Includes file upload areas, processing progress indicators, results preview tables, drag-and-drop styling, and map integration for geocoding results display.

# app/public/css/admin/nocodb-links.css

External database integration card styles for NocoDB connections. Provides styling for integration status cards, connection indicators, information boxes, and database management interface components.

# app/public/css/admin/cuts-shifts.css

Geographic cuts and shift management interface styles. Handles cut drawing controls, form states, shift scheduling interface, map interaction components, and administrative controls for cuts and volunteer shifts.

# app/public/css/admin/modals.css

Modal dialogs and email composition interface for the admin panel. Includes modal structure, email composition with rich text editing, progress tracking for email campaigns, and interactive dialog components.

# app/public/css/admin/responsive.css

Responsive design and media queries for all admin panel components. Handles mobile, tablet, and desktop layout adaptations, touch-friendly interfaces, mobile navigation, and responsive table layouts.

# app/public/css/modules/apartment-marker.css

Styles for apartment/multi-unit building markers. Defines square-shaped markers with hover effects and transitions for distinguishing multi-unit buildings from single-family homes on the map.

# app/public/css/modules/apartment-popup.css

Styles for the apartment building popup, ensuring it is responsive and user-friendly.

# app/public/css/modules/base.css

Contains base styles, including CSS variables for theming, resets, and default body styles.

# app/public/css/modules/buttons.css

Defines styles for all button types, states (hover, disabled), and variants (primary, danger, etc.).

# app/public/css/modules/cuts.css

Styles for the cut feature including drawing controls, polygon overlays, vertex markers, cut management interface, and responsive design for both admin and public views.

# app/public/css/modules/cache-busting.css

Styles for the cache busting update notification that prompts users to refresh the page.

# app/public/css/modules/dashboard.css

Styles for the dashboard panel including cards, charts, and responsive grid layouts.

# app/public/css/modules/doc-search.css

Styles for the documentation search component in the header.

# app/public/css/modules/unified-search.css

Styles for the unified search component that combines documentation and map address search functionality. Includes mode toggle buttons, search input styling, results display, and responsive design for both desktop and mobile.

# app/public/css/modules/forms.css

Styles for form elements, input fields, and the slide-up edit footer.

# app/public/css/modules/layout.css

Defines the main application layout, including the header, app container, and map container.

# app/public/css/modules/leaflet-custom.css

Customizations for the Leaflet.js library, including popups and marker styles.

# app/public/css/modules/listmonk.css

Styles for Listmonk email sync status indicators, notifications, and admin panel interface. Includes status badges, error/success notifications, progress bars, sync controls, and responsive design for email list management features.

# app/public/css/modules/map-controls.css

Styles for map controls, such as the crosshairs and move controls.

# app/public/css/modules/mobile-ui.css

Styles for mobile-specific UI elements like the mobile dropdown menu and floating sidebar.

# app/public/css/modules/modal.css

Styles for all modal dialogs used throughout the application.

# app/public/css/modules/nocodb-dropdown.css

Styles for NocoDB dropdown interface components. Provides styling for dropdown toggles, arrows, and menu behaviors used in database integration features.

# app/public/css/modules/notifications.css

Styles for status messages and the global loading overlay.

# app/public/css/modules/print.css

Print-specific styles to ensure the map prints correctly.

# app/public/css/modules/qr-code.css

Styles for the QR code generation modal and related components.

# app/public/css/modules/responsive.css

Contains all media queries for responsive design, adapting the layout for different screen sizes.

# app/public/css/modules/start-location-marker.css

Defines the animated styles for the distinctive start location marker.

# app/public/css/modules/temp-user.css

Styles for temporary user restrictions and visual indicators. Includes temp user badge styling and CSS rules for hiding restricted elements from temporary users.

# app/public/css/shifts.css

CSS styles for the volunteer shifts page, including grid view, calendar view, and view toggle functionality.

# app/public/css/public-shifts.css

CSS styles for the public volunteer opportunity signup page. Includes responsive design, shift card layouts, signup modal styling, success confirmations, loading states, and mobile-optimized interfaces for public users.

# app/public/css/style.css

Main stylesheet that imports all modular CSS files from the `public/css/modules/` directory. Acts as the central entry point for all application styles, organizing them into logical modules for better maintainability. Referenced in all HTML files to load the complete application styling system.

# app/public/favicon.ico

Favicon for the web application.

# app/public/index.html

Main map viewer HTML page for the canvassing application. Features the unified search system with keyboard shortcut support (Ctrl+K), responsive header with user authentication, mobile-friendly dropdown navigation, and comprehensive map interface. Includes the "Confirm Address" functionality that requires users to confirm the geocoded address before saving location data. Contains all necessary script imports for Leaflet.js, MarkerCluster, and the modular JavaScript application architecture.

# app/public/login.html

Login page HTML for user authentication.

# app/public/shifts.html

Volunteer shifts management and signup page HTML with both grid and calendar view options.

# app/public/public-shifts.html

Public-facing volunteer opportunity signup page that doesn't require authentication. Features shift browsing, detailed information display, signup modal with account creation, and success confirmation flow for new volunteers.

# app/public/user.html

User profile page HTML for displaying user information and account management.

# app/public/css/user.css

CSS styles for the user profile page and user management components in the admin panel.

# app/public/css/REFACTORING_SUMMARY.md

Documentation summarizing the CSS refactoring process that reorganized the admin panel styles into modular components. Describes the transition from monolithic CSS files to focused modules for better maintainability and organization.

# app/public/js/admin.js

**Main Admin Panel Coordinator** - Coordinates all admin modules and handles initialization. Contains the primary DOM ready handler that initializes all admin functionality, manages section routing, and provides coordination between all modular components. Maintains backward compatibility and global function exports.

# app/public/js/admin-core.js

**Admin Core Utilities Module** - Contains essential admin panel utilities including viewport management, navigation between sections, mobile menu functionality, status messaging, HTML escaping, and debounce utilities. Provides the foundation for all other admin modules.

# app/public/js/admin-auth.js

**Admin Authentication Module** - Handles all authentication-related functionality including admin verification, user session checks, logout processes, and admin info display for both desktop and mobile interfaces. Manages security and access control.

# app/public/js/admin-map.js

**Admin Map Management Module** - Contains all map-related functionality including Leaflet map initialization, start location management, marker handling, coordinate input/output, crosshair display, and map interaction event handlers. Manages the campaign map configuration.

# app/public/js/admin-walksheet.js

**Walk Sheet Configuration Module** - Manages walk sheet template configuration, preview generation, QR code creation and display, printing functionality, and form field management. Handles the generation of printable canvassing materials.

# app/public/js/admin-shifts.js

**Shift Management Module** - Handles all shift-related operations including CRUD (Create, Read, Update, Delete) operations, shift display and formatting, public/private shift management, form handling, and shift status management. Core shift administration functionality.

# app/public/js/admin-shift-volunteers.js

**Shift Volunteer Management Module** - Manages volunteer assignment to shifts through modal interfaces, handles adding/removing volunteers from shifts, provides email functionality for sending shift details to volunteers, and manages volunteer-specific progress tracking and notifications.

# app/public/js/admin-users.js

**User Management Module** - Contains all user administration functionality including user CRUD operations, user display and table management, user role and type management (admin, user, temp), expiration tracking for temporary users, and individual user email functionality.

# app/public/js/admin-email.js

**Email Broadcasting Module** - Handles mass email functionality including rich text editor with toolbar, email composition with live preview, progress tracking for bulk email operations, HTML email template management, and broadcast email status monitoring with detailed results display.

# app/public/js/data-convert.js

**Data Import and Geocoding Module** - JavaScript module for CSV data import and database geocoding operations in the admin panel. Handles file upload with drag-and-drop support, real-time processing progress via Server-Sent Events, multi-provider geocoding status monitoring, interactive results preview with success/warning/error indicators, database scan-and-geocode functionality for existing records, comprehensive report generation and download (CSV format), geocoding provider availability checking, and responsive UI updates during batch processing operations. Includes error handling, progress tracking, and detailed status reporting for all geocoding activities.

# app/public/js/admin-integration.js

**External Integration Module** - Manages external service integrations including NocoDB database link initialization and management, Listmonk email service link configuration, admin-only integration controls, and dynamic link setup based on service availability.

# app/public/js/dashboard.js

JavaScript for rendering dashboard charts and statistics using Chart.js in the admin panel.

# app/public/js/user.js

JavaScript for user profile page functionality and user account management.

# app/public/js/auth.js

JavaScript for authentication logic and user session management.

# app/public/js/config.js

Global configuration constants for the frontend app.

# app/public/js/location-manager.js

JavaScript for loading, displaying, and managing map locations on the frontend. Includes address confirmation validation that prevents saving locations until the geocoded address is confirmed by the user.

# app/public/js/main.js

Main entry point for initializing the frontend application. Orchestrates the complete application startup sequence including domain configuration loading, user authentication verification, map initialization, and location loading. Manages the unified search system initialization, auto-refresh functionality, viewport handling for responsive design, and global error handling. Serves as the central coordinator for all application modules and features.

# app/public/js/map-search.js

JavaScript module for handling map address search functionality. Provides search capabilities using the geocoding API, displays search results with temporary markers, and integrates with the location management system.

# app/public/js/mkdocs-search.js

JavaScript module for integrating MkDocs Material's search functionality into the map application. Provides documentation search capabilities with automatic environment detection and URL configuration.

# app/public/js/search-manager.js

JavaScript module for managing the unified search system that combines documentation and map address search. Handles mode switching, result display, keyboard shortcuts, and integration between docs search and map search functionalities.

# app/public/js/map-manager.js

JavaScript for initializing and managing the Leaflet map instance.

# app/public/js/map.js.backup

Backup or legacy version of the main map JavaScript logic.

# app/public/js/shifts.js

JavaScript for volunteer shift signup, management, and UI logic with both grid and calendar view functionality. Features include view toggling, calendar navigation, shift color-coding, interactive shift popups, calendar integration (Google, Outlook, Apple), and enhanced user experience with dropdown actions. Updated to use shift titles directly from signup records with improved event handling.

# app/public/js/public-shifts.js

JavaScript for the public volunteer opportunity signup page. Handles shift loading, filtering, signup modal management, form validation, API communication for public signups, success confirmations, and direct shift linking. Includes responsive design support and error handling for public users.

# app/public/js/ui-controls.js

JavaScript for UI controls, event handlers, and user interaction logic. Includes address confirmation functionality that manages state for ensuring users confirm geocoded addresses before saving locations.

# app/public/js/utils.js

Utility functions for the frontend (escaping HTML, parsing geolocation, etc).

# app/public/js/data-convert.js

Frontend JavaScript for the Convert Data admin section. Handles file upload UI, drag-and-drop, real-time progress updates, visual representation of geocoding results on a map, and saving successful results to the database.

# app/public/js/cut-drawing.js

JavaScript module for interactive polygon drawing functionality. Implements click-to-add-points drawing system for creating cut boundaries on the map using Leaflet.js drawing tools.

# app/public/js/cut-drawing-new.js

**New Cut Drawing Module** - Enhanced version of the polygon drawing functionality for cut creation. Provides improved polygon drawing with vertex management, polygon preview, color customization, and enhanced user interaction. Implements click-to-add-points drawing system with better visual feedback and drawing state management.

# app/public/js/cut-location-manager.js

**Cut Location Management Module** - Handles location display, filtering, statistics, and management specifically for cuts. Manages location markers within cut boundaries, provides filtering capabilities, calculates cut statistics, and handles the display of locations associated with specific cuts on the map.

# app/public/js/cut-print-utils.js

**Cut Print Utilities Module** - Handles map capture, print generation, and export functionality specifically for cuts. Provides functionality to generate printable views of cuts with associated locations, handles map capture for printing, and manages export formats for cut data and visualizations.

# app/public/js/cut-controls.js

JavaScript module for cut display controls on the public map. Handles loading and rendering of public cuts as polygon overlays for authenticated users.

# app/public/js/admin-cuts.js

JavaScript for the admin cut management interface. Provides complete CRUD functionality for cuts including interactive drawing, form management, cut list display, and import/export capabilities.

# app/public/js/admin-cuts-main.js

**Admin Cuts Main Coordinator** - Main initialization file that imports and orchestrates all cut management modules. Handles DOM ready initialization, module loading verification, and coordinates the startup sequence for the admin cuts management system.

# app/public/js/admin-cuts-manager.js

**Admin Cuts Manager Module** - Main class for managing cuts with comprehensive form handling, UI interactions, and cut operations. Handles cut creation, editing, deletion, filtering, drawing operations, location management, and provides the core administrative interface for cut management with integrated map functionality.

# app/public/js/admin-new.js

**New Admin Panel Coordinator** - Refactored version of the admin panel coordinator that coordinates all admin modules while maintaining functionality. Manages event listener setup across modules including auth, map, walksheet, shifts, users, email, and integration modules with improved modular architecture.

# app/public/js/admin-old.js

**Legacy Admin Panel Coordinator** - Backup or legacy version of the admin panel coordinator, likely containing the previous monolithic implementation before modular refactoring. Maintains the same functionality as the newer version but with older architecture for reference or rollback purposes.

# app/public/js/listmonk-status.js

JavaScript module for real-time Listmonk sync status monitoring. Displays connection status indicators in the UI, shows error notifications when sync fails, handles automatic status checking, and provides user feedback for email list synchronization health.

# app/public/js/listmonk-admin.js

JavaScript for admin panel Listmonk management functionality. Handles bulk synchronization operations, progress tracking, list statistics display, connection testing, and admin interface interactions for email list management. Integrates with the admin panel UI for comprehensive Listmonk control.

# app/public/js/auth.js

JavaScript for authentication logic and user session management. Includes temporary user restrictions, role-based UI visibility controls, and dynamic user interface updates based on user type and admin status.

# app/public/js/cache-manager.js

JavaScript module for client-side cache management and version checking. Handles cache busting functionality to ensure users get the latest version of the application when updates are deployed.

# app/public/js/config.js

Global configuration constants for the frontend app.

# app/public/js/cut-controls.js

JavaScript module for cut display controls on the public map. Handles loading and rendering of public cuts as polygon overlays for authenticated users.

# app/public/js/cut-drawing.js

JavaScript module for interactive polygon drawing functionality. Implements click-to-add-points drawing system for creating cut boundaries on the map using Leaflet.js drawing tools.

# app/public/js/cut-manager.js

JavaScript module for managing cut operations and display functionality. Handles cut CRUD operations, layer management, and provides unified interface for cut-related features.

# app/public/js/dashboard.js

JavaScript for rendering dashboard charts and statistics using Chart.js in the admin panel.

# app/public/js/data-convert.js

Frontend JavaScript for the Convert Data admin section. Handles file upload UI, drag-and-drop, real-time progress updates, visual representation of geocoding results on a map, and saving successful results to the database.

# app/public/js/database-search.js

JavaScript module for database search functionality. Handles searching through loaded location data on the client side with caching capabilities for improved performance.

# app/public/js/external-layers.js

JavaScript module for managing external data layers on the map. Handles loading and display of external datasets like Edmonton parcel addresses with smart loading based on map bounds and zoom levels.

# app/routes/admin.js

Express router for admin-only endpoints (start location, walk sheet config, NocoDB URLs, and Listmonk URLs). Provides secure access to both database management and email marketing platform URLs for admin users. Constructs Listmonk URLs using the public domain format (https://listmonk.domain) for proper external access.

# app/routes/dashboard.js

Express router for dashboard API endpoints, providing stats for the admin dashboard.

# app/routes/auth.js

Express router for authentication endpoints (login, logout, check).

# app/routes/debug.js

Express router for debug endpoints (session info, table structure, etc).

# app/routes/geocoding.js

Express router for geocoding and reverse geocoding endpoints. Updated to include /search endpoint for returning multiple address results for the unified search functionality.

# app/routes/index.js

Main router that mounts all sub-routes for the backend API.

# app/routes/locations.js

Express router for CRUD endpoints on map locations.

# app/routes/listmonk.js

Express router for Listmonk email list management endpoints. Provides authenticated and admin-only routes for sync status checking, bulk synchronization operations, list statistics, connection testing, and list reinitialization. Includes proper authorization middleware to restrict admin functions.

# app/routes/qr.js

Express router for QR code generation endpoints.

# app/routes/settings.js

Express router for application settings endpoints (start location, walk sheet).

# app/routes/shifts.js

Express router for volunteer shift management endpoints (public and admin).

# app/routes/public.js

Express router for public-facing endpoints that don't require authentication. Handles public shift viewing and signup functionality with appropriate rate limiting and validation.

# app/routes/users.js

Express router for user management endpoints (list, create, delete users).

# app/routes/publicShifts.js

Express router for public-facing shift endpoints that don't require authentication. Handles public shift viewing, shift details retrieval, and public signup functionality with appropriate rate limiting. Provides the API endpoints for the public volunteer opportunity signup system.

# app/routes/cuts.js

Express router for cut management endpoints. Provides CRUD operations for geographic polygon overlays with admin-only access for modifications and public read access for viewing public cuts.

# app/routes/dataConvert.js

Express routes for data conversion features. Handles CSV file upload with multer middleware and provides endpoints for processing CSV files and saving geocoded results to the database.

# app/routes/external.js

Express router for external data integration endpoints, including Socrata API integration for accessing and processing external government datasets.

# app/utils/cacheBusting.js

Utility for managing cache busting functionality to ensure users get the latest version of the application when updates are deployed. Handles versioning and cache invalidation strategies.

# package.json

Node.js project manifest for the main map application workspace. Contains project dependencies, scripts, and configuration for the overall map application development and deployment process.

# package-lock.json

Automatically generated lockfile that ensures consistent dependency installation across environments for the main map application workspace.

# test_print_debug.html

Debug HTML file for testing print functionality and troubleshooting print-related features. Contains test layouts and styling for validating print output of maps, walk sheets, and other printable components.

# listmonk-env-example.txt

Example environment configuration file showing the required Listmonk environment variables. Provides sample configuration for API URL, credentials, sync settings, and setup instructions for integrating with the Listmonk email marketing platform.

