Snowflake Architecture
System Landscape
Component Description
Frontend Layer
- Vue 3 + TypeScript: Main framework for user interface development
- Vue Router: Application routing
- Pinia Store: Application state management
- Vue I18n: Internationalization
- Naive UI: UI component library
Core Modules
- Project Module: Project and configuration management
- Book Module: Book and series management
- Projection Module: Book planning and structuring
- Lore Module: World and character management
- Export Module: Export to various formats
- Storage Module: Data storage management
Backend Layer
- Tauri Runtime: Desktop environment
- Rust Backend: Native operations and business logic
- File System: File system operations
Data Storage
- Markdown Files: Text content storage
- JSON Files: Structured data storage
- Media Files: Image and media storage
- SNFLK Archives: Project archives
Export Formats
- DOCX: Export to Microsoft Word format
- PDF: Export to PDF format
- HTML: Export to static web pages
Component Interaction
- Frontend interacts with Core Modules through Pinia Store
- Core Modules communicate with Backend Layer via Tauri API
- Backend Layer manages data through File System
- Export Module generates various document formats
- Storage Module manages all types of stored data
Architecture Features
- Modular structure for easy expansion
- Clear separation of responsibilities between layers
- Use of native capabilities through Rust
- Flexible data storage system
- Support for various export formats
Technical Implementation Details
- Use of project folder
- Data storage in .md and .json files + media files (images .jpg, .png)
- Use of folder structure for data organization
- Generation of zip folder in .snflk format (for project copy storage)
- Project import from .snflk
- Project export in different views and formats:
- Book in docx, pdf
- World lore in static html + media assets
- Materials for publishers in docx
- Special book markup in docx format for editor/proofreader with text back-sync capability
Quality Criteria
Performance
- Response time <200ms
- Optimal memory usage
- Stable operation under maximum load
Reliability
- Auto-save every 5 minutes
- Recovery after failures
- Data backup
Security
- Sensitive data encryption
- Protection against injections
- Secure data storage
Usability
- Intuitive interface
- Presence of hints
- Keyboard navigation support