How pennypenny135-coder/excel-mail-merge works
Excel Mail Merge Studio is a browser-only application for turning XLSX rows into formatted DOCX files. Users load and inspect a workbook, create or edit a template, bind placeholders to columns, choose rows, review validation and previews, then generate and download documents. Templates, folders, preferences, and limited workbook metadata persist in IndexedDB; workbook contents and generated files stay in the browser. The graph follows documented product flows and sampled imports/calls; unsampled implementation detail is omitted where relationships cannot be verified.
Main entry points: app-shell.tsx App navigation · merge-view.tsx Merge workspace · app-context.tsx App state · useMailMerge.ts Generation workflow
Components 24
Application and templates
- App navigation
src/components/app-shell.tsx - App state
src/components/app-context.tsx - Dashboard
src/components/dashboard/dashboard-view.tsx - Template manager
src/components/templates/templates-view.tsx - Rich editor
src/components/editor - Template model
src/lib/template.ts - Import/export UI
src/components/templates/import-dialog.tsx - Template transfer
src/lib/transfer.ts - Settings
src/components/settings/settings-view.tsx
Excel data
- Workbook view
src/components/excel/excel-view.tsx - Excel dropzone
src/components/excel/excel-dropzone.tsx - Workbook state
src/hooks/useExcel.ts - XLSX parsing
src/lib/excel.ts
Merge and output
- Merge workspace
src/components/merge/merge-view.tsx - Merge preview
src/components/merge/preview.tsx - Merge validation
src/lib/validation.ts - Generation workflow
src/hooks/useMailMerge.ts - Row merge
src/lib/merge.ts - Value formatting
src/lib/formatting.ts - DOCX generation
src/lib/docx.ts - Browser downloads
src/hooks/useMailMerge.ts
Local persistence
- IndexedDB storage
src/lib/storage.ts - Template state
src/hooks/useTemplates.ts
Other components
- User
Connections 34
- User → App navigation: uses
- App navigation → Dashboard: routes to
src/components/app-shell.tsx - App navigation → Workbook view: routes to
src/components/app-shell.tsx - App navigation → Template manager: routes to
src/components/app-shell.tsx - App navigation → Merge workspace: routes to
src/components/app-shell.tsx - App navigation → Settings: routes to
src/components/app-shell.tsx - App navigation → Rich editor: routes to
src/components/app-shell.tsx - Dashboard → Excel dropzone: renders
src/components/dashboard/dashboard-view.tsx - Workbook view → Excel dropzone: renders
src/components/excel/excel-view.tsx - App state → Workbook state: creates
src/components/app-context.tsx - Workbook state → XLSX parsing: uses
src/hooks/useExcel.ts - Workbook view → XLSX parsing: uses
src/components/excel/excel-view.tsx - User → Workbook view: uploads workbook
- User → Template manager: creates template
- Template manager → Import/export UI: opens import/export
src/components/templates/templates-view.tsx - Import/export UI → Template transfer: uses
src/components/templates/import-dialog.tsx - Settings → Import/export UI: opens import/export
src/components/settings/settings-view.tsx - App state → Template state: manages templates
src/components/app-context.tsx - App state → Template model: creates templates
src/components/app-context.tsx - Rich editor → Template manager: edits template
- Merge workspace → Merge preview: renders
src/components/merge/merge-view.tsx - Merge workspace → Merge validation: validates
src/components/merge/merge-view.tsx - Merge workspace → Generation workflow: uses
src/components/merge/merge-view.tsx - Merge workspace → Row merge: uses
src/components/merge/merge-view.tsx - Merge preview → Row merge: uses
src/components/merge/preview.tsx - Merge preview → Value formatting: formats values
src/components/merge/preview.tsx - Generation workflow → Row merge: merges rows
src/hooks/useMailMerge.ts - Generation workflow → DOCX generation: builds documents
src/hooks/useMailMerge.ts - Row merge → Value formatting: formats placeholders
src/lib/merge.ts - Generation workflow → Browser downloads: downloads results
src/hooks/useMailMerge.ts - User → Merge workspace: selects and generates
- Template state → IndexedDB storage: reads and writes
src/hooks/useTemplates.ts - App state → IndexedDB storage: loads preferences
src/components/app-context.tsx - Settings → App state: updates preferences
src/components/settings/settings-view.tsx