🔗 Reddit Discussion | 💬 Discord Community
A powerful desktop application for managing and enhancing your Cursor IDE notepads, built with Electron, React, and TypeScript. (Ish. It's a proof of concept that shows you how to hook into Cursor's workspace / global settings and do some cool stuff.)
Lost your Cursor notepads? Here's where they live:
# Windows
%AppData%/Roaming/Cursor/User/workspaceStorage/{workspace_id}/state.vscdb
# macOS
~/Library/Application Support/Cursor/User/workspaceStorage/{workspace_id}/state.vscdb
Your notepads are stored in a SQLite database under two keys:
notepadData
notepad.reactiveStorageId
Want to explore? Get DB Browser for SQLite and run:
SELECT * FROM ItemTable WHERE key IN ('notepadData', 'notepad.reactiveStorageId');
📚 Read the full technical deep-dive to learn how we discovered this and built tools around it.
Cursor Tools provides a robust suite of utilities for managing your Cursor IDE notepads, allowing you to backup, sync, and organize your development notes across workspaces. Built with modern technologies and best practices, it offers a seamless integration with your Cursor IDE workflow.
- Create & Edit: Create new notepads with rich content and edit existing ones
- Organization: Group related notepads and manage them efficiently
- Search & Filter: Quickly find notepads across all workspaces
- Backup & Sync: Automatically backup your Cursor notepads across workspaces
- Import/Export: Share notepads between workspaces or with team members
Pre-built notepad templates for common development workflows:
- Git branch and workflow best practices
- Test-Driven Development (TDD) guides
- AI-assisted development patterns
- Documentation templates
- Code review checklists
- Performance optimization guides
- Security best practices
- Accessibility guidelines
- Architecture planning templates
- Multi-Workspace Support: Manage notepads across multiple Cursor workspaces
- Workspace Migration: Easily copy notepads between workspaces
- Context Awareness: Notepads maintain references to relevant files and folders
- Persistent Storage: Reliable SQLite-based storage for all your notes
- Version History: Track changes to your notepads over time
- Rich Context: Link notepads to files, folders, and git commits
- Smart References: Maintain connections to external resources and documentation
- Customizable Layout: Adjust the UI layout to match your workflow
# Install dependencies
pnpm install
# Start development
pnpm dev:electron
# Build for your platform
pnpm build:win # Windows
pnpm build:mac # macOS
pnpm build:linux # Linux
This project uses Turborepo and follows modern development practices:
apps/
├── electron-app/ # Main desktop application
│ ├── src/
│ │ ├── main/ # Electron main process
│ │ ├── renderer/ # React-based UI
│ │ └── preload/ # Preload scripts
│ └── ...
packages/
├── eslint-config/ # Shared ESLint configuration
└── typescript-config/ # Shared TypeScript configuration
- TypeScript: For type-safe code
- Electron: Desktop application framework
- React: UI components and state management
- SQLite: Reliable data persistence
- Tailwind CSS: Modern styling
- ESLint & Prettier: Code quality tools
// Create a new notepad
const notepad = await notepadManager.createNotepad({
name: "My Notepad",
text: "Initial content"
});
// Get all notepads
const notepads = await notepadManager.getAll();
// Get a specific notepad
const notepad = await notepadManager.getNotepad(id);
// Update notepad content
await notepad.setText("Updated content");
// Delete a notepad
await notepadManager.deleteNotepad(id);
// Get all workspaces
const workspaces = await workspaceManager.getWorkspaces();
// Get a specific workspace
const workspace = await workspaceManager.getWorkspace(id);
// Access workspace storage
await workspace.set("key", value);
const value = await workspace.get("key");
We welcome contributions! Please follow these steps:
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
Please ensure your code follows our style guidelines and includes appropriate tests.
MIT