Initial commit: Sarthi Lab desktop application
This commit is contained in:
133
README.md
Normal file
133
README.md
Normal file
@@ -0,0 +1,133 @@
|
||||
# Sarthi Lab Desktop
|
||||
|
||||
AI learning desktop application for school computer labs.
|
||||
|
||||
## Quick Start
|
||||
|
||||
### 1. Clone & Install
|
||||
```bash
|
||||
git clone https://github.com/Eduspheria/sarthi_lab.git
|
||||
cd sarthi_lab
|
||||
npm install
|
||||
```
|
||||
|
||||
### 2. Run Locally
|
||||
```bash
|
||||
npm run dev
|
||||
```
|
||||
|
||||
Electron app will open at `http://localhost:5174`. Exercises load correctly in dev mode.
|
||||
|
||||
---
|
||||
|
||||
## Global Command Setup (Run from Anywhere)
|
||||
|
||||
Set up a global `sarthi-lab` command that works from any terminal directory.
|
||||
|
||||
### macOS / Linux
|
||||
|
||||
#### Symlink Setup
|
||||
```bash
|
||||
# Make script executable
|
||||
chmod +x launch.sh
|
||||
|
||||
# Create global symlink (requires sudo)
|
||||
sudo ln -s "$(pwd)/launch.sh" /usr/local/bin/sarthi-lab
|
||||
```
|
||||
|
||||
If `/usr/local/bin` isn't in PATH, add it:
|
||||
```bash
|
||||
echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.bashrc # or ~/.zshrc
|
||||
source ~/.bashrc
|
||||
```
|
||||
|
||||
|
||||
|
||||
### Windows
|
||||
|
||||
#### Add to PATH
|
||||
1. **Copy** `launch.bat` to a directory already in PATH:
|
||||
- `C:\Windows\System32`
|
||||
- `C:\Program Files\Git\usr\bin` (if Git installed)
|
||||
|
||||
2. **OR add repo to PATH:**
|
||||
- Open **System Properties** → **Environment Variables**
|
||||
- Edit **User variables** → **PATH**
|
||||
- Add `C:\path\to\sarthi_lab`
|
||||
- Restart terminal
|
||||
|
||||
|
||||
|
||||
---
|
||||
|
||||
## Usage
|
||||
|
||||
### Basic Launch
|
||||
```bash
|
||||
sarthi-lab
|
||||
```
|
||||
Starts the Electron dev app (`npm run dev`).
|
||||
|
||||
### Upgrade Command
|
||||
```bash
|
||||
sarthi-lab upgrade
|
||||
```
|
||||
Pulls latest git changes and updates npm dependencies.
|
||||
|
||||
### Command Reference
|
||||
- `sarthi-lab` – Start Sarthi Lab (default)
|
||||
- `sarthi-lab upgrade` – Pull latest changes and update dependencies
|
||||
- `sarthi-lab --help` or `-h` – Show help
|
||||
- `sarthi-lab --version` or `-v` – Show version
|
||||
|
||||
---
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
| Issue | Solution |
|
||||
|-------|----------|
|
||||
| `sudo: command not found` (mac/Linux) | Use `~/bin`: `ln -s "$(pwd)/launch.sh" ~/bin/sarthi-lab` |
|
||||
| Permission denied (symlink) | Ensure `/usr/local/bin` exists and is writable |
|
||||
| Windows PATH not working | Use full path: `C:\path\to\sarthi_lab\launch.bat` |
|
||||
| `npm run dev` fails | Check Node.js ≥18, run `npm install` |
|
||||
| Exercises not loading | Ensure you're using dev mode (`npm run dev`); packaged DMG may have issues |
|
||||
|
||||
---
|
||||
|
||||
## Development
|
||||
|
||||
### Scripts
|
||||
- `npm run dev` – Start dev server + Electron
|
||||
- `npm run build` – Build for production
|
||||
- `npm run build:mac` – Build macOS DMG
|
||||
- `npm run build:win` – Build Windows installer
|
||||
- `npm run build:linux` – Build Linux AppImage
|
||||
|
||||
### Project Structure
|
||||
```
|
||||
sarthi_lab/
|
||||
├── src/ # React frontend
|
||||
├── electron/ # Electron main process
|
||||
├── dist/ # Production build
|
||||
└── dist-electron/ # Packaged apps
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Backend Connection
|
||||
|
||||
Sarthi Lab connects to a Django backend (cloud or local):
|
||||
- Default: `https://sarthi.eduspheria.com`
|
||||
- Change via Settings screen in app
|
||||
|
||||
---
|
||||
|
||||
## Notes
|
||||
|
||||
- **Packaged App Limitation**: Packaged DMG (`file://` origin) may have loading issues. Use `npm run dev` (this launcher) for school deployments.
|
||||
- **Offline Features**: Desktop TTS/STT via Piper/whisper binaries (macOS only in current build).
|
||||
- **Updates**: Use `sarthi-lab upgrade` to pull latest code.
|
||||
|
||||
---
|
||||
|
||||
**Eduspheria** · [eduspheria.com](https://eduspheria.com) · Contact: eduspheria@gmail.com
|
||||
Reference in New Issue
Block a user