Skip to content

lifeinchords/cursor-diamonds

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cursor Diamonds

A tool to save, browse and export your AI conversations history

Features

  • View and search through your AI conversations history
  • Unified view:
    • Cursor chat and composer conversations
    • Claude
    • OpenAI
  • Export conversations to Markdown, HTML, and PDF
  • Simple, performant interface

Prerequisites

  • Node.js 22+
  • pnpm 10+
  • Cursor Code Editor installed on your system
  • MacOS

Installation

  1. Clone the repository
git clone https://github.com/lifeinchords/my-diamonds.git
cd my-diamonds
  1. Install dependencies
pnpm install
  1. Start the development server
pnpm dev

This will start both the frontend (Vite) and backend (Express) servers concurrently.

Configuration

Default workspace paths:

  • macOS: /Users/your-username/Library/Application Support/Cursor/User/workspaceStorage Specify as full path. ~/Library/.... is not supported

Architecture

The application consists of two main components:

  1. Frontend: A React 18 application built with TypeScript, Vite, and Radix UI
  2. Backend: An Express server that provides access to the Cursor SQLite database files

Note on sqlite:

sqlite3:

  • is the low-level Node.js binding for SQLite. It provides the core SQLite functionality and is used as the driver for database operations.

  • provides the core SQLite functionality and the read-only mode that's critical for your application (as noted in your docs, it's "absolutely critical not to modify the source database")

sqlite (also known as sqlite-async) :

  • is a higher-level wrapper around sqlite3 that provides a more modern, Promise-based API and better TypeScript support.

  • provides a more modern async/await interface that makes the code cleaner and easier to work with

Together they provide better TypeScript support and a more developer-friendly experience while maintaining the performance and reliability of the native SQLite bindings. This is a common pattern in Node.js SQLite applications where you want both the reliability of the native bindings (sqlite3) and the convenience of a modern Promise-based API (sqlite). We're not duplicating functionality - rather, using sqlite as an abstraction layer over sqlite3.

License

GPL-3.0-or-later

About

Explore and export your precious Cursor chat history

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Languages