Skip to main content

Full Technology Stack Reference

Core (Frontend)

DependencyRole
React 19UI framework
TypeScript (strict)Type safety
Vite + @vitejs/plugin-react-swcDev server, HMR, bundling
react-router-dom (React Router v6 API, v7 package)Client-side routing

UI & Styling

DependencyRole
Tailwind CSS v4 (@tailwindcss/vite, @tailwindcss/typography)Utility-first styling
shadcn/ui (Radix UI primitives: @radix-ui/react-*)Accessible component primitives
Framer MotionAnimations/transitions
Lucide ReactIcon set
RechartsDashboard charts (band score trends)
class-variance-authority, clsx, tailwind-mergeClass-name/variant composition
sonner, toast componentsToast notifications
cmdk, vaul, embla-carousel-react, react-day-picker, react-resizable-panels, input-otpAssorted shadcn/ui-adjacent interaction primitives

State & Data

DependencyRole
React ContextTheme provider (ThemeContext); no global app-state library is used (no Zustand/Redux)
@tanstack/react-queryAsync/server state caching for Tauri command results
@tauri-apps/apiTauri IPC bindings (invoke, convertFileSrc, events)

Forms & Validation

DependencyRole
react-hook-formForm state management
zod + @hookform/resolversSchema validation

Backend (Rust, src/core/Cargo.toml)

CrateVersion (as pinned)Role
tauri2.11.5 (protocol-asset, devtools features)Desktop runtime + IPC
serde / serde_json1.0Serialization for IPC payloads
sqlx0.9.0 (sqlite, runtime-tokio, macros, migrate)Async, compile-time-checked SQLite access
tokio1.53.1 (full)Async runtime
thiserror2.0.20AppError enum derivation
reqwest0.13.4 (json, rustls, no default features)HTTP client for the AI grading gateway call
zip8.6.0 (deflate, no default features)ZIP archive creation for test export
tauri-plugin-dialog2.7.2Native Save-As file dialog for export
uuid (v4)1.xGenerating ids (e.g. uploaded file names)
chrono (serde)0.4.45Timestamps

Dev-only crates: mockall, rstest, pretty_assertions, assert_matches (test assertions — see Writing New Tests).

Language composition

Per the repository's actual composition, this codebase is roughly TypeScript ~69%, Rust ~31%, reflecting a substantial, fully-typed frontend paired with a focused Rust backend that stays intentionally thin (commands delegate to repositories; no business-logic-heavy web framework).