Developer Guide Introduction
Comprehensive guide for developers working on DesQTA
Welcome to DesQTA Development
This developer guide provides comprehensive documentation for contributing to DesQTA, understanding its architecture, and extending its functionality. Whether you're fixing bugs, adding features, or building plugins, this guide will help you understand how DesQTA works under the hood.
What is DesQTA?
DesQTA is a modern desktop application built with:
- Frontend: SvelteKit 5 with TypeScript
- Backend: Rust with Tauri v2
- Styling: TailwindCSS with custom theme system
- Desktop Framework: Tauri for native desktop integration
Architecture Overview
DesQTA follows a layered architecture:
Technology Stack
Frontend Technologies
- SvelteKit 5: Modern web framework with file-based routing
- TypeScript: Type-safe JavaScript
- TailwindCSS 4: Utility-first CSS framework
- Svelte Runes: Reactive state management ($state, $derived, $effect)
- Heroicons: Icon library via svelte-hero-icons
- TipTap: Rich text editor for content editing
- Schedule-X: Calendar/timetable component
- D3: Data visualization for charts
Backend Technologies
- Rust: Systems programming language
- Tauri v2: Desktop application framework
- reqwest: HTTP client for API calls
- serde: Serialization framework
- tokio: Async runtime
Development Tools
- Vite: Build tool and dev server
- pnpm: Package manager
- ESLint: Code linting
- Prettier: Code formatting
- TypeScript: Type checking
Project Structure
Key Concepts
Frontend-Backend Communication
DesQTA uses Tauri's command system for frontend-backend communication:
Frontend (TypeScript):
Backend (Rust):
State Management
DesQTA uses Svelte 5 runes for reactive state:
- $state: Mutable reactive state
- $derived: Computed values
- $effect: Side effects
- Stores: Global state management
Routing
SvelteKit's file-based routing:
+page.svelte: Page component+layout.svelte: Layout wrapper+page.ts: Page data loader[id]: Dynamic route parameters
Development Workflow
Getting Started
- Clone Repository
- Install Dependencies
- Run Development Server
Development Commands
npm run start: Install dependencies and start dev servernpm run dev: Start Vite dev server (frontend only)npm run tauri dev: Start Tauri dev server (full app)npm run build: Build for productionnpm run tauri build: Build desktop appnpm run check: TypeScript type checkingnpm run format: Format code with Prettier
Code Style
TypeScript
- Use TypeScript for all new code
- Define interfaces for data structures
- Use type inference where appropriate
- Avoid
anytype
Svelte Components
- Use Svelte 5 runes syntax
- Keep components focused and reusable
- Use TypeScript for component props
- Follow naming conventions (PascalCase)
Rust
- Follow Rust naming conventions (snake_case)
- Use
Result<T, E>for error handling - Document public functions
- Use
#[tauri::command]for exposed functions
Testing
Frontend Testing
- Component testing with Vitest
- E2E testing with Playwright (planned)
- Manual testing checklist
Backend Testing
- Unit tests in Rust
- Integration tests for Tauri commands
- API mocking for development
Contributing
Before You Start
- Check existing issues and PRs
- Discuss major changes in issues first
- Follow the code style guide
- Write tests for new features
Pull Request Process
- Fork the repository
- Create a feature branch
- Make your changes
- Write/update tests
- Update documentation
- Submit PR with description
Documentation
- User Guide: How to use DesQTA
- Developer Guide: This guide
- API Reference: Tauri commands and services
- Architecture Docs: System design and patterns
Getting Help
- GitHub Issues: Report bugs and request features
- Discord: Join the community Discord
- Documentation: Read the docs
- Code Comments: Check inline documentation
Next Steps
Continue reading to learn about:
- Development Setup - Detailed setup instructions
- Architecture Deep Dive - System architecture
- Frontend Development - SvelteKit and components
- Backend Development - Rust and Tauri
- Adding Features - How to add new features