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 |