{"id":44078536,"url":"https://github.com/furkanksl/md","last_synced_at":"2026-02-21T10:01:12.991Z","repository":{"id":335562914,"uuid":"1138712575","full_name":"furkanksl/md","owner":"furkanksl","description":"A useful drawer for MacOS. chatting, clipboard, webscraping, window managing, shotcuts ","archived":false,"fork":false,"pushed_at":"2026-02-08T06:13:25.000Z","size":3991,"stargazers_count":42,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-08T13:45:24.347Z","etag":null,"topics":["ai","ai-assistant","aichat","chat","chatapp","clipboard-history","shortcuts-app","sidebar","web-scraping","window-management"],"latest_commit_sha":null,"homepage":"https://mydrawer.furkanksl.com","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/furkanksl.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-01-21T02:51:08.000Z","updated_at":"2026-02-08T11:18:59.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/furkanksl/md","commit_stats":null,"previous_names":["furkanksl/md"],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/furkanksl/md","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/furkanksl%2Fmd","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/furkanksl%2Fmd/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/furkanksl%2Fmd/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/furkanksl%2Fmd/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/furkanksl","download_url":"https://codeload.github.com/furkanksl/md/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/furkanksl%2Fmd/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29679049,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-21T09:33:50.764Z","status":"ssl_error","status_checked_at":"2026-02-21T09:33:19.949Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["ai","ai-assistant","aichat","chat","chatapp","clipboard-history","shortcuts-app","sidebar","web-scraping","window-management"],"created_at":"2026-02-08T08:09:29.514Z","updated_at":"2026-02-21T10:01:12.975Z","avatar_url":"https://github.com/furkanksl.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# My Drawer\n\n**My Drawer** is a powerful, local-first personal AI workspace designed to integrate deeply with your macOS workflow. It serves as a central hub for journaling, clipboard management, window organization, and intelligent web research.\n\nThis repository follows a monorepo layout that keeps the native drawer experience in `desktop/` alongside a small marketing site in `landing/`.\n\n## Features\n\n*   **🧠 AI Chat**: Chat with various LLMs (OpenAI, Anthropic, Google, Mistral, Groq, or Custom). Features rich markdown support, drag \u0026 drop attachments, and message history editing (Regenerate/Rollback).\n*   **📝 Tasks \u0026 Notes**: Built-in task manager and scratchpad to keep track of your daily to-dos and quick thoughts without leaving the context.\n*   **📋 Clipboard Manager**: Automatically tracks your clipboard history. Search, pin, and organize your clips locally.\n*   **🌐 Web Research**: Intelligent web scraping that fetches URL content and feeds it into an LLM for instant summarization, analysis, or Q\u0026A.\n*   **⚡ App Shortcuts**: Quick access to your favorite applications.\n*   **🪟 Window Layouts**: Manage and organize your window arrangements efficiently.\n*   **🎨 Island UI**: A beautiful, transparent \"Island\" interface that sits unobtrusively on your desktop, with native macOS blur and dark mode support.\n*   **🔒 Local \u0026 Private**: Your data stays on your machine. API keys are stored securely.\n\n## Tech Stack\n\n**Frontend**\n*   **Framework**: React (Vite)\n*   **Language**: TypeScript\n*   **Runtime**: Bun\n*   **Styling**: Tailwind CSS, [shadcn/ui](https://ui.shadcn.com/)\n*   **Animations**: Framer Motion\n*   **State Management**: Zustand (with persistence)\n*   **AI Integration**: Vercel AI SDK (`ai`), `react-markdown`\n\n**Backend (Core - macOS)**\n*   **Runtime**: Tauri v2 (Rust)\n*   **OS Integration**: `cocoa` / `objc` crates for macOS specific window handling.\n*   **Scraping**: `reqwest` + `html2text` for robust, cleaner-friendly content extraction.\n\n## Architecture\n\n*   **`desktop/`** contains the Tauri frontend (`desktop/src`) and Rust backend (`desktop/src-tauri`). The existing `scripts/` helpers (release automation, version bumps, etc.) live inside this workspace so those commands continue to run from there.\n*   **`landing/`** is a standalone Vite + React marketing site that introduces My Drawer, showcases key features, and delivers a CTA in a responsive layout.\n\n## Repository layout\n\n*   Root (`package.json`): Defines the npm workspaces, central scripts for starting/building each workspace, and shared tooling. Run `npm install` from the root to bootstrap both packages and generate a single `package-lock.json`.\n*   `desktop/`: The complete desktop experience with the Tauri frontend (`src`), Rust backend (`src-tauri`), Tailwind/Vite configs, and release scripts.\n*   `landing/`: The marketing site with its own Vite config, TypeScript entry point, and CSS styles.\n\n## Getting Started\n\n### Prerequisites\n\n*   [Node.js](https://nodejs.org/) (v18+) or [Bun](https://bun.sh/)\n*   [Rust \u0026 Cargo](https://rustup.rs/) (latest stable) for the desktop build\n\n### Installation\n\n```bash\nnpm install\n# or\nbun install\n```\n\nThis installs dependencies for both workspaces and produces one lockfile at the repo root.\n\n### Running\n\n*   `npm run dev:desktop` — Starts the desktop Vite server for Tauri development.\n*   `npm run tauri:desktop` — Runs `tauri dev` from the desktop workspace (requires Rust).\n*   `npm run dev:landing` — Serves the landing page locally (`landing/`).\n\n### Building\n\n*   `npm run build:desktop` — `tsc \u0026\u0026 vite build` for the desktop frontend.\n*   `npm run build:landing` — Builds the marketing landing page and outputs into `landing/dist`.\n\n## Development Commands\n\nThe workspace scripts mirror the previous standalone commands:\n\n*   `npm run dev:desktop`\n*   `npm run preview` inside `desktop/`\n*   `npm run build:desktop`\n*   `npm run tauri:desktop`\n*   `npm run release` (run from `desktop/`) — handles versioning, signing, and notarization via `desktop/scripts/release.sh`.\n*   `npm run dev:landing`\n*   `npm run build:landing`\n\n## Versioning \u0026 Release\n\nThe automated release flow remains under `desktop/scripts`. Version bumps still update both `desktop/package.json` and `desktop/src-tauri/tauri.conf.json`.\n\n```bash\ncd desktop\nbun run release -- --bump patch\n```\nUse `npm run bump` from the desktop workspace to adjust versions (`desktop/package.json`).","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffurkanksl%2Fmd","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffurkanksl%2Fmd","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffurkanksl%2Fmd/lists"}