# Angliški žodžiai

Žodžių mokymosi web app'as su atskirtais **mokytojo** ir **mokinio** režimais. Mokiniams **nereikia Google paskyros** — jungiasi su username+password.

## Architektūra

- **Mokytojas** prisijungia su Google OAuth → valdo viską iš savo Google paskyros
- **Mokinys** prisijungia su username+password per „invite link" → kalbasi su mokytojo Apps Script backend'u
- **Duomenys:** viskas mokytojo Drive'e, folderyje `Angliazodis`:
  - `AngliskiZodziai` — Sheet su 5 tab'ais (packs, words, students, progress, sessions)
  - `audio/` — OGG tarimo failai

## Setup'as mokytojui (~15 min vieną kartą)

### 1. Google Cloud OAuth (jei dar nepadarei)

Žr. ankstesnes README versijas arba žr. [Google Cloud Console](https://console.cloud.google.com/):
1. Sukurk projektą
2. Įjunk **Google Sheets API** + **Google Drive API**
3. OAuth consent screen → External → publish app
4. Sukurk OAuth Client ID (Web application)
5. Į Authorized JavaScript origins pridėk savo deploy URL

### 2. Paleisk mokytojo režimą

- Atidaryk `https://angliazodziai.pages.dev` (arba kur deploy'inai)
- Pasirink **Mokytojas** → prisijunk su Google
- App'as automatiškai sukurs folder'į `Angliazodis` ir visą Sheet su 5 tab'ais

### 3. Deploy'ink Apps Script backend'ą

1. Atidaryk savo `AngliskiZodziai` Sheet (Drive'e, folderyje `Angliazodis`)
2. **Extensions → Apps Script**
3. Atsidariusiame redaktoriuje — ištrink default'inį `Code.gs` turinį
4. Nukopijuok **visą** `apps-script.gs` turinį iš projekto ir įklijuok
5. Spausk **Save** (💾 ikona)
6. Spausk **Deploy → New deployment**
7. Tipo pasirink (⚙️) → **Web app**
8. Description: `Angliški žodžiai backend`
9. **Execute as:** `Me (tavo email)`
10. **Who has access:** `Anyone`
11. **Deploy**
12. Pirmą kartą paprašys suteikti leidimus — spausk **Authorize access** → pasirink savo paskyrą → „Google hasn't verified..." → **Advanced** → **Go to (unsafe)** → **Allow**
13. Nukopijuok **Web app URL** (`https://script.google.com/macros/s/.../exec`)

### 4. Įklijuok URL'ą į mokytojo dashboard'ą

- Grįžk į mokytojo režimą
- Viršuje bus geltona juosta „Apps Script dar nesukonfigūruotas"
- Įklijuok URL'ą į lauką → **Išsaugoti URL**
- Atsiras žalia juosta su **Mokinio invite link'u**

### 5. Sukurk paketą + žodžius

- Tab'as **Paketai** → + Naujas paketas → pavadinimas „5 klasė, L3" → išsaugok
- Pridėk žodžius (EN auto-siūlo LT per MyMemory)

### 6. Sukurk mokinį + priskirk paketą

- Tab'as **Mokiniai** → + Naujas mokinys
- Vardas: `Emilija`
- Vartotojo vardas: `emilija` (unique)
- Slaptažodis: `pasirink` (min 4 simb.)
- Pažymėk paketus, kuriuos priskiri
- Išsaugok

### 7. Atsiųsk mokiniui link'ą + kredencialus

- Iš tab'o **Apžvalga** nukopijuok **Mokinio invite link'ą**
- Atsiųsk mokiniui (SMS/Messenger/kas patogu)
- Atskirai pasakyk jam username + password

## Mokinio naudojimas

1. Mokinys atidaro link'ą telefone/PC
2. Įveda username + password → prisijungia
3. „Add to Home Screen" → PWA ikona telefone
4. Kitus kartus tiesiog paspaudžia ikoną — iškart pilnas dashboard'as (30 dienų session TTL)
5. Pasirenka paketą → sesija (3 ratai: EN→LT, 🔊→LT, LT→EN)

## Deploy'as

```bash
wrangler pages deploy . --project-name=angliazodziai --branch=main --commit-dirty=true
```

## Kaina

**$0/mėn** visiems komponentams:
- Cloudflare Pages (hosting) — nemokama
- Google Sheets/Drive API — nemokama
- Apps Script — 20,000 užklausų/d kvota (klasei iš 25 mokinių × 1 sesija/d = ~1500 req/d)
- MyMemory translate — 1000 req/d kvota
- Wikimedia Commons audio — neribota

## Klaidos

| Klaida | Sprendimas |
|--------|-----------|
| `redirect_uri_mismatch` | Deploy URL nėra OAuth Authorized origins. Pridėk, palauk ~1 min |
| Mokinys: „Nėra mokytojo link'o" | Atidarė be `#t=...` parametro. Turi atidaryti invite link'ą |
| `invalid_credentials` | Neteisingas username arba password. Mokytojas gali reset'inti per student editor |
| `Sesija pasibaigė` (mokytojas) | Google token baigiasi po 1h. Prisijunk iš naujo |

## Failai

- `index.html` — UI (visi ekranai)
- `app.js` — visa client-side logika
- `apps-script.gs` — Apps Script backend (kopijuojamas į mokytojo Sheet)
- `config.js` — OAuth Client ID
- `manifest.json` — PWA
- `SISTEMA.md` — architektūros + SRS algoritmo dokumentacija
