Skip to main content

The Ultimate Science & Engineering Research and Academic Markdown Editing & Visualization Studio

Project description

๐Ÿงช Joy Markdown Studio v3.9.29 ๐ŸŒŸ

The Ultimate Science & Engineering Research and Academic Markdown Editing & Visualization Studio
A premium desktop markdown creator application crafted with Python (PyWebView + Bottle) and modern Vanilla CSS/JS.

[!TIP] ๐Ÿ’ก You can view the detailed release notes and updates history for all versions in the CHANGELOG.md document.


๐Ÿ“ธ Overview

Joy Markdown Studio goes beyond a simple document viewer; it is an academic-friendly markdown editor designed to maximize productivity for researchers and students in science and engineering fields. It provides high-end features such as support for entering complex mathematical symbols, automatic 2D molecular structure generation via chemical name search, real-time diagram rendering (Mermaid), and standalone high-quality HTML export, all with a sleek Glassmorphism UI.


โœจ Key Features

1. ๐Ÿ“ CodeMirror 6 Editor Core

  • High-Speed Modern Editor Engine: Replaced the standard textarea with the high-performance CodeMirror 6 engine. It provides a fast and stable typing environment even with massive markdown documents.
  • Maximizing Coding Productivity: Packed with essential coding assists such as auto-close brackets, robust undo/redo history, and custom shortcuts found in modern editors.

2. ๐Ÿ“ Academic Math Helper (KaTeX Integration)

  • Real-time Formula Rendering: Equipped with a fast and accurate KaTeX engine to render inline math ($...$) and block math ($$...$$) seamlessly.
  • Three Science & Engineering Tabbed Helper Panels:
    • Math (๐Ÿ“): One-click insertion of fractions, roots, calculus, limits, Greek letters, and key symbols.
    • Physics (โš›๏ธ): Provides essential formulas such as Coulomb's law, universal gravitation, Schrรถdinger's equation, Lorentz force, etc.
    • Chemistry/Life Sciences (๐Ÿงช): Supports templates for Arrhenius equation, ideal gas law, reaction arrows, DNA base pairs, and Gibbs free energy.
  • Smart Cursor and Wildcards: When inserting a formula template, the area to be edited (?) is automatically focused as a mouse selection, minimizing typing movement.

3. ๐Ÿงฌ PubChem Real-time Chemical Molecular Structure Visualization

  • PubChem API Integration: Search for chemical compound names in Korean or English (e.g., aspirin, caffeine) to retrieve molecular data and SMILES strings in real time from the US NLM PubChem database.
  • 2D Molecular Structure Preview: Displays the 2D vector structural formula of the searched compound as real-time graphics inside the panel.
  • SMILES Code Drawer: When inserted into the editor as a smiles code block, it is automatically visualized as a beautiful chemical skeletal structure model in the main preview area.

4. ๐Ÿ“Š Dynamic Diagrams (Mermaid.js)

  • Instantly visualizes flowcharts, sequence diagrams, Gantt charts, mind maps, etc., directly from markdown text code.
  • Mermaid Fullscreen & Zoom Mode: Double-clicking a rendered diagram or clicking the zoom icon opens it in a high-resolution fullscreen modal for detailed observation.

5. ๐Ÿ—‚๏ธ Smart & Safe Library File Management

  • Tree Explorer: Displays the folder and file structure within the workspace in an elegant layout.
  • User Data Protection: Deleting a document does not delete the physical disk file; it only unregisters it from the library database (md_viewer_config.json), preventing accidental loss of research source code or documents.
  • Drag and Drop Support: Dropping markdown files (.md, .qmd, .txt) from Windows Explorer onto the app screen loads them instantly.

6. ๐Ÿš€ Modern Design & Responsive UI

  • Glassmorphism & Neon Themes: Supports smooth transitions between dark mode (default) and light mode, with an eye-friendly color palette and accent glowing effects.
  • Sliding Hidden Panels: Left explorer and right TOC (Table of Contents) panels slide cleanly to the screen edges, maximizing document writing space.
  • Synchronized Scroll: Highly synchronizes the scroll positions of the editor and preview areas to assist in reviewing long documents.

