Home
Softono
StudyCraft

StudyCraft

Open source Apache-2.0 Svelte
248
Stars
14
Forks
6
Issues
2
Watchers
5 months
Last Commit

About StudyCraft

# StudyCraft <div align="center"> <img width="170" height="170" alt="icon" src="https://github.com/user-attachments/assets/ac0b58ef-2855-44cc-a6f2-7dde8b7985b5" /> 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](https://rust-lang.org/) and [Svelte](https://svelte.dev/) via the [Tauri](https://v2.tauri.app) framework. [![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](LICENSE) [![Tauri](https://img.shields.io/badge/Tauri-2.0-blue.svg)](https://v2.tauri.app/) [![Svelte](https://img.shields.io/badge/Svelte-5-orange.svg)](https://svelte.dev/) </div> ## Table of Contents - [Features](#features) - [Screenshots](#screenshots) - [Installation](#installation) - [Using an installer](#using-an-installer) - [Building from source](#building-from-source) ...

Platforms

Web Self-hosted

Languages

Svelte

StudyCraft

icon

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.

License Tauri Svelte

Table of Contents

Features

  • Study Materials

    • Import PDFs, Markdown or TXT files, as well as Websites or Github repos.
    • Automatic conversion and markdown editing.
    • All materials are automatically indexed in a vector database for semantic search.
  • Review Materials

    • Create flashcard decks and tests manually or auto-generate from study materials
    • Use of an Anki-styled space repetition
  • AI Integrations

    • Choose from OpenAI, Google, Anthropic, Mistral, or Ollama. Use multiple LLM providers simultaneously for faster generation.
    • Generate Review Materials automatically from your Study Materials
    • Ask questions about any of your study materials and get in-depth explanations on any topic
  • Progress Tracking

    • Visualize your study sessions with charts.
    • Track your learning journey over time. Monitor your progress and improvement
  • Customization

    • Deep configuration for spaced repetition and AI settings.

Screenshots

img1 img2 img3 img4

Installation

Using an installer

You can download an installer in the Releases page. StudyCraft is available on Windows, MacOS and Linux.

Building from source

Requirements:

  • Node.js (v18 or higher)
  • Rust (latest stable version)
  • npm or pnpm
  • Python 3.10
  1. Clone the repository

    git clone https://github.com/rodmarkun/StudyCraft
    cd StudyCraft
  2. Install dependencies

    npm install
  3. Set up Python environment

     pip install pyinstaller pymupdf4llm pillow
  4. 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 ..
  1. Run in development mode

    npm run tauri dev
  2. Build for production

    npm run tauri build

Transfering/Deleting your Data

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:

  • Windows: \C:\Users{USER}\AppData\StudyCraft
  • macOS: ~/Library/Application Support/StudyCraft
  • Linux: ~/.local/share/StudyCraft

Project Structure

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

License

This project is licensed under the Apache License 2.0 - see the LICENSE file for details.

Contributing

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.

Supporting StudyCraft

If you want to support StudyCraft, you can:

  • Star :star: the project in Github!
  • Donate :coin: to my Ko-fi page!
  • Share :heart: the project with your friends!

Made with ❤️ by @rodmarkun