Project Structure

Quick reference for navigating the DragonFly repository.


Root

File / Folder Purpose
index.html Vite entry point — loads src/main.tsx
package.json npm scripts + frontend dependencies
vite.config.ts Vite config (@/ alias → src/, dev port)
tsconfig.json TypeScript config for the frontend
tsconfig.node.json TypeScript config for Vite itself
README.md Project overview, badges, quick start
LICENSE Project license
CHANGELOG.md Release history
CONTRIBUTING.md How to contribute, dev setup, branching
SECURITY.md Responsible disclosure policy
THIRD_PARTY_LICENSES Licenses of all dependencies
mkdocs.yml ReadTheDocs / MkDocs configuration

src/

React + TypeScript frontend. Compiled by Vite — no Rust/Tauri code here.

Folder Purpose
components/ Page components, Settings tabs (settings/), Shadcn UI primitives (ui/)
editor/ BlockNote extensions: Mermaid diagrams, Scratchpad blocks
i18n/ Translation JSON files (7 languages) + i18next setup
lib/ Shared utilities, constants, content helpers
services/ Business logic: DB access, sync, voice, AI, backup, crypto
stores/ Zustand state stores (tasks, notes, projects, reminders, …)
styles/ Global custom CSS
types/ Shared TypeScript type definitions
App.tsx Root component: routing, auth gate, layout
main.tsx Vite entry point

src-tauri/

Rust + Tauri backend. Handles native OS access — called from the frontend via invoke().

Path Purpose
src/lib.rs Plugin setup, command registration, app bootstrap
src/main.rs Entry point (one line — calls lib.rs)
src/commands/backup.rs ZIP backup: create, list, delete
src/commands/notifications.rs System notifications + SMTP email
src/commands/voice.rs Whisper.cpp: load model, transcribe audio
capabilities/default.json Tauri v2 permission declarations
icons/ App icons (32–256px + .ico)
tauri.conf.json Main Tauri configuration
tauri.dev.conf.json Dev override (identifier: dragonfly-dev)
build.rs Tauri build script (one line)
gen/ Auto-generated by Tauri — do not edit

public/

Static assets served by Vite — referenced as /path in the frontend.

File / Folder Purpose
favicon.ico / favicon.svg Browser tab icon
images/ App SVG logos and icons
fonts/ Self-hosted Geist font (woff2)
screenshots/ GIF screenshots for README

docs/

MkDocs documentation source — rendered at the project website. Start locally with .\scripts\docs.ps1.


.github/

GitHub-specific configuration — not shipped in the app.

File / Folder Purpose
dependabot.yml Weekly dependency updates for npm + cargo, monthly for Actions
ISSUE_TEMPLATE/bug_report.yml Structured bug report form
ISSUE_TEMPLATE/feature_request.yml Feature request form with area dropdown
ISSUE_TEMPLATE/config.yml Disables blank issues; routes security reports to GitHub Advisories
PULL_REQUEST_TEMPLATE.md PR checklist (build, types, i18n, Tauri registration)
workflows/ci.yml CI on PRs: TypeScript type-check + build, Rust check + clippy
workflows/release.yml On merged PR: bump patch version, build Windows + Linux, publish GitHub Release

scripts/

One-click developer scripts. Handle all dependency checks + installation automatically.

File Purpose
setup.ps1 Windows: one-time install of all dependencies (Node, Rust, CMake, LLVM, VS BuildTools)
dev.ps1 Windows: check deps, configure bindgen env, start app with hot reload
dev.sh Linux/macOS: install deps + start app with hot reload
build.ps1 Windows: check deps, configure bindgen env, build release MSI
build.sh Linux: build release .deb / .AppImage
docs.ps1 Windows: create venv, install mkdocs-material, start docs server
docs.sh Linux/macOS: create venv, install mkdocs-material, start docs server