2.9 KiB
2.9 KiB
AGENTS.md
Quick Reference Card for Sarthi Lab development
What Is This?
Sarthi Lab - Desktop application for computer labs in schools. Students use this offline-capable Electron app to access interactive science experiments and exercises.
Built with Electron + React + Vite.
Project Structure
/sarthi_lab/
├── src/
│ ├── components/ # React components
│ ├── screens/ # Screen components (Login, Dashboard, Exercise, etc.)
│ ├── hooks/ # Custom React hooks
│ ├── services/ # API services (labApi.js)
│ ├── store/ # Zustand state management
│ └── App.jsx # Main app component
├── electron/
│ └── main.js # Electron main process
├── dist/ # Production build
├── dist-electron/ # Electron production build
└── package.json
Tech Stack
| Component | Technology |
|---|---|
| Framework | Electron 33+ |
| Frontend | React 19, Vite 6 |
| Styling | Tailwind CSS |
| State | Zustand |
| Build | electron-builder |
Development
cd sarthi_lab
# Install dependencies
npm install
# Start development (runs both Vite + Electron)
npm run dev
App runs at http://localhost:5174 in development.
Key Features
- Server Connection - Connect to backend via URL + room token
- Student Authentication - Students log in with room token + credentials
- Exercise Library - Browse and launch interactive science experiments
- Voice Integration - TTS/STT via desktop backend
- Heartbeat - Periodic ping to server to track active students
API Integration
Sarthi Lab connects to the Django backend (/server):
| Endpoint | Purpose |
|---|---|
/api/dashboard/student/room/join/ |
Join a room with token |
/api/dashboard/student/dashboard/ |
Get student profile & courses |
/api/exercises |
List available exercises |
/api/exercises/{id}/access-url |
Get secure exercise URL with token |
/api/dashboard/student/heartbeat/ |
Send periodic heartbeat |
Exercise Loading Flow
- Student clicks exercise → calls
/api/exercises/{id}/access-url - Backend returns URL with token:
/api/exercises/{id}/latest/index.html?t=<token> - App loads URL in iframe
- Backend validates token before serving content
Build Commands
# Development
npm run dev
# Build for production (creates .app for macOS)
npm run build
# Preview production build
npm run preview
Known Issues / Notes
- Exercise iframes require valid access token - check
ExerciseScreen.jsx - CSP on server must allow
localhost:5174andsarthi.eduspheria.com - Uses Electron IPC for desktop features (TTS, file system)
- Stores config in Electron store (server URL, room token)
For root AGENTS.md with company context, see /AGENTS.md