https://github.com/furkanksl/md
A useful drawer for MacOS. chatting, clipboard, webscraping, window managing, shotcuts
https://github.com/furkanksl/md
ai ai-assistant aichat chat chatapp clipboard-history shortcuts-app sidebar web-scraping window-management
Last synced: 4 months ago
JSON representation
A useful drawer for MacOS. chatting, clipboard, webscraping, window managing, shotcuts
- Host: GitHub
- URL: https://github.com/furkanksl/md
- Owner: furkanksl
- Created: 2026-01-21T02:51:08.000Z (5 months ago)
- Default Branch: main
- Last Pushed: 2026-02-08T06:13:25.000Z (4 months ago)
- Last Synced: 2026-02-08T13:45:24.347Z (4 months ago)
- Topics: ai, ai-assistant, aichat, chat, chatapp, clipboard-history, shortcuts-app, sidebar, web-scraping, window-management
- Language: TypeScript
- Homepage: https://mydrawer.furkanksl.com
- Size: 3.81 MB
- Stars: 42
- Watchers: 0
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# My Drawer
**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.
This repository follows a monorepo layout that keeps the native drawer experience in `desktop/` alongside a small marketing site in `landing/`.
## Features
* **🧠 AI Chat**: Chat with various LLMs (OpenAI, Anthropic, Google, Mistral, Groq, or Custom). Features rich markdown support, drag & drop attachments, and message history editing (Regenerate/Rollback).
* **📝 Tasks & Notes**: Built-in task manager and scratchpad to keep track of your daily to-dos and quick thoughts without leaving the context.
* **📋 Clipboard Manager**: Automatically tracks your clipboard history. Search, pin, and organize your clips locally.
* **🌐 Web Research**: Intelligent web scraping that fetches URL content and feeds it into an LLM for instant summarization, analysis, or Q&A.
* **⚡ App Shortcuts**: Quick access to your favorite applications.
* **🪟 Window Layouts**: Manage and organize your window arrangements efficiently.
* **🎨 Island UI**: A beautiful, transparent "Island" interface that sits unobtrusively on your desktop, with native macOS blur and dark mode support.
* **🔒 Local & Private**: Your data stays on your machine. API keys are stored securely.
## Tech Stack
**Frontend**
* **Framework**: React (Vite)
* **Language**: TypeScript
* **Runtime**: Bun
* **Styling**: Tailwind CSS, [shadcn/ui](https://ui.shadcn.com/)
* **Animations**: Framer Motion
* **State Management**: Zustand (with persistence)
* **AI Integration**: Vercel AI SDK (`ai`), `react-markdown`
**Backend (Core - macOS)**
* **Runtime**: Tauri v2 (Rust)
* **OS Integration**: `cocoa` / `objc` crates for macOS specific window handling.
* **Scraping**: `reqwest` + `html2text` for robust, cleaner-friendly content extraction.
## Architecture
* **`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.
* **`landing/`** is a standalone Vite + React marketing site that introduces My Drawer, showcases key features, and delivers a CTA in a responsive layout.
## Repository layout
* 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`.
* `desktop/`: The complete desktop experience with the Tauri frontend (`src`), Rust backend (`src-tauri`), Tailwind/Vite configs, and release scripts.
* `landing/`: The marketing site with its own Vite config, TypeScript entry point, and CSS styles.
## Getting Started
### Prerequisites
* [Node.js](https://nodejs.org/) (v18+) or [Bun](https://bun.sh/)
* [Rust & Cargo](https://rustup.rs/) (latest stable) for the desktop build
### Installation
```bash
npm install
# or
bun install
```
This installs dependencies for both workspaces and produces one lockfile at the repo root.
### Running
* `npm run dev:desktop` — Starts the desktop Vite server for Tauri development.
* `npm run tauri:desktop` — Runs `tauri dev` from the desktop workspace (requires Rust).
* `npm run dev:landing` — Serves the landing page locally (`landing/`).
### Building
* `npm run build:desktop` — `tsc && vite build` for the desktop frontend.
* `npm run build:landing` — Builds the marketing landing page and outputs into `landing/dist`.
## Development Commands
The workspace scripts mirror the previous standalone commands:
* `npm run dev:desktop`
* `npm run preview` inside `desktop/`
* `npm run build:desktop`
* `npm run tauri:desktop`
* `npm run release` (run from `desktop/`) — handles versioning, signing, and notarization via `desktop/scripts/release.sh`.
* `npm run dev:landing`
* `npm run build:landing`
## Versioning & Release
The automated release flow remains under `desktop/scripts`. Version bumps still update both `desktop/package.json` and `desktop/src-tauri/tauri.conf.json`.
```bash
cd desktop
bun run release -- --bump patch
```
Use `npm run bump` from the desktop workspace to adjust versions (`desktop/package.json`).