StudyCraft is a multi-platform desktop application that lets you create study materials from a wide range of sources, edit them as you wish, generate flashcard decks and tests either manually or automatically via LLMs, track your study sessions and customize everything. Built with Rust and Svelte via the Tauri framework.
Study Materials
Review Materials
AI Integrations
Progress Tracking
Customization
You can download an installer in the Releases page. StudyCraft is available on Windows, MacOS and Linux.
Requirements:
Clone the repository
git clone https://github.com/rodmarkun/StudyCraft
cd StudyCraft
Install dependencies
npm install
Set up Python environment
pip install pyinstaller pymupdf4llm pillow
Embed Python binaries
You need to build the Python executables that will be bundled with the app.
On Linux:
cd src-tauri
mkdir -p dist
# Build conversor
pyinstaller conversor.spec --distpath pyinstaller_dist
mv pyinstaller_dist/conversor dist/conversor-x86_64-unknown-linux-gnu
chmod +x dist/conversor-x86_64-unknown-linux-gnu
# Build cover-extractor
pyinstaller cover-extractor.spec --distpath pyinstaller_dist
mv pyinstaller_dist/cover-extractor dist/cover-extractor-x86_64-unknown-linux-gnu
chmod +x dist/cover-extractor-x86_64-unknown-linux-gnu
cd ..
On MacOS (Apple Silicon)
cd src-tauri
mkdir -p dist
# Build conversor
pyinstaller conversor.spec --distpath pyinstaller_dist
mv pyinstaller_dist/conversor dist/conversor-aarch64-apple-darwin
chmod +x dist/conversor-aarch64-apple-darwin
# Build cover-extractor
pyinstaller cover-extractor.spec --distpath pyinstaller_dist
mv pyinstaller_dist/cover-extractor dist/cover-extractor-aarch64-apple-darwin
chmod +x dist/cover-extractor-aarch64-apple-darwin
cd ..
On Windows (CMD)
cd src-tauri
mkdir dist
rem Build conversor
pyinstaller conversor.spec --distpath pyinstaller_dist
move /Y pyinstaller_dist\conversor.exe dist\conversor-x86_64-pc-windows-msvc.exe
rem Build cover-extractor
pyinstaller cover-extractor.spec --distpath pyinstaller_dist
move /Y pyinstaller_dist\cover-extractor.exe dist\cover-extractor-x86_64-pc-windows-msvc.exe
cd ..
Run in development mode
npm run tauri dev
Build for production
npm run tauri build
All of your data is stored locally. The only thing that travels through the internet are chunks of the documents you choose to generate review materials from via LLMs. You can access your data in the following directory, depending on your OS:
studycraft-v2/
├── src/ # Frontend (Svelte)
│ ├── lib/
│ │ ├── components/
│ │ │ ├── Layout/ # App layout components
│ │ │ ├── ReviewMaterial/ # Flashcards & tests
│ │ │ ├── Settings/ # Configuration UI
│ │ │ ├── Shared/ # Reusable components
│ │ │ ├── Stats/ # Statistics & charts
│ │ │ └── StudyMaterials/ # Material management
│ │ ├── logic/ # Business logic
│ │ ├── stores/ # Svelte stores (state)
│ │ └── styles/ # Global styles
│ └── App.svelte # Root component
│
├── src-tauri/ # Backend (Rust)
│ ├── src/
│ │ ├── commands/ # Tauri commands (frontend API)
│ │ │ ├── api.rs # API-related commands
│ │ │ ├── llm.rs # LLM integration commands
│ │ │ ├── materials/ # Material management commands
│ │ │ ├── settings.rs # Settings commands
│ │ │ ├── structure/ # Structure/organization commands
│ │ │ ├── tags.rs # Tagging system commands
│ │ │ └── vector.rs # Vector/embedding commands
│ │ │
│ │ ├── materials/ # Material domain models
│ │ │
│ │ ├── services/ # Business logic services
│ │ │ ├── db_service/ # Database operations
│ │ │ ├── file_service/ # File conversion operations
│ │ │ ├── llm_service/ # LLM provider integration
│ │ │ ├── url_service/ # URL/web content handling
│ │ │ └── vector_service/ # Vector embeddings & search
│ │ │
│ │ ├── config/ # Configuration management
│ │ │ ├── api_config.rs # API configuration
│ │ │ ├── app_settings.rs # App settings
│ │ │ ├── keystore.rs # Secure key storage
│ │ │ └── paths.rs # Path management
│ │ │
│ │ ├── constants.rs # App constants
│ │ ├── errors.rs # Error types & handling
│ │ ├── state.rs # App state management
│ │ ├── utils.rs # Utility functions
│ │ └── main.rs # Entry point
│ │
│ └── tauri.conf.json # Tauri configuration
│
└── public/ # Static assets
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
Contributions are always welcome! If you're interested in contributing to StudyCraft, please fork the repository and create a new branch for your changes. When you're done with your changes, submit a pull request to merge your changes into the main branch.
If you want to support StudyCraft, you can:
Made with ❤️ by @rodmarkun