MVP לדסקטופ Windows (Electron + React) עם UI מלא בעברית/RTL, OCR ו־TTS דרך Azure, ספרייה מקומית, חידוש מיקום, סימניות, חיפוש, בחירת קול, וייצוא אודיו.
packages/core: מודל מסמכים, ממשקי ספקים, chunking, SQLite storage.packages/extractors: חילוץ PDF/DOCX/TXT + חילוץ URL דרך Readability.packages/providers-azure: Azure Vision OCR + Azure Speech TTS + קטלוג קולות.apps/desktop: אפליקציית MVP מלאה ל־Windows עם auto-update.apps/web/apps/cli/apps/mobile: stubs מוכנים להמשך.
- Windows 10/11
- Node.js 20+
- Corepack (מובנה ב־Node 20+)
- צור Azure Speech resource וקח
KEY+REGION. - צור Azure Vision resource וקח
KEY+ENDPOINT. - העתק
C:\Users\USER\Workspace\hebrew-reader\.env.exampleל־.env. - מלא משתנים:
AZURE_SPEECH_KEYAZURE_SPEECH_REGIONAZURE_VISION_KEYAZURE_VISION_ENDPOINT
- אפשר גם להגדיר מתוך מסך הגדרות באפליקציה.
Set-Location "C:\Users\USER\Workspace\hebrew-reader"
corepack enable
corepack prepare pnpm@10.4.1 --activate
pnpm install
pnpm --filter @apps/desktop devSet-Location "C:\Users\USER\Workspace\hebrew-reader"
pnpm --filter @apps/desktop buildפלט צפוי:
- מתקין EXE:
C:\Users\USER\Workspace\hebrew-reader\apps\desktop\release\*.exe - artifacts נוספים:
C:\Users\USER\Workspace\hebrew-reader\apps\desktop\release\
המתקין יוצר:
- קיצור דרך לשולחן העבודה
- קיצור דרך בתפריט Start
- הגדר משתני סביבה בזמן build:
GITHUB_OWNERGITHUB_REPO- (לפרסום)
GH_TOKEN
- העלה artifacts ל־GitHub Release.
- האפליקציה בודקת עדכון:
- בהפעלה
- כל 6 שעות
- זרימת משתמש:
- הודעה על גרסה חדשה
- אישור הורדה
- הודעת "Restart to update"
- האפליקציה מושכת HTML עם timeout + הגבלת גודל + redirect limit + User-Agent.
- חילוץ תוכן ראשי:
@mozilla/readability+jsdom. - fallback: ניקוי scripts/styles וחילוץ טקסט גולמי מה־DOM.
- נשמרים:
sourceUrl,siteName,fetchedAt. - כל URL נשמר כספר בספרייה עם חיפוש/סימניות/Resume.
- תחילה: חילוץ טקסט רגיל דרך
pdfjs-dist. - אם צפיפות הטקסט נמוכה: OCR דרך Azure Vision Read.
- ב־PDF סרוק מוצגת התקדמות OCR לפי עמוד.
בדיקות יחידה קיימות:
packages/core/test/chunking.test.ts(גבולות chunking + RTL)packages/core/test/storage.test.ts(שמירת מיקום/סימניות SQLite)packages/core/test/provider-contract.test.ts(חוזי Provider עם mocks)packages/extractors/test/url-extractor.test.ts(Readability עם fixture דטרמיניסטי)
הרצת בדיקות:
Set-Location "C:\Users\USER\Workspace\hebrew-reader"
pnpm testSet-Location "C:\Users\USER\Workspace\hebrew-reader"
pnpm --filter @apps/cli dev -- --input "https://example.com" --output "C:\Users\USER\Desktop\sample.wav"- Web:
apps/web(Next.js stub) - Mobile:
apps/mobile(Expo stub)
בבדיקות יחידה אין תלות רשת: URL/OCR/TTS נבדקים דרך fixtures/mocks או לוגיקה מקומית.