File Structure Reference
September 26, 2025 · View on GitHub
Context
This document provides a complete navigation guide for the MindMeld codebase. Use this as a reference to understand where different functionality lives and how components are organized.
Application Entry Points
Main Entry
src/js/app.js- Main application entry point (2 dependencies only)src/index.html- HTML entry with cache busting and meta tags
Bootstrap System
Location: src/js/core/bootstrap/
AppBootstrap.js- Main orchestrator with dependency chain managementDataBootstrap.js- Event bus, data store, state management initializationServiceBootstrap.js- Business logic services initializationUIBootstrap.js- Canvas management and UI initializationInteractionBootstrap.js- Input systems, gestures, event handlingBaseBootstrap.js- Abstract base class for all bootstrap modules
Core System Architecture
Event & Communication
src/js/core/eventBus.js- Central communication hub for all componentssrc/js/core/config.js- Application configuration and constantssrc/js/core/constants.js- Shared constants and enumssrc/js/core/featureFlags.js- Feature flag management system
Canvas & UI Management
src/js/core/canvasModule.js- Canvas functionality and managementsrc/js/core/canvasManager.js- High-level canvas operations coordinationsrc/js/core/canvasInitialization.js- Canvas setup and initialization logicsrc/js/core/uiSetup.js- UI component initialization and coordination
Service Layer
Location: src/js/services/
Core Services
colorService.js- Color state management and validationnoteService.js- Note creation, manipulation, and lifecyclenoteManager.js- Note selection state management (being consolidated)noteIdService.js- Unique note ID generation and managementnoteEventService.js- Note event coordination (being consolidated)connectionService.js- Note connection handling and validationPersistenceService.js- Single source of truth for all state persistence
Specialized Services
markdownContentService.js- Markdown processing and content handlingnotificationManager.js- User notification and message managementcanvasStateService.js- Canvas state persistence and managementzoomStateService.js- Zoom level state and viewport management
Server & Collaboration
serverConnectionService.js- Server connectivity and status managementserverClient.js- HTTP client for server communicationmapsApi.js- Server API client for mind map operationsmapSafetyService.js- Data validation and safety checks
Data Management
DataProviderService.js- Data provider abstraction service (singleton)
Data Layer
Location: src/js/data/
Data Providers
Location: src/js/data/providers/
DataProvider.js- Abstract base class with provider contractLocalJSONProvider.js- Local storage implementation (production)YjsProvider.js- Real-time collaboration implementation (foundation)
Data Management
dataStore.js- Application state management and persistenceobservableState.js- Reactive state management systemcanonicalStorage.js- Canonical data format and validationDataProviderCompatibility.js- Provider compatibility layer
Interaction System
Input Adapters
Location: src/js/interactions/adapters/
BaseAdapter.js- Abstract base for all input adaptersDesktopAdapter.js- Mouse and keyboard interactionsTouchAdapter.js- Advanced touch and gesture interactions (Touch Mode)
Interaction Behaviors
Location: src/js/interactions/behaviors/
NoteBehavior.js- Note interaction business logicCanvasBehavior.js- Canvas interaction business logicDragBehavior.js- Drag and drop behavior coordinationConnectionBehavior.js- Connection creation and manipulationSelectionBoxBehavior.js- Multi-selection box behaviorViewportBehavior.js- Viewport and zoom behavior managementMenuBehavior.js- Menu interaction business logicToolbarBehavior.js- Toolbar interaction coordination
Controllers & Coordination
InputController.js- Input adapter selection and initializationInteractionController.js- High-level interaction coordinationpageInteractions.js- Page UI element interactions (outside canvas)
Gesture System
Location: src/js/interactions/gestures/
TouchState.js- Touch point tracking and state managementGestureRecognizer.js- Multi-touch gesture detection and state machine (if present)
Capabilities
Location: src/js/interactions/capabilities/
detector.js- Platform and capability detection
Feature Modules
Location: src/js/features/
Note Management
Location: src/js/features/note/
note.js- Core note functionality and coordinationeditViewMode.js- Edit/view mode transitions and content extractionEditModeController.js- Edit mode state managementnoteColorApplication.js- Note color handling and applicationghostConnectors.js- Visual connection preview system
Connection Management
Location: src/js/features/connection/
connectionManager.js- Connection lifecycle managementconnectionCreation.js- Connection creation logic and validationconnectionUpdate.js- Connection modification and updatesconnectionUtils.js- Connection utility functions and helpers
UI Components
colorPicker/colorPickerEvents.js- Color selection interface and events
Content Processing
Location: src/js/features/markdown/
markdownRenderer.js- Safe HTML generation from markdowndefangPipeline.js- Security-first content processing pipeline
Server Features
serverConnection/serverConnectionBehavior.js- Server connection behaviormapSelection/mapSelectionBehavior.js- Map selection interface behavior
Specialized Features
zoom/viewportAdapter.js- Viewport zoom adaptation logic
Utility Modules
Location: src/js/utils/
utils.js- General utility functions and helpersbrowserDetection.js- Browser and platform detection utilitiesdeviceUtils.js- Device-specific utility functionsmobileInteractions.js- Touch-friendly UI patterns and utilities
Mobile Interaction Utilities
Functions available in mobileInteractions.js:
setupMobileDropdown()- Convert hover menus to touch-friendly dropdownssetupMobileModal()- Consistent modal/overlay behavior with backdrop closesetupTouchFeedback()- Visual feedback for touch interactionsisTouchDevice()- Device detection utilitygetViewportInfo()- Viewport information and responsive utilities
Factory Pattern
Location: src/js/factories/
noteFactory.js- Pure factory functions for note creation
Coordinate System
Location: src/js/core/coordinates/
coordinateService.js- Coordinate transformation serviceCoordinateTransform.js- Coordinate transformation calculationsCoordinateConfig.js- Coordinate system configurationCoordinateCache.js- Coordinate calculation caching
Accessibility
Location: src/js/accessibility/
adaptiveHelp.js- Adaptive help and accessibility features
File Organization Patterns
Naming Conventions
- camelCase for files and functions:
noteManager.js,handleDoubleClick() - PascalCase for classes:
NoteBehavior,DataProvider - Descriptive names that indicate functionality and purpose
Directory Structure Logic
core/- Fundamental system components used throughout appservices/- Business logic and data managementinteractions/- User input handling and behavior coordinationfeatures/- UI components and feature-specific logicutils/- Shared utility functionsdata/- Data persistence and state management
Import Patterns
Most modules follow this import structure:
// Third-party imports (rare)
import ThirdPartyLib from 'library';
// Core system imports
import { eventBus } from '../../core/eventBus.js';
// Service layer imports
import { noteManager } from '../../services/noteManager.js';
// Feature/utility imports
import { getCurrentMarkdownContent } from '../../features/note/editViewMode.js';
// Relative imports
import { BaseClass } from './BaseClass.js';
Key Integration Points
Bootstrap Chain
AppBootstrap → DataBootstrap → ServiceBootstrap → UIBootstrap → InteractionBootstrap
Input Flow
User Action → Adapter → Behavior → EventBus → Services → UI Update
Data Flow
User Action → Behavior → DataProvider → Storage → Change Event → UI Update
Stable Components
- Bootstrap system architecture
- Adapter-Behavior pattern implementation
- DataProvider abstraction layer
- Core coordinate and event systems
Related Documentation
- Adapter-Behavior Pattern - Interaction architecture
- Data Providers - Data layer architecture
- Coding Standards - File organization standards