7. ๐ŸŒ Standalone HTML Export

  • Exports the editing markdown as a completely standalone HTML file for external sharing.
  • The exported file preserves KaTeX equations, Prism syntax highlighting, Mermaid diagrams, and SMILES molecular models, rendering normally in any browser with an internet connection.

8. ๐Ÿ–จ๏ธ Premium Driverless PDF Printing & Static Page Engine

  • Custom Print of Preview Screen Only: Clicking the PDF print button automatically removes unnecessary editor text areas, sidebars, headers, and other UI elements, outputting only the markdown preview output formatted cleanly for A4 size.
  • Intelligent Ink Saving & Theme Switching: Even if printing from dark mode, the document temporarily auto-renders in a white/high-contrast theme for printing to prevent wasting ink/toner, and returns to dark mode immediately after printing completes.
  • Precise A4 Margin Separation: Discarded negative margins entirely. Placed headers fixed at top: 0 and footers at bottom: 0, and dynamically calculated and applied precise safe body padding (bodyPaddingTopBottom) to ensure perfect vertical isolation with accurate static page numbers (1 / 2, 2 / 2).

9. ๐ŸŒ External Mobile Device Connection & Security Password Protection

  • Mobile and Tablet Remote Connection: Supports multi-networking so you can access the workspace from other PCs or mobile devices on the same Wi-Fi/network wirelessly.
  • Access Password Configuration: Set an access password via the Settings icon (โš™๏ธ). When configured, a sleek and secure Lock Screen is activated for external network access.

10. โ˜๏ธ One-Click Bidirectional Google Drive Sync

  • Zero-Configuration OAuth Login: Standard credentials are built directly into the compiled application. General users do not need to download or manually configure client_secrets.json files.
  • App-Specific Scope for Safety: Operates under the drive.file scope, meaning it can only see and manage files created by this application.
  • Smart Syncing & Conflict Resolution: Supports automatic background syncing on save, modification time (mtime) conflict resolution, and remote cloud library browsing to download and import notes instantly.

11. ๐Ÿ”— Bi-directional Wiki Links & Backlinks Panel

  • Zettelkasten-Style Knowledge Connection: Interconnects notes and documents to build a cohesive visual knowledge web, integrating raw daily ideas and research insights.
  • Real-time Wiki Link Widget: Typing [[WikiName]] (or [[WikiName|Alt Text]]) automatically renders a clickable, beautiful purple neon button widget inside non-active editor lines. Clicking a button opens the document instantly if it exists, or auto-creates a new markdown file under the workspace root if it does not.
  • Dual Backlinks Navigators:
    • Left Sidebar: Injects a Backlinks accordion panel below the file tree, displaying all incoming references mentioning the current note.
    • Right Preview Panel: Injects a premium card grid (.backlink-card) at the very bottom of the document preview for relational navigation.

๐Ÿ•ธ๏ธ 12. Knowledge Graph & Category-based Node Icons

  • Interactive 2D Force Graph: Renders bi-directional link relationships as a real-time 2D Force-Directed Graph, enabling dynamic exploration of your interconnected knowledge structure.
  • Category Emoji Mapping: Analyzes tag metadata, file names, and directory paths to automatically classify documents into 11 categories (Academic, Chemistry, Stock, Project, Diary, Schedule, Wiki, etc.) and paints dedicated emoji icons inside each node.
  • Glassmorphic Neon Rings: Envelops each node with a semi-transparent circular backdrop and an elegant glowing neon ring for outstanding aesthetic resolution.
  • Smart Camera Zoom Scaling: Maintains clean geometry and precise scaling ratios between node boundaries and centered emoji glyphs at any 2D canvas zoom-in/out level.

13. ๐ŸŽจ Obsidian-Compatible Infinite Canvas & Folder Embedding

  • Infinite 2D Canvas Board: Provides D3-Zoom-based panning and pinch-to-zoom controls alongside a modern 16px neon grid background.
  • Bezier Edge Connections (SVG Edge): Draw smooth bezier curves between nodes. Click edge lines (28px click detection radius) to highlight, change HSL-based colors (6 options), or delete via a floating toolbar.
  • Smart Folder Embedding Cards: Embed an entire local directory inside your canvas workspace. Supports Grid/List layout toggle, real-time file name filtering, sorting, parent-directory navigation, and instant file creation (+) directly inside the card.
  • Dedicated Card Nodes: Freely position markdown files (with cached rendering), images, or PDF preview iframe nodes. Instantly mount CodeMirror 6 in-place editor widgets to modify embedded markdown files.
  • Native Mouse Interactions: Matches standard desktop cursor styling using a default arrow (default) on the canvas board and a move cursor (move) during card dragging.
  • Canvas-specific Keyboard Shortcuts: For a full list of all major shortcuts (multi-select, grouping, duplication, formatting, etc.), please refer to the โŒจ๏ธ Keyboard Shortcuts section below.

