{"id":30689303,"url":"https://github.com/jhenbertgit/file-search-tool","last_synced_at":"2025-09-02T01:06:12.983Z","repository":{"id":311188698,"uuid":"1042779068","full_name":"jhenbertgit/file-search-tool","owner":"jhenbertgit","description":"An advance file search tool build with Electron","archived":false,"fork":false,"pushed_at":"2025-08-22T16:59:36.000Z","size":238,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-22T18:51:54.390Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jhenbertgit.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2025-08-22T15:02:39.000Z","updated_at":"2025-08-22T16:49:16.000Z","dependencies_parsed_at":"2025-08-22T18:52:00.005Z","dependency_job_id":"f50b4dfb-99a0-4357-b10e-e9d0e3fb8d5b","html_url":"https://github.com/jhenbertgit/file-search-tool","commit_stats":null,"previous_names":["jhenbertgit/file-search-tool"],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/jhenbertgit/file-search-tool","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jhenbertgit%2Ffile-search-tool","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jhenbertgit%2Ffile-search-tool/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jhenbertgit%2Ffile-search-tool/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jhenbertgit%2Ffile-search-tool/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jhenbertgit","download_url":"https://codeload.github.com/jhenbertgit/file-search-tool/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jhenbertgit%2Ffile-search-tool/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273214051,"owners_count":25065078,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-01T02:00:09.058Z","response_time":120,"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":[],"created_at":"2025-09-02T01:04:55.920Z","updated_at":"2025-09-02T01:06:12.972Z","avatar_url":"https://github.com/jhenbertgit.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# File Search Tool\n\nA modern, cross-platform desktop application for quickly searching files by name or content, built with Electron Forge for streamlined development and distribution.\n\n![File Search Tool](https://img.shields.io/badge/Electron-^27.0.0-blue?style=flat-square)\n![Electron Forge](https://img.shields.io/badge/Electron%20Forge-^7.8.3-green?style=flat-square)\n![Node.js](https://img.shields.io/badge/Node.js-18%2B-green?style=flat-square)\n\n## Screenshot\n\n![File Search Tool](./screenshot.png)\n\n## Features\n\n### For End Users\n\n- **Dual Search Modes**: Search by file name or file content\n- **File Type Filtering**: Filter results by specific file types (PDF, Word, Excel, images, etc.)\n- **Real-time Search**: Live updates as files are added, modified, or deleted\n- **File Operations**: Double-click to open files or use the folder icon to reveal file location\n- **Progress Tracking**: See real-time progress with file counts and matches\n- **Modern UI**: Clean, intuitive interface with visual feedback\n- **Cross-Platform**: Works on Windows, macOS, and Linux\n\n### For Developers\n\n- **Electron Forge**: Simplified development workflow and packaging\n- **File System Access**: Efficient recursive directory scanning with `fs-extra`\n- **Real-time Monitoring**: File system watching with `chokidar`\n- **IPC Communication**: Secure inter-process communication\n- **Modern JavaScript**: ES6+ features and async/await patterns\n- **Custom Preload Script**: Secure exposure of Node.js APIs\n\n## Installation \u0026 Setup\n\n### Prerequisites\n\n- Node.js 18 or higher\n- npm or yarn package manager\n\n### Quick Start\n\n1. **Install dependencies**:\n\n   ```bash\n   npm install\n   ```\n\n2. **Run the application in development mode**:\n\n   ```bash\n   npm start\n   ```\n\n3. **Package the application** (optional):\n\n   ```bash\n   npm run package\n   ```\n\n4. **Create distributable installers** (optional):\n   ```bash\n   npm run make\n   ```\n\n## Usage Guide\n\n### Basic Search\n\n1. **Select Directory**: Click the folder icon to choose where to search\n2. **Enter Search Term**: Type what you're looking for in the search field\n3. **Choose Search Type**: Select whether to search by file name or file content\n4. **Filter by File Type** (optional): Use the dropdown to limit results to specific file types\n5. **Click Search**: Start the search process\n\n### Advanced Features\n\n- **Custom File Types**: Select \"Custom Extension\" and enter extensions separated by commas (e.g., `pdf,docx,txt`)\n- **Real-time Updates**: The search automatically updates when files are added, modified, or deleted\n- **File Operations**:\n  - Double-click any result to open the file with its default application\n  - Click the folder icon next to any result to reveal the file in Explorer/Finder\n- **Progress Tracking**: Watch the progress counter during large searches\n\n### Keyboard Shortcuts\n\n- `Enter` in search field: Start search\n- `Escape`: Stop current search (when available)\n\n## For Developers\n\n### Project Structure with Electron Forge\n\n```\nfile-search-app/\n├── src/\n│   ├── index.html          # Main UI structure\n│   ├── index.css           # Application styles\n│   ├── index.js            # Main process (Electron)\n│   ├── preload.js          # Secure bridge between main and renderer\n│   └── renderer.js         # Renderer process (UI logic)\n├── package.json            # Dependencies and scripts\n├── forge.config.js         # Electron Forge configuration\n└── README.md              # This file\n```\n\n### Electron Forge Commands\n\n- `npm start` - Start the application in development mode with hot reloading\n- `npm run package` - Package the application without creating installers\n- `npm run make` - Create distributable installers for all platforms\n- `npm run publish` - Publish the application to GitHub or other providers\n\n### Architecture Overview\n\n#### Main Process (`index.js`)\n\n- Handles file system operations\n- Manages window creation and lifecycle\n- Implements IPC handlers for file operations\n\n#### Renderer Process (`renderer.js`)\n\n- Manages UI interactions and validation\n- Updates UI based on search results\n- Communicates with main process via preload script\n\n#### Preload Script (`preload.js`)\n\n- Securely exposes specific Node.js APIs to the renderer process\n- Prevents direct Node.js access from the UI for security\n\n### Key Dependencies\n\n- `electron`: Desktop application framework\n- `@electron-forge/*`: Electron Forge tooling for development and packaging\n- `fs-extra`: Enhanced file system operations\n- `chokidar`: Efficient file system watching\n\n### Development Guide\n\n1. **Setting up the development environment**:\n\n   ```bash\n   git clone https://github.com/jhenbertgit/file-search-tool.git\n   cd file-search-tool\n   npm install\n   ```\n\n2. **Running in development mode**:\n\n   ```bash\n   npm start\n   ```\n\n3. **Debugging**:\n   - The application opens DevTools automatically in development mode\n   - Use `console.log()` statements in both main and renderer processes\n   - Main process logs appear in the terminal\n   - Renderer process logs appear in DevTools\n\n4. **Adding new features**:\n   - Update UI in `index.html` and `index.css`\n   - Add UI logic in `renderer.js`\n   - Implement backend functionality in `index.js`\n   - Expose new APIs through `preload.js`\n\n### Building for Distribution\n\n1. **Package the application**:\n\n   ```bash\n   npm run package\n   ```\n\n   Creates platform-specific packages in the `out` directory.\n\n2. **Create installers**:\n\n   ```bash\n   npm run make\n   ```\n\n   Generates distributable installers for Windows, macOS, and Linux.\n\n3. **Publish** (if configured):\n   ```bash\n   npm run publish\n   ```\n   Publishes the application to configured providers like GitHub.\n\n### API Reference\n\n#### Main Process IPC Handlers\n\n- `open-directory-dialog`: Opens native directory picker\n- `search-files`: Initiates file search with parameters\n- `open-file`: Opens file with default application\n- `open-file-location`: Reveals file in file explorer\n- `stop-search`: Terminates current search operation\n\n#### Renderer Process Events\n\n- `search-results`: Emitted when search results are available\n- `search-error`: Emitted when an error occurs during search\n- `search-progress`: Emitted with progress updates during search\n\n## Configuration\n\n### Electron Forge Configuration\n\nThe application uses Electron Forge with the following makers configured:\n\n- **Windows**: Squirrel installer (`.exe`)\n- **macOS**: ZIP archive and DMG installer\n- **Linux**: DEB and RPM packages\n\n### Customizing Build Configuration\n\nEdit `forge.config.js` to modify:\n\n- Application metadata\n- Installer options\n- Publishing targets\n- Build preferences\n\n## Troubleshooting\n\n### Common Issues\n\n1. **Application won't start**:\n   - Ensure Node.js version 18+ is installed\n   - Delete `node_modules` folder and run `npm install` again\n\n2. **Build failures**:\n   - On Windows, ensure Windows Build Tools are installed\n   - On macOS, ensure Xcode Command Line Tools are installed\n   - On Linux, ensure required build dependencies are installed\n\n3. **Search is slow**:\n   - Avoid searching very large directories with many small files\n   - Use file type filters to narrow search scope\n\n4. **No results found**:\n   - Check that the search directory contains relevant files\n   - Verify search term spelling\n   - Try a less specific search term\n\n### Performance Tips\n\n- Use file type filters to significantly improve search speed\n- For content searches, avoid searching binary files by filtering by type\n- The application processes files in batches to prevent UI freezing\n\n## Contributing\n\n1. Fork the repository\n2. Create a feature branch (`git checkout -b feature/amazing-feature`)\n3. Commit your changes (`git commit -m 'Add amazing feature'`)\n4. Push to the branch (`git push origin feature/amazing-feature`)\n5. Open a Pull Request\n\n## License\n\nThis project is licensed under the MIT License - see the LICENSE file for details.\n\n## Support\n\nFor issues and questions:\n\n1. Check the troubleshooting section above\n2. Search existing GitHub issues\n3. Create a new issue with detailed information about your problem\n\n## Version History\n\n- **v1.0** (Current)\n  - Initial release with basic search functionality\n  - File name and content search modes\n  - File type filtering\n  - File opening and location revealing\n  - Electron Forge integration for streamlined development\n\n---\n\n**Note**: This application accesses your file system to perform searches. It only reads file contents when performing content searches and does not modify or transmit your files.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjhenbertgit%2Ffile-search-tool","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjhenbertgit%2Ffile-search-tool","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjhenbertgit%2Ffile-search-tool/lists"}