{"id":50944306,"url":"https://github.com/codecaine-zz/electrobun_datamanager","last_synced_at":"2026-06-17T18:07:37.973Z","repository":{"id":361851856,"uuid":"1256124759","full_name":"codecaine-zz/electrobun_datamanager","owner":"codecaine-zz","description":"A fast Electrobun desktop app template with React, Tailwind CSS, and Vite for hot module replacement (HMR).","archived":false,"fork":false,"pushed_at":"2026-06-01T13:46:50.000Z","size":2704,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-01T15:25:30.129Z","etag":null,"topics":["bun","crud","desktop-app","electrobun","tables"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/codecaine-zz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"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}},"created_at":"2026-06-01T13:37:47.000Z","updated_at":"2026-06-01T13:48:27.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/codecaine-zz/electrobun_datamanager","commit_stats":null,"previous_names":["codecaine-zz/electrobun_datamanager"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/codecaine-zz/electrobun_datamanager","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codecaine-zz%2Felectrobun_datamanager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codecaine-zz%2Felectrobun_datamanager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codecaine-zz%2Felectrobun_datamanager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codecaine-zz%2Felectrobun_datamanager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/codecaine-zz","download_url":"https://codeload.github.com/codecaine-zz/electrobun_datamanager/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codecaine-zz%2Felectrobun_datamanager/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34459783,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-17T02:00:05.408Z","response_time":127,"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":["bun","crud","desktop-app","electrobun","tables"],"created_at":"2026-06-17T18:07:37.339Z","updated_at":"2026-06-17T18:07:37.968Z","avatar_url":"https://github.com/codecaine-zz.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Electrobun Data Manager\n\nA lightweight, native macOS desktop spreadsheet and database table manager application built with [Electrobun](https://blackboard.sh/electrobun), React, TypeScript, and Tailwind CSS. \n\nUnlike traditional Electron applications, **Electrobun** uses a ultra-lightweight native webview combined with Bun, resulting in extremely fast startup times, minimal memory footprint, and low CPU overhead.\n\n---\n\n## 📸 Screenshots\n\n### Dark Mode\n![Dark Mode Screenshot](screenshots/screenshot_dark.png)\n\n### Light Mode\n![Light Mode Screenshot](screenshots/screenshot_light.png)\n\n---\n\n## ✨ Features\n\n- **📂 Native Workspace Management**\n  - Save your spreadsheets to disk as clean JSON schemas.\n  - Choose directory locations, create new workspaces, or load existing workspace backups.\n  - Auto-remembers your last opened workspace, window frame position, and theme preference.\n  - **Asynchronous Auto-Save**: Workspace changes are saved natively to disk in the background (debounced at 800ms) to prevent data loss.\n\n- **🗂️ Multi-Table Workspace**\n  - Create, rename, or delete sheets dynamically.\n  - macOS-inspired vertical sidebar navigation.\n  - **Drag-and-Drop Reordering**: Rearrange your table tabs in the sidebar by dragging them vertically.\n\n- **🛠️ Rich Column \u0026 Data Type Control**\n  - Add, rename, or delete columns with specialized types:\n    - 🔤 **Text**: Standard single-line text input.\n    - 📝 **Long Text**: Multi-line description field.\n    - 🔢 **Number**: Number validation with automatic casting on export.\n    - 📅 **Date / Time / Date \u0026 Time**: Native calendar/clock picker inputs.\n    - 💻 **Code**: Syntax-optimized code block cell.\n  - **Horizontal Reordering**: Grab any column header and drag it horizontally to rearrange the column order.\n  - **Smart Indentation**: Pressing `Tab` key inside Code or Long Text fields inserts a literal tab (`\\t`) instead of moving input focus.\n\n- **🔍 Advanced Querying Panel**\n  - **Multi-Clause Filters (AND logic)**: Construct advanced filters against any column using conditional operators (*Contains, Equals, Not Equals, Starts With, Ends With, Greater/Less Than, Is Empty, Is Not Empty*).\n  - **Hierarchical Sorting**: Chain multiple nested sorting rules (e.g., sort by *Priority* ascending, then by *Due Date* descending).\n\n- **📋 System Clipboard \u0026 Disk Export**\n  - **Save to Disk**: Export individual tables or your entire workspace structure as a structured JSON file.\n  - **Instant Clipboard Export**: Convert table data on the fly and copy to your system clipboard as:\n    - Javascript Object Array\n    - Python List of Dicts (automatically translates `True`/`False`/`None`)\n    - JavaScript/Python Workspace maps (all sheets exported simultaneously)\n\n---\n\n## 🚀 Getting Started\n\n### Prerequisites\n\n- **Bun**: Ensure you have [Bun](https://bun.sh) installed on your system.\n\n### Installation\n\n```bash\n# Clone the repository and navigate to the project directory\ncd electrobun_datamanager\n\n# Install dependencies\nbun install\n```\n\n### Running the Application\n\nFor the best development experience, run the app with Hot Module Replacement (HMR) enabled:\n\n```bash\n# Run with Hot Module Replacement (Vite Dev Server + Electrobun Window)\nbun run dev:hmr\n```\n\nFor testing production-bundled assets locally without HMR:\n\n```bash\n# Bundle assets and start Electrobun\nbun run dev\n```\n\n### Building for Release\n\n```bash\n# Build production bundle\nbun run build\n\n# Package the application for production release\nbun run build:prod\n```\n\n---\n\n## 🏗️ Architecture \u0026 RPC Communication\n\nElectrobun separates the execution into two main spaces:\n1. **Main Process (Bun)**: Runs in the Bun runtime, handles OS actions (file dialogue window, system clipboard, config file writes, system theme setting).\n2. **Webview Process (Vite/React)**: Runs the user interface inside a native macOS WKWebView.\n\nCommunication between these two runtimes is handled through a **type-safe RPC schema** defined in [types.ts](file:///Users/codecaine/electrobun_datamanager/src/shared/types.ts):\n\n```typescript\nexport type DataManagerRPCSchema = {\n\tbun: RPCSchema\u003c{\n\t\trequests: {\n\t\t\tloadData: { params: void; response: { data: any; filePath: string | null } };\n\t\t\tsaveData: { params: { data: any; filePath: string | null }; response: { success: boolean } };\n\t\t\topenFile: { params: void; response: { data: any; filePath: string | null } | null };\n\t\t\tsaveFileAs: { params: { data: any; filename?: string }; response: { success: boolean; filePath: string } | null };\n\t\t\texportFile: { params: { content: string; defaultName: string }; response: { success: boolean } };\n\t\t\tcopyToClipboard: { params: { text: string }; response: { success: boolean } };\n\t\t\tgetTheme: { params: void; response: { theme: \"light\" | \"dark\" } };\n\t\t\tsetTheme: { params: { theme: \"light\" | \"dark\" }; response: { success: boolean } };\n\t\t};\n\t\tmessages: {\n\t\t\tlogToBun: { msg: string };\n\t\t};\n\t}\u003e;\n\twebview: RPCSchema\u003c{\n\t\trequests: {};\n\t\tmessages: {\n\t\t\tlogToWebview: { msg: string };\n\t\t};\n\t}\u003e;\n};\n```\n\n---\n\n## 📁 Project Structure\n\n```\n├── screenshots/\n│   ├── screenshot_dark.png    # App mockup in dark theme\n│   └── screenshot_light.png   # App mockup in light theme\n├── src/\n│   ├── bun/\n│   │   └── index.ts           # Main process (Electrobun window \u0026 file system handler)\n│   ├── mainview/\n│   │   ├── components/\n│   │   │   └── TableGrid.tsx  # Dynamic interactive spreadsheet component\n│   │   ├── App.tsx            # React state manager, sidebar, modals \u0026 toolbar UI\n│   │   ├── main.tsx           # React entry point\n│   │   ├── index.html         # Webview page template\n│   │   ├── index.css          # Tailwind configurations \u0026 native style overrides\n│   │   └── rpc.ts             # Webview-side RPC interface definition\n│   └── shared/\n│       └── types.ts           # Shared type schemas \u0026 RPC definition mapping\n├── electrobun.config.ts       # Electrobun app build config\n├── vite.config.ts             # Vite bundle settings\n├── tailwind.config.js         # Tailwind stylesheet rules\n└── package.json               # Package metadata and runtime scripts\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodecaine-zz%2Felectrobun_datamanager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcodecaine-zz%2Felectrobun_datamanager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodecaine-zz%2Felectrobun_datamanager/lists"}