14. ๐Ÿ“‚ Separated My Media Accordion, Custom Icons, and Binary Save Lock Protection (v3.9.27)

  • My Media Accordion Sidebar: Groups media files (images, PDFs, audio, video) out of the main "My Library" document list, allocating them under a dedicated "My Media" accordion menu. Folder structures are fully preserved across both trees.
  • Type-Specific Media Icons: Analyzes media extensions dynamically to assign corresponding Lucide icons (images: image, videos: video, audio: music) in the sidebar tree.
  • Rich Media Preview & Locked Editor Mode: Clicked media files automatically lock the text editor (opacity 0.5, pointer-events none, read-only mode) and render a custom viewer/player (image preview, PDF iframe, HTML5 video/audio player) in the right preview pane.
  • Binary Save Lock Prevention: Prevents overwriting binary files with empty or invalid text when trying to save (via Ctrl+S or the toolbar save button) during media preview, displaying an alert toast.

๐Ÿ› ๏ธ System Architecture

Joy Markdown Studio adopts a powerful hybrid architecture combining a Python desktop shell and a modern web frontend.

graph TD
    subgraph backend ["Python Backend"]
        A[jmstudio.py Main Entry] --> B[PyWebView Shell]
        A --> C[Bottle Local Server]
        A --> D[Pillow Icon Builder]
    end
    
    subgraph frontend ["UI / Front-end (Local Server & API Bridge)"]
        B <-->|JS API Bridge| E[HTML/Vanilla CSS/JS Client]
        C -->|Serves Resources & Workspace Files| E
        E --> F[Marked.js Markdown Parser]
        E --> G[Prism.js Syntax Highlighter]
        E --> H[KaTeX Math Engine]
        E --> I[SmilesDrawer Molecular Graphics]
        E --> J[Mermaid.js Diagrammer]
    end
    
    subgraph cloud ["Cloud APIs"]
        E -->|GET API Request| K[PubChem NLM REST API]
    end

๐Ÿ“‚ Project Structure

e:\jm_studio\
โ”œโ”€โ”€ jmstudio.py                  # Backward-compatible delegate main script (launches main.py)
โ”œโ”€โ”€ main.py                      # Application entry point and GUI/WebView launcher
โ”œโ”€โ”€ app_config.py                # Configuration loader/saver and global variables management
โ”œโ”€โ”€ api_bridge.py                # Secure JavaScript-to-Python PyWebView API bridge
โ”œโ”€โ”€ routes.py                    # Bottle-based local web server routing and static assets handler
โ”œโ”€โ”€ compile.bat                  # Compiler script for Windows standalone executable (.exe)
โ”œโ”€โ”€ compile.sh                   # Compiler script for macOS standalone app (.app)
โ”œโ”€โ”€ git_push.bat                 # Script to push to GitHub remote repository (jmstudio)
โ”œโ”€โ”€ .gitignore                   # Excludes build outputs, temporary cache, and config files from Git
โ”œโ”€โ”€ md_viewer_config.json        # Database storing library files, recently opened file, theme, and settings
โ”œโ”€โ”€ CHANGELOG.md                 # [NEW] English detailed release history and release notes
โ”œโ”€โ”€ CHANGELOG_kr.md              # [NEW] Korean detailed release history and release notes
โ”œโ”€โ”€ app_icon.png                 # Studio launcher logo image
โ”œโ”€โ”€ app_icon.ico                 # Multi-size system tray and frame icon generated automatically
โ”œโ”€โ”€ document.md                  # Temporary markdown storage sample
โ”œโ”€โ”€ README.md                    # English help document (this file)
โ”œโ”€โ”€ README_kr.md                 # Korean help document
โ”œโ”€โ”€ setup.py                     # Python package configuration script for PyPI uploading
โ”œโ”€โ”€ MANIFEST.in                  # Manifest file specifying static assets to include in PyPI package
โ””โ”€โ”€ frontend/                    # Frontend static web assets directory

