An AI-powered study assistant desktop application that runs locally with privacy-first design. Built with Electron, React, and TypeScript.
StudyNest offers several advantages over the standard Ollama desktop application:
Want more features? Create an issue and I'll work on implementing your requests!
# Install Node.js dependencies
pnpm install
# Install Rust toolchain
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# Verify installation
rustc --version
cargo --version
StudyNest uses local AI models. You need to download at least one model:
# Install huggingface-cli
pip install huggingface-hub
# Download Qwen 2.5 (0.5B) - Fast, lightweight
huggingface-cli download Qwen/Qwen2.5-0.5B-Instruct \
--local-dir crane-studynest/checkpoints/Qwen2.5-0.5B-Instruct
# Or download Qwen 2.5 (1.5B) - Better quality
huggingface-cli download Qwen/Qwen2.5-1.5B-Instruct \
--local-dir crane-studynest/checkpoints/Qwen2.5-1.5B-Instruct
Model Requirements:
# Install Ollama from https://ollama.ai
# Then pull a model
ollama pull phi4-mini
ollama pull tinyllama
pnpm run dev
What happens:
crane-studynest/checkpoints/On first run, you'll see:
Select a model:
Qwen 2.5 (0.5B) Instruct (988 MB)Phi4 Mini Latest, Tinyllama 1.1Bpnpm run build
Build distributable packages for your platform:
# For macOS
pnpm run package:mac
# For Windows
pnpm run package:win
# For Linux
pnpm run package:linux
# For all platforms
pnpm run package
studynest/
βββ electron/ # Electron main process
β βββ main.ts # Main process entry point
β βββ preload.ts # Preload script for IPC
βββ src/
β βββ components/ # Reusable UI components
β β βββ Button/ # Button component with variants
β β βββ Card/ # Card container component
β β βββ ChatInput/ # Message input with actions
β β βββ ChatMessage/ # Message display component
β β βββ Input/ # Form input component
β β βββ Sidebar/ # Navigation sidebar
β β βββ ThemeToggle/ # Light/dark theme switcher
β β βββ Typography/ # Text components
β βββ hooks/ # Custom React hooks
β β βββ useChat.ts # Chat state management
β β βββ useTheme.ts # Theme management
β βββ screens/ # Main application screens
β β βββ Chat/ # Chat interface screen
β β βββ Home/ # Home screen
β βββ styles/ # Global styles and tokens
β β βββ tokens.css # Design system tokens
β β βββ README.md # Design system documentation
β βββ types/ # TypeScript type definitions
β β βββ chat.ts # Chat-related types
β β βββ task.ts # Task-related types
β βββ utils/ # Utility functions
β β βββ llm.ts # LLM client for local models
β βββ App.tsx # Root component
β βββ index.tsx # React entry point
β βββ index.css # Global styles
βββ public/ # Static assets
β βββ index.html # HTML template
βββ dist/ # Build output
βββ release/ # Packaged applications
StudyNest supports two methods for running local LLMs:
StudyNest includes a built-in Rust-based service using the Crane framework for running LLM models locally without external dependencies.
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh# Install huggingface-cli
pip install huggingface-hub
# Download a model (choose one)
huggingface-cli download Qwen/Qwen2.5-0.5B-Instruct --local-dir crane-studynest/checkpoints/Qwen2.5-0.5B-Instruct
huggingface-cli download Qwen/Qwen2.5-1.5B-Instruct --local-dir crane-studynest/checkpoints/Qwen2.5-1.5B-Instruct
The Crane service is automatically built and integrated when you run:
# Development mode
pnpm run dev
# Automatically builds Rust service β starts app
# Production build
pnpm run package
# Builds Rust service β packages everything together
Build Process:
build:rust:dev script compiles the Rust service in release modedist/bin/chat-servicecargo run (slower but works)Manual Build:
# Build Rust service separately
pnpm run build:rust:dev
# Or build for production
pnpm run build:rust
Supported Models:
Performance:
--features cuda)Advantages:
You can also connect to external LLM servers:
src/hooks/useChat.tssrc/utils/llm.tsExample endpoints:
http://localhost:11434/api/generatehttp://localhost:1234/v1/chat/completions"crane-studynest directory not found"
# Make sure you're in the project root
cd /path/to/StudyNest
ls crane-studynest # Should show the directory
"cargo: command not found"
# Install Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env
"Model not found" or "Failed to initialize model"
# Verify model files exist
ls crane-studynest/checkpoints/Qwen2.5-0.5B-Instruct/
# Should show: config.json, model.safetensors, tokenizer files
# Re-download if needed
huggingface-cli download Qwen/Qwen2.5-0.5B-Instruct \
--local-dir crane-studynest/checkpoints/Qwen2.5-0.5B-Instruct
Slow inference or timeout
"Request timeout"
"Failed to fetch ollama models"
# Check if Ollama is running
ollama list
# Start Ollama service
ollama serve
StudyNest includes a comprehensive design system with:
See src/styles/README.md for detailed documentation.
Contributions are welcome! Please feel free to submit a Pull Request.
MIT
20 commits
Rust
48.6%
TypeScript
31.3%
CSS
15.2%
Python
3.4%
JavaScript
1.3%
An AI-powered study assistant desktop application that runs locally with privacy-first design. Built with Electron, React, and TypeScript.
StudyNest offers several advantages over the standard Ollama desktop application:
Want more features? Create an issue and I'll work on implementing your requests!
# Install Node.js dependencies
pnpm install
# Install Rust toolchain
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# Verify installation
rustc --version
cargo --version
StudyNest uses local AI models. You need to download at least one model:
# Install huggingface-cli
pip install huggingface-hub
# Download Qwen 2.5 (0.5B) - Fast, lightweight
huggingface-cli download Qwen/Qwen2.5-0.5B-Instruct \
--local-dir crane-studynest/checkpoints/Qwen2.5-0.5B-Instruct
# Or download Qwen 2.5 (1.5B) - Better quality
huggingface-cli download Qwen/Qwen2.5-1.5B-Instruct \
--local-dir crane-studynest/checkpoints/Qwen2.5-1.5B-Instruct
Model Requirements:
# Install Ollama from https://ollama.ai
# Then pull a model
ollama pull phi4-mini
ollama pull tinyllama
pnpm run dev
What happens:
crane-studynest/checkpoints/On first run, you'll see:
Select a model:
Qwen 2.5 (0.5B) Instruct (988 MB)Phi4 Mini Latest, Tinyllama 1.1Bpnpm run build
Build distributable packages for your platform:
# For macOS
pnpm run package:mac
# For Windows
pnpm run package:win
# For Linux
pnpm run package:linux
# For all platforms
pnpm run package
studynest/
βββ electron/ # Electron main process
β βββ main.ts # Main process entry point
β βββ preload.ts # Preload script for IPC
βββ src/
β βββ components/ # Reusable UI components
β β βββ Button/ # Button component with variants
β β βββ Card/ # Card container component
β β βββ ChatInput/ # Message input with actions
β β βββ ChatMessage/ # Message display component
β β βββ Input/ # Form input component
β β βββ Sidebar/ # Navigation sidebar
β β βββ ThemeToggle/ # Light/dark theme switcher
β β βββ Typography/ # Text components
β βββ hooks/ # Custom React hooks
β β βββ useChat.ts # Chat state management
β β βββ useTheme.ts # Theme management
β βββ screens/ # Main application screens
β β βββ Chat/ # Chat interface screen
β β βββ Home/ # Home screen
β βββ styles/ # Global styles and tokens
β β βββ tokens.css # Design system tokens
β β βββ README.md # Design system documentation
β βββ types/ # TypeScript type definitions
β β βββ chat.ts # Chat-related types
β β βββ task.ts # Task-related types
β βββ utils/ # Utility functions
β β βββ llm.ts # LLM client for local models
β βββ App.tsx # Root component
β βββ index.tsx # React entry point
β βββ index.css # Global styles
βββ public/ # Static assets
β βββ index.html # HTML template
βββ dist/ # Build output
βββ release/ # Packaged applications
StudyNest supports two methods for running local LLMs:
StudyNest includes a built-in Rust-based service using the Crane framework for running LLM models locally without external dependencies.
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh# Install huggingface-cli
pip install huggingface-hub
# Download a model (choose one)
huggingface-cli download Qwen/Qwen2.5-0.5B-Instruct --local-dir crane-studynest/checkpoints/Qwen2.5-0.5B-Instruct
huggingface-cli download Qwen/Qwen2.5-1.5B-Instruct --local-dir crane-studynest/checkpoints/Qwen2.5-1.5B-Instruct
The Crane service is automatically built and integrated when you run:
# Development mode
pnpm run dev
# Automatically builds Rust service β starts app
# Production build
pnpm run package
# Builds Rust service β packages everything together
Build Process:
build:rust:dev script compiles the Rust service in release modedist/bin/chat-servicecargo run (slower but works)Manual Build:
# Build Rust service separately
pnpm run build:rust:dev
# Or build for production
pnpm run build:rust
Supported Models:
Performance:
--features cuda)Advantages:
You can also connect to external LLM servers:
src/hooks/useChat.tssrc/utils/llm.tsExample endpoints:
http://localhost:11434/api/generatehttp://localhost:1234/v1/chat/completions"crane-studynest directory not found"
# Make sure you're in the project root
cd /path/to/StudyNest
ls crane-studynest # Should show the directory
"cargo: command not found"
# Install Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env
"Model not found" or "Failed to initialize model"
# Verify model files exist
ls crane-studynest/checkpoints/Qwen2.5-0.5B-Instruct/
# Should show: config.json, model.safetensors, tokenizer files
# Re-download if needed
huggingface-cli download Qwen/Qwen2.5-0.5B-Instruct \
--local-dir crane-studynest/checkpoints/Qwen2.5-0.5B-Instruct
Slow inference or timeout
"Request timeout"
"Failed to fetch ollama models"
# Check if Ollama is running
ollama list
# Start Ollama service
ollama serve
StudyNest includes a comprehensive design system with:
See src/styles/README.md for detailed documentation.
Contributions are welcome! Please feel free to submit a Pull Request.
MIT
20 commits
Rust
48.6%
TypeScript
31.3%
CSS
15.2%
Python
3.4%
JavaScript
1.3%