{"id":46795337,"url":"https://github.com/emaynard/genealogy-filename-generator","last_synced_at":"2026-03-10T04:03:38.528Z","repository":{"id":324475548,"uuid":"1097361276","full_name":"emaynard/genealogy-filename-generator","owner":"emaynard","description":"A specialized tool for genealogists to generate standardized filenames and metadata commands for genealogy documents","archived":false,"fork":false,"pushed_at":"2025-12-31T23:55:14.000Z","size":225,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-19T20:52:15.444Z","etag":null,"topics":["exif-metadata","exiftool","family-history","genealogy"],"latest_commit_sha":null,"homepage":"https://emaynard.github.io/genealogy-filename-generator/","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/emaynard.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":null,"patreon":null,"open_collective":null,"ko_fi":"ericmaynard","tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"lfx_crowdfunding":null,"polar":null,"buy_me_a_coffee":null,"thanks_dev":null,"custom":null}},"created_at":"2025-11-16T02:51:55.000Z","updated_at":"2026-01-11T17:02:14.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/emaynard/genealogy-filename-generator","commit_stats":null,"previous_names":["emaynard/genealogy-filename-generator"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/emaynard/genealogy-filename-generator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emaynard%2Fgenealogy-filename-generator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emaynard%2Fgenealogy-filename-generator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emaynard%2Fgenealogy-filename-generator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emaynard%2Fgenealogy-filename-generator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/emaynard","download_url":"https://codeload.github.com/emaynard/genealogy-filename-generator/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emaynard%2Fgenealogy-filename-generator/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30324185,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-10T01:36:58.598Z","status":"online","status_checked_at":"2026-03-10T02:00:06.579Z","response_time":106,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["exif-metadata","exiftool","family-history","genealogy"],"created_at":"2026-03-10T04:03:37.844Z","updated_at":"2026-03-10T04:03:38.477Z","avatar_url":"https://github.com/emaynard.png","language":"HTML","funding_links":["https://ko-fi.com/ericmaynard"],"categories":[],"sub_categories":[],"readme":"# Genealogy Filename Generator\n\n**Version 2.0.1** | A specialized tool for genealogists to generate standardized, customizable filenames and metadata commands for genealogy documents.\n\n## Overview\n\nThe Genealogy Filename Generator is a static web application that helps genealogists organize their digital archives with standardized, meaningful filenames. It parses GEDCOM family tree files to provide intelligent, context-aware suggestions for file naming and metadata tagging using EXIFtool standards.\n\n### Key Features\n\n- **🎨 Customizable Sub-templates (NEW in v2.0)** - Full control over date, place, and name formatting patterns\n- **✨ Format Modifiers (NEW in v2.0)** - Apply `:upper`, `:lower`, `:title`, `:abbrev` transformations to any field\n- **⚙️ Template Configuration UI (NEW in v2.0)** - Visual editor with validation, hints, and real-time preview\n- **Standardized Filename Generation** - Creates consistent, meaningful filenames following genealogy best practices\n- **GEDCOM File Support** - Parses GEDCOM (.ged) files with support for 10,000+ individuals\n- **Intelligent Autocomplete** - Context-aware suggestions for surnames, given names, places, and relationships\n- **EXIFtool Command Generation** - Creates FHMWG-compliant metadata commands for your genealogy documents\n- **Multi-Person Documents** - Support for documents with multiple people (e.g., marriage certificates)\n- **International Place Formats** - Support for USA, Canada, UK, Germany, Australia, and generic formats\n- **Privacy-First** - All processing happens in your browser; your GEDCOM data never leaves your computer\n- **Zero Setup** - Single HTML file, no installation or build process required\n\n### Example Filenames\n\n**Default Format (v2.0):**\n```\nBirth_USA.Ohio.Medina-County.Wadsworth_1922.01.04_DOE.Jane.Alma_Birth-Certificate.jpg\n```\n\n**Custom Format Examples (NEW - Fully Customizable):**\n```\n# European date format: DD-MM-YYYY\nBirth_USA.Ohio.Medina-County.Wadsworth_04-01-1922_DOE.Jane.Alma_Birth-Certificate.jpg\n\n# Abbreviated place: City, State\nBirth_Wadsworth, Ohio_1922.01.04_DOE.Jane.Alma_Birth-Certificate.jpg\n\n# Given name first: Given SURNAME\nBirth_USA.Ohio.Medina-County.Wadsworth_1922.01.04_Jane DOE_Birth-Certificate.jpg\n```\n\nFollowing the customizable pattern:\n```\n[Type]_[PLACE]_[DATE]_[NAME]_[info].ext\n\nWhere:\n  DATE = Your custom date sub-template (e.g., {YYYY}.{MM}.{DD} or {DD}-{MM}-{YYYY})\n  PLACE = Your custom place sub-template (e.g., {CITY}, {STATE} or {COUNTRY}.{STATE}.{CITY})\n  NAME = Your custom name sub-template (e.g., {SURNAME:upper}.{GIVEN} or {GIVEN} {SURNAME})\n```\n\n## Quick Start\n\n### GitHub Pages (Easiest)\n\n1. Visit the [Genealogy Filename Generator](https://emaynard.github.io/genealogy-filename-generator/) hosted version\n2. (Optional) Upload your GEDCOM file for intelligent autocomplete suggestions\n3. Fill in the form fields with your document details\n4. Copy the generated filename or EXIFtool command\n\nNo installation, no dependencies, no server setup required. Works entirely in your browser.\n\n### Local Install\n\nPrefer to download and run locally?\n\n1. Download `genealogy-filename-generator.html` from the [latest release](../../releases)\n2. Open the file in any modern web browser (Chrome, Firefox, Safari, Edge)\n3. (Optional) Upload your GEDCOM file for intelligent autocomplete suggestions\n4. Fill in the form fields with your document details\n5. Copy the generated filename or EXIFtool command\n\n### Browser Requirements\n\n- Chrome 90+\n- Firefox 88+\n- Safari 14+\n- Edge 90+\n\nInternet Explorer is not supported (requires ES6+).\n\n## What's New in v2.0\n\n### 🎨 Sub-template Formatting System\n\nVersion 2.0 introduces a revolutionary **composable sub-template architecture** that gives you complete control over filename formatting:\n\n#### DATE Sub-template\nCustomize how dates appear using placeholders:\n- `{YYYY}` - 4-digit year (2024)\n- `{YY}` - 2-digit year (24)\n- `{MM}` - Zero-padded month (03)\n- `{M}` - Month without padding (3)\n- `{DD}` - Zero-padded day (05)\n- `{D}` - Day without padding (5)\n\n**Examples:**\n- `{YYYY}.{MM}.{DD}` → `2024.03.05` (default)\n- `{DD}-{MM}-{YYYY}` → `05-03-2024` (European)\n- `{M}/{D}/{YY}` → `3/5/24` (US short)\n\n#### PLACE Sub-template\nControl place hierarchy and formatting:\n- `{COUNTRY}` or `{C}` - Country name/abbreviation\n- `{STATE}` or `{S}` - State/Province\n- `{COUNTY}` or `{CO}` - County\n- `{CITY}` or `{CI}` - City/Town\n\n**Examples:**\n- `{COUNTRY}.{STATE}.{COUNTY}.{CITY}` → `USA.Ohio.Medina-County.Wadsworth` (default)\n- `{CITY}, {STATE}` → `Wadsworth, Ohio`\n- `{C}.{S}` → `USA.OH` (abbreviated)\n\n#### NAME Sub-template\nFormat names exactly how you want:\n- `{SURNAME}` - Surname/family name\n- `{GIVEN}` - Given/first name\n- `{MIDDLE}` - Middle name\n\n**Examples:**\n- `{SURNAME:upper}.{GIVEN}` → `DOE.Jane` (default)\n- `{GIVEN} {SURNAME}` → `Jane DOE`\n- `{SURNAME:upper}, {GIVEN} {MIDDLE:abbrev}` → `DOE, Jane A`\n\n#### Format Modifiers\nApply text transformations to any placeholder:\n- `:upper` - UPPERCASE\n- `:lower` - lowercase\n- `:title` - Title Case\n- `:abbrev` - First letter only\n\n**Examples:**\n- `{SURNAME:upper}` → `SMITH`\n- `{GIVEN:title}` → `John Doe`\n- `{MIDDLE:abbrev}` → `J`\n\n### Template Configuration UI\n\n- Visual editor in Settings section\n- Real-time validation with helpful error messages\n- Placeholder hints and tooltips\n- \"Reset to Defaults\" button\n- Auto-saves to Browser localStorage\n\n### Migration from v1.x\n\nExisting users will have their settings automatically migrated:\n- Legacy \"Name Format\" dropdown → NAME sub-template\n- All saved preferences preserved\n- Default behavior unchanged (unless you customize)\n\n## Features in Detail\n\n### GEDCOM Processing\n\n- Parses GEDCOM 5.5 format files\n- Extracts individuals, families, and relationships\n- Builds relationship graph with confidence scores\n- Provides family tree statistics and insights\n- Chunked processing for UI responsiveness (5000 lines per chunk)\n\n### Intelligent Suggestions\n\n- **Surname autocomplete** from your GEDCOM data\n- **Given name suggestions** based on selected surname\n- **Context-aware relationships** - suggests parents, siblings, spouse, children\n- **Place suggestions** from your family tree\n- **Event type suggestions** - Birth, Marriage, Death, Census, etc.\n\n### EXIF Metadata\n\nGenerates EXIFtool commands for embedding metadata into your files:\n\n- FHMWG (Family History Metadata Working Group) compliant\n- Essential genealogy metadata fields\n- Customizable additional metadata (title, description, creator, copyright)\n- File-type optimized (.jpg, .pdf, .tiff, etc.)\n\n### International Support\n\nChoose from multiple place format options:\n\n- **USA**: City, County, State, Country\n- **Canada**: City, Province, Country\n- **UK**: Town, County, Country\n- **Germany**: City, State, Country\n- **Australia**: Town, State, Country\n- **Generic**: Flexible custom format\n\n## Documentation\n\nComprehensive documentation is available in the `docs/` directory:\n\n- **[Project Overview](docs/project-overview.md)** - Project purpose, features, and architecture\n- **[Architecture Documentation](docs/architecture.md)** - Technical architecture and design decisions\n- **[Development Guide](docs/development-guide.md)** - Setup and development instructions\n- **[Component Inventory](docs/component-inventory.md)** - UI components catalog\n- **[State Management](docs/state-management.md)** - State management patterns\n- **[Git Workflow](docs/git-workflow.md)** - Branching strategy and release process\n- **[Technical Decisions](docs/technical-decisions.md)** - Architectural choices and rationale\n\n## Technology Stack\n\n- **HTML5** - Document structure\n- **CSS3** - Custom styles\n- **JavaScript ES6+** - Application logic (vanilla, no frameworks)\n- **Bootstrap 5.3.0** - Responsive UI framework\n- **Bootstrap Icons 1.11.3** - Icon system\n\n### Architecture\n\n- **Type**: Single-Page Application (SPA)\n- **Deployment**: Static file hosting\n- **Build Process**: None (runs directly in browser)\n- **Dependencies**: 2 external CDN resources (Bootstrap CSS \u0026 Icons)\n- **File Size**: ~240KB total (including CDN resources)\n\n## Performance\n\n- **GEDCOM Processing**: \u003c10 seconds for 10,000+ individual files\n- **Filename Generation**: \u003c10ms\n- **Autocomplete Filtering**: \u003c50ms (debounced 300ms)\n\n## Contributing\n\nWe welcome contributions! Please see [CONTRIBUTING.md](CONTRIBUTING.md) for:\n\n- Code of conduct\n- Development setup\n- Coding standards\n- Pull request process\n- Issue reporting guidelines\n\n## Changelog\n\nSee [CHANGELOG.md](CHANGELOG.md) for a complete history of changes, including:\n\n- New features\n- Bug fixes\n- Breaking changes\n- Technical improvements\n\n## Versioning\n\nThis project follows [Semantic Versioning](https://semver.org/):\n\n- **MAJOR**: Breaking changes to filename format, GEDCOM parsing, or core functionality\n- **MINOR**: New features added in backward-compatible manner\n- **PATCH**: Backward-compatible bug fixes\n\n## Standards Compliance\n\n- **GEDCOM 5.5** - Family tree file format\n- **FHMWG** - Family History Metadata Working Group standards\n- **EXIFtool** - Metadata embedding tool compatibility\n\n## License\n\n[License information to be added]\n\n## Project Status\n\n- **Status**: Functional, production-ready\n- **Current Version**: 2.0.1\n- **Last Updated**: 2025-12-17\n- **Latest Release**: v2.0.1 - Documentation updates\n\n## Support\n\nFor issues, questions, or contributions, please refer to:\n\n- [Issues](../../issues) - Report bugs or request features\n- [CONTRIBUTING.md](CONTRIBUTING.md) - Contribution guidelines\n- [Documentation](docs/) - Comprehensive project documentation\n\n## Development Framework\n\nThis project uses the **BMAD (Business Model \u0026 Development)** methodology for structured workflows, documentation generation, and quality assurance. See the `bmad/` directory for development tooling.\n\n---\n\n**Made with care for the genealogy community**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femaynard%2Fgenealogy-filename-generator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Femaynard%2Fgenealogy-filename-generator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femaynard%2Fgenealogy-filename-generator/lists"}