๐Ÿ†š Why Joy Markdown Studio? (vs Obsidian)

Joy Markdown Studio (JM-STUDIO) and Obsidian are both powerful local markdown editors, but their core philosophy, target audience, and out-of-the-box features are distinctly different.

1. ๐Ÿงช Out-of-the-Box STEM Research Environment

  • Obsidian: Focuses on general personal knowledge management (PKM). To write equations or chemistry formulas, you must manually install numerous community plugins.
  • JM-STUDIO: A fully-equipped environment for mathematicians, physicists, and chemists is built-in out-of-the-box. Dedicated helper panels allow you to insert complex equations with a single click.

2. ๐Ÿงฌ Real-time PubChem Molecule Visualization

  • Obsidian: No native feature to search or render chemical molecular structures.
  • JM-STUDIO: Natively integrated with the NLM PubChem API. Search for compounds to view real-time 2D molecular structures, and automatically insert SMILES codes.

3. ๐ŸŒ Built-in Free Remote Web Access & Security

  • Obsidian: Real-time sync and remote viewing require paid services or complex third-party configurations.
  • JM-STUDIO: Automatically spins up an internal web server. Access your library wirelessly from tablets or phones, secured with a custom lock screen password.

๐Ÿ•ธ๏ธ 4. Category-based Node Icons in Knowledge Graph

  • Obsidian: Node representations in the graph view are limited to uniform circular dots. Users must hover or click each node to identify its character or category.
  • JM-STUDIO: Natively embeds intuitive emoji icons (๐Ÿ“, โš›๏ธ, ๐Ÿงช, ๐Ÿ“ˆ, ๐Ÿ—“๏ธ, etc.) inside the center of each document node, styled with glowing glassmorphic neon rings, providing unmatched visual clarity and aesthetic satisfaction during network exploration.

๐Ÿ’ก In Summary: If Obsidian is a "universal diary where you build your own notes using Lego blocks," Joy Markdown Studio is a "fully-loaded premium research studio designed so scientists and researchers can dive straight into their work and interact visually with their knowledge web with zero setup!"


๐Ÿš€ Getting Started

๐Ÿ“‹ Prerequisites

To run this application or build standalone packages, the following environment is recommended:

  • Python: Python 3.10 or higher
  • Dependency Libraries: pywebview, bottle, Pillow, pyinstaller

๐Ÿ’ป Installation & Run

Option 1: Official Installation via PyPI (Highly Recommended)

If you have a Python environment, you can install, run, upgrade, and uninstall the app with a single command.

Action Command
Install pip install joy-markdown-studio
Run jmstudio
Upgrade pip install --upgrade joy-markdown-studio
Uninstall pip uninstall joy-markdown-studio

Option 2: Using Virtual Environment (venv) (Recommended)

Using a local virtual environment prevents system environment clutter.

  1. Create and activate virtual environment:
    • Windows (PowerShell):
      python -m venv .venv
      .venv\Scripts\activate
      
  2. Install dependencies and run:
    pip install --upgrade pip
    pip install pywebview bottle Pillow pyinstaller
    python jmstudio.py
    

๐Ÿ“ฆ Distributing as Standalone Executable

You can compile Joy Markdown Studio into a standalone executable (.exe) that runs on other PCs.

๐ŸชŸ Building on Windows (.exe)

  1. Run compile script:
    • Run the compile script in your shell:
      .\compile.bat
      
    • The script packages jmstudio.py into a single EXE file inside the dist/ directory.

๐Ÿ’ก Practical Markdown Tips

๐Ÿงช 1. Drawing Chemical Formulas

Set code block language to smiles and write a SMILES molecular string:

```smiles
OC(=O)/C=C/c1ccc(O)c(O)c1

### ๐Ÿ“ 2. Entering Equations
Write block equations using `$$` or inline equations using `$`:
```markdown
Mass and energy are equivalent and represented by: $E = mc^2$

$$i\hbar\frac{\partial}{\partial t}\Psi = \hat{H}\Psi$$

