Aromatic is a desktop-focused molecular analysis workbench built with Tauri, React, TypeScript, and RDKit.js. It turns SMILES strings into rich molecular representations, descriptors, and identifiers while keeping the workflow fast and offline-friendly. The app targets keyboard-and-mouse desktop workflows exclusively.
- Single-molecule tools for SMILES validation, SVG rendering, descriptor calculation, identifier export, and SMARTS substructure highlighting
- Batch processor that ingests newline-delimited SMILES, renders SVG grids, reports per-molecule errors, and exports JSON summaries
- Desktop settings panel backed by the Rust command API for theme selection and batch-processing limits with guardrails from shared constants
- Lightweight RDKit.js integration with automatic post-install asset sync (
scripts/setup-rdkit.js)
src/– React frontend (routes, RDKit hooks, shadcn/ui components, Tailwind 4 styling)src-tauri/– Rust backend exposing config commands (load_config,save_config,get_config_constants)public/– Static assets, including the RDKit WASM bundle copied duringyarn installscripts/– Utility scripts such as the RDKit asset bootstrapper
- Node.js 20+
- Yarn
- Rust toolchain with
cargo(stable) and the system dependencies listed in the Tauri setup guide
- Install dependencies:
The post-install script copies the required RDKit WASM/JS files into
yarn install
public/. - Start the desktop app:
yarn tauri dev
- (Optional) Run the Vite dev server without the Tauri shell:
yarn dev
Documentation that dives deeper into configuration, RDKit integration, and architectural decisions lives in docs/ (see docs/rdkit-setup.md, docs/config-implementation.md, and the docs/specs/ directory).
- Bundle the React frontend only:
yarn build
- Produce a distributable desktop build:
yarn tauri build
- Runtime configuration lives in
~/.config/aromatic/config.json(Linux) and is managed through the Settings view. - Validation limits and defaults originate from the Rust backend (
src-tauri/src/config.rs) and are surfaced to the UI throughget_config_constants. - Batch processing defaults (max molecules, SVG dimensions) can be adjusted in-app; limits are enforced on both the frontend hooks and backend.
See CONTRIBUTING.md for development workflow, coding style, and pull request guidelines.
This project is licensed under the MIT License.