diff --git a/GEMINI.md b/GEMINI.md new file mode 100644 index 0000000..db64e51 --- /dev/null +++ b/GEMINI.md @@ -0,0 +1,82 @@ +# GEMINI.md + +## Project Overview + +This project is a cross-platform Markdown editor and converter named **PanConverter**. It is built using the Electron framework, allowing it to run on Windows, macOS, and Linux. The application provides a rich text editor for writing Markdown, a live preview pane, and robust export capabilities powered by Pandoc. + +The core technologies used are: +- **Electron:** For creating the desktop application. +- **JavaScript:** The primary programming language. +- **Pandoc:** For converting Markdown to various formats like PDF, DOCX, HTML, etc. +- **Marked:** For parsing and rendering the Markdown preview in real-time. +- **CodeMirror:** As the underlying text editor component. +- **highlight.js:** For syntax highlighting in the editor. +- **DOMPurify:** To sanitize the HTML output in the preview pane for security. + +The application features a tabbed interface for working with multiple files, various themes, find and replace functionality, and detailed document statistics. + +## Building and Running + +To build and run this project locally, you will need to have Node.js and npm installed. + +### Installation + +1. **Clone the repository:** + ```bash + git clone https://github.com/amitwh/pan-converter.git + cd pan-converter + ``` + +2. **Install dependencies:** + ```bash + npm install + ``` + +### Running the Application + +To run the application in development mode, use the following command: + +```bash +npm start +``` + +### Building the Application + +You can build the application for different platforms using the scripts defined in `package.json`. + +- **Build for the current platform:** + ```bash + npm run build + ``` + +- **Build for a specific platform:** + ```bash + npm run build:win # For Windows + npm run build:mac # For macOS + npm run build:linux # For Linux + ``` + +- **Build for all platforms at once:** + ```bash + npm run dist:all + ``` + +The distributable files will be located in the `dist/` directory. + +### Testing + +The project does not have a dedicated test suite configured. The `test` script in `package.json` currently returns an error. + +```bash +npm test +``` + +## Development Conventions + +- **Code Style:** The codebase is written in JavaScript (ES6+). There is no linter or formatter configured, but the code generally follows standard JavaScript conventions. +- **Main vs. Renderer Process:** The application logic is split between the Electron main process (`src/main.js`) and the renderer process (`src/renderer.js`). + - `src/main.js` handles window management, application menus, file system operations, and communication with the operating system. + - `src/renderer.js` manages the user interface, editor functionality, and the Markdown preview. +- **Dependencies:** Project dependencies are managed through `package.json`. `devDependencies` are used for the build process, while `dependencies` are required for the application to run. +- **User Data:** The application stores settings and recent files in the user's application data directory. +- **Pandoc Integration:** The application relies on a system-installed version of Pandoc for its export functionality. It does not bundle Pandoc.