Offline-first AI tutor app for Class 9 students, built with Expo React Native + a local-first AI/backend pipeline.
app/: Expo Router screens and navigation (index,setup-choice,model-manager, and tab routes)src/features/: feature modules (ai,chat,content,progress,user,auth,onboarding)src/core/: core services including sync and database initializationsrc/shared/: shared theme/design utilitiesbackend/: Express API for tutor, OCR, translation, and dashboard statsandroid/,ios/: native mobile projectsdocs/: current developer documentation
- AI Tutor chat with Ollama-powered responses
- OCR pipeline for image-to-text extraction (English + Hindi trained data)
- Document post-processing (
correct,summarize,qa,extracttasks) - Translation support with NLLB microservice + cloud fallback
- Notes, flashcards, quiz, progress, profile/account screens
- Local-first persistence and sync hooks
- Frontend: React Native 0.81 + Expo SDK 54 + Expo Router + TypeScript
- Storage: Expo SQLite + AsyncStorage
- Backend: Node.js + Express + Axios + Tesseract.js
- AI runtime: Ollama (default model:
hf.co/Qwen/Qwen2.5-1.5B-Instruct-GGUF:Q4_K_M)
npm install
cd backend && npm install
cd ..Create .env in the project root:
EXPO_PUBLIC_API_URL=http://10.0.2.2:3000Recommended backend .env (inside backend/):
PORT=3000
OLLAMA_HOST=http://localhost:11434
OLLAMA_MODEL=hf.co/Qwen/Qwen2.5-1.5B-Instruct-GGUF:Q4_K_M
TRANSLATOR_SERVICE_URL=http://localhost:3001For physical devices, replace 10.0.2.2 with your machine LAN IP (example: http://192.168.1.25:3000).
ollama pull hf.co/Qwen/Qwen2.5-1.5B-Instruct-GGUF:Q4_K_M
ollama servenpm run backendnpm startExpo shortcuts in terminal: a (Android), i (iOS), w (web).
Root:
npm start: start Expo dev servernpm run android: run Android buildnpm run ios: run iOS buildnpm run web: run web buildnpm run export-web: export web artifactsnpm run backend: start backend (backend/server.js)
Backend (backend/package.json):
npm start: start Express servernpm run dev: start with nodemon
GET /: health checkGET /dashboard/:userId: dashboard/progress statsPOST /tutor: tutor responses from OllamaPOST /process-document: OCR/document enhancement tasksPOST /translate: translation endpointPOST /ocr: OCR extraction from base64 image
Shiksha-AI/
├── app/ # Route screens (tabs + setup/model management)
├── src/
│ ├── features/ # Feature modules and domain logic
│ ├── core/ # Core infrastructure (db/sync)
│ └── shared/ # Theme + shared styles/utils
├── backend/ # Express backend + OCR/translation services
│ ├── db/ # Database services and stats
│ └── *.traineddata # OCR language files
├── android/ # Android native project
├── ios/ # iOS native project
├── assets/ # Static assets
├── scripts/ # Build/runtime helper scripts
└── docs/ # Current + legacy docs
Current docs:
docs/GETTING_STARTED.mddocs/PROJECT_STRUCTURE.mddocs/ARCHITECTURE_STATUS.mddocs/FEATURES.md
Legacy reference docs:
docs/legacy/README.mddocs/legacy/ARCHITECTURE.mddocs/legacy/project_doc.mddocs/legacy/TTS_IMPLEMENTATION.md
Security notes:
SECURITY.md
If you want to run the Python translator service locally:
pip install fastapi uvicorn transformers torch sentencepiece
cd backend
python translator_service.py- Ollama unavailable: run
ollama serve - Missing model: run
ollama pull hf.co/Qwen/Qwen2.5-1.5B-Instruct-GGUF:Q4_K_M - Backend unreachable: ensure
npm run backendis running on port3000 - Android emulator networking: use
http://10.0.2.2:3000 - Device networking: use LAN IP for
EXPO_PUBLIC_API_URL(notlocalhost)
MIT