โŒจ๏ธ Keyboard Shortcuts

Joy Markdown Studio provides a variety of shortcuts for fast and efficient document editing and canvas manipulation.

๐Ÿ“ Editor & General Shortcuts

  • Ctrl + N: Add a new markdown document to the library
  • Ctrl + S: Save the current document or canvas
  • Ctrl + Z: Undo the last action
  • Ctrl + Y / Ctrl + Shift + Z: Redo the last action
  • Ctrl + E: Export the current document as a standalone HTML file
  • Ctrl + P: Print the current document as PDF (clean output of preview only)
  • F11: Toggle document fullscreen mode

๐ŸŽจ Canvas Shortcuts

  • Selection & Manipulation
    • Ctrl + A: Select all elements in the canvas
    • Shift + Drag: Box selection (Marquee) to select multiple objects
    • Shift + Click: Add/remove objects to/from the current selection
    • Esc: Deselect all (exits edit mode if currently editing)
    • Arrow Keys: Nudge selected elements by 1px
    • Shift + Arrow Keys: Nudge selected elements by 10px
    • Delete or Backspace: Delete selected nodes and edges
  • Duplication & Grouping
    • Ctrl + D: Duplicate selected elements instantly with a 20px offset
    • Alt + Drag: Clone object while dragging
    • Ctrl + G: Group selected elements into a visual bounding box
    • Ctrl + Shift + G: Ungroup the selected group
  • View Controls
    • Ctrl + Mouse Wheel: Zoom in / Zoom out of the canvas
    • Ctrl + 0 or Shift + 1 / Shift + !: Fit all elements to the current view
    • Space + Drag: Pan the canvas freely
  • Text Card (Markdown) Editing
    • Enter or F2: Enter edit mode for the selected text card
    • Ctrl + Enter or Esc: Complete markdown editing and exit (save)
    • Ctrl + B: Apply Bold formatting (while editing)
    • Ctrl + I: Apply Italic formatting (while editing)
    • Ctrl + K: Insert [Link Text](URL) format (while editing)
    • Right-Click (on cards): Open the context menu for node settings and editing

โš™๏ธ Configuration

Settings are permanently preserved inside md_viewer_config.json generated in the application folder:

  • theme: dark or light
  • last_file: File path of the last working markdown document (restored automatically)
  • last_workspace: Path of the active library directory loaded on startup
  • port: Access web service port number (default: 58220)
  • bind_ip: Host binding address (0.0.0.0: allow all, 127.0.0.1: allow local only)

๐Ÿ”’ Security & Optimization

  • Security Path Checks: Strict path validation checks completely prevent Directory Traversal attacks.
  • Debounced Live Rendering: Applies a smart debounce timer to ensure a highly responsive editing experience.

Start a smart and smooth research and documentation journey with Joy Markdown Studio! ๐Ÿš€

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

joy_markdown_studio-3.9.29.tar.gz (461.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

joy_markdown_studio-3.9.29-py3-none-any.whl (441.1 kB view details)

Uploaded Python 3

File details

Details for the file joy_markdown_studio-3.9.29.tar.gz.

File metadata

  • Download URL: joy_markdown_studio-3.9.29.tar.gz
  • Upload date:
  • Size: 461.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for joy_markdown_studio-3.9.29.tar.gz
Algorithm Hash digest
SHA256 01922c711f00a20f09e66be692bd171505fbf96598e35a4db362040f1bba3ff1
MD5 c62192011a30fff76b0fdbc7063c57ff
BLAKE2b-256 d939862645e7426054a903e6d2dbd9fd0c8fdbc99e83f6afbd76cad0dada56b9

See more details on using hashes here.

File details

Details for the file joy_markdown_studio-3.9.29-py3-none-any.whl.

File metadata

File hashes

Hashes for joy_markdown_studio-3.9.29-py3-none-any.whl
Algorithm Hash digest
SHA256 45e60bced81825a6d7ea6a1cccda92e7ecd8eb73f4f6244919bc409d76f71203
MD5 bca05b293c26ed8448ff4ce7616885fa
BLAKE2b-256 1f9c7e7e67f52aefe02271718ed4356a9943341e8a1e18bf0938fce40c49ce8e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page