# HEBRAIKA.COM

Nueva version estatica de HEBRAIKA, enfocada en hebreo practico para vivir, trabajar y estudiar en Israel.

## Que incluye

- Home moderna con busqueda global.
- Diccionario hebreo funcional con filtros por categoria y nivel.
- Categorias de vocabulario para situaciones reales en Israel.
- Seccion de ayuda para olim jadashim.
- Cursos de hebreo por objetivo.
- Comparacion Alef-Bet vs sonidos cercanos del alfabeto espanol.
- Lecciones semanales en PDF con visor online.
- Interfaz admin estatica para preparar lecciones semanales.
- Blog y recursos editables.
- Contacto con email, WhatsApp y formulario base.
- SEO inicial con meta tags y datos estructurados.
- Configuracion publica para buscadores: `robots.txt`, `sitemap.xml` y metadatos de contenido educativo general.

## Sistema de usuarios, roles y administrador

La web ahora incluye un sistema PHP simple pensado para Bluehost:

- `auth/register.php`: registro de usuarios con rol `user` y opción para recibir correos.
- `auth/login.php`: login de usuarios y administradores.
- `auth/forgot-password.php` y `auth/reset-password.php`: cambio de contraseña por enlace enviado al correo.
- `auth/setup-admin.php`: crea el primer administrador usando el email configurado en `auth/config.php`.
- `auth/dashboard.php`: panel básico según rol.
- `pages/admin.php`: subida protegida de lecciones con titulo, descripcion, categoria, imagen, video, enlace de video, PDF y adjunto; solo para rol `admin`.
- `private/`: guarda usuarios/tokens en JSON y queda bloqueado por `private/.htaccess`.

URLs importantes:

- Panel admin: `https://hebraika.com/pages/admin.php`
- Login admin: `https://hebraika.com/auth/login.php?next=/pages/admin.php`
- Crear primer admin si no existe: `https://hebraika.com/auth/setup-admin.php`
- Hoja imprimible de letras: `https://hebraika.com/hebrew-letters-printable`

Administrador local creado:

- Usuario: `info@hebraika.com`
- La contrasena temporal se guarda solo en `private/admin-credentials.txt`.
- Ese archivo esta ignorado por Git y no debe subirse a GitHub.
- Cambia la contrasena con `https://hebraika.com/auth/forgot-password.php` despues de publicar.

Flujo de instalación en Bluehost:

1. Sube el sitio completo a `public_html`, incluyendo `.htaccess`, `auth/`, `pages/admin.php` y `private/.htaccess`.
2. Abre `https://hebraika.com/auth/setup-admin.php`.
3. Crea el primer administrador con el email configurado en `auth/config.php`.
4. Guarda el link privado de subida: `https://hebraika.com/pages/admin.php`.
5. Para cambiar contraseña, usa `https://hebraika.com/auth/forgot-password.php` con el correo del administrador.
6. No enlaces públicamente `pages/admin.php`; solo quien tenga el link y credenciales de administrador podrá subir lecciones.

Importante: `private/users.json`, `private/reset_tokens.json` y `private/mail-log.txt` no deben subirse a GitHub con datos reales. Están ignorados por `.gitignore`.

## Acceso publico y restricciones de edad

La web esta configurada como sitio educativo publico:

- No tiene login obligatorio.
- No tiene password protection en `.htaccess`.
- No tiene age gate.
- No contiene contenido adulto.
- Tiene `robots.txt` permitiendo indexacion.
- Tiene meta `rating="General"` y `audience="all"`.

Importante: Google, redes sociales, navegadores, filtros parentales y proveedores externos pueden aplicar sus propias politicas. Ningun archivo del sitio puede garantizar al 100% que una plataforma externa nunca lo clasifique o bloquee, pero esta version no incluye restricciones de edad ni senales de contenido limitado.

## Por que version estatica

Bluehost funciona muy bien con HTML, CSS y JavaScript estatico. Esta version no necesita servidor Node.js, base de datos ni instalacion especial. Se puede subir directamente a `public_html`.

Si mas adelante quieres WordPress o Next.js, el contenido ya esta separado en JSON y se puede migrar con menos friccion.

## Estructura

```text
/
  index.html
  README.md
  assets/
    favicon.svg
    israel-learning.svg
  components/
    admin-lessons.js
    app.js
    page-alphabet.js
    page-guides.js
    page-lessons.js
  data/
    alphabet.json
    articles.json
    categories.json
    courses.json
    dictionary.json
    guides.json
    lessons.json
    site.json
  pages/
    admin.html
    admin.php
    alefbet.html
    hebrew-letters-printable.html
    lecciones.html
    olim.html
  styles/
    main.css
```

## Instalacion en Bluehost

1. Entra al panel de Bluehost.
2. Abre el administrador de archivos.
3. Ve a la carpeta `public_html`.
4. Sube todos los archivos y carpetas de este proyecto.
5. Confirma que `index.html` quede directamente dentro de `public_html`.
6. Abre `https://hebraika.com` y revisa que cargue el sitio.

No abras el sitio como archivo local (`file://`) para probar el diccionario, porque el navegador puede bloquear la carga de JSON. Usa un servidor local o Bluehost.

## Probar localmente

Desde la carpeta del proyecto:

```powershell
python -m http.server 8787
```

Luego abre:

```text
http://localhost:8787
```

## Agregar palabras al diccionario

Edita `data/dictionary.json`. Cada palabra debe tener esta estructura:

```json
{
  "id": "bituaj-leumi",
  "hebrew": "ביטוח לאומי",
  "translation_es": "seguro nacional",
  "translation_en": "National Insurance",
  "pronunciation": "bi-TU-akh le-u-MI",
  "transliteration": "bituaj leumi",
  "example_he": "יש לי שאלה לביטוח לאומי.",
  "example_es": "Tengo una pregunta para Bituaj Leumi.",
  "category": "Gobierno / Misrad Hapnim",
  "level": "intermedio",
  "tags": ["olim", "derechos"]
}
```

Reglas:

- `id` debe ser unico.
- `category` debe coincidir con una categoria en `data/categories.json`.
- `level` debe ser `basico`, `intermedio` o `avanzado`.
- Mantener JSON valido: comas entre objetos, comillas dobles y corchetes.

## Agregar categorias

Edita `data/categories.json`:

```json
{
  "name": "Farmacia",
  "description": "Medicamentos, recetas, sintomas y preguntas al farmaceutico.",
  "priority": 12
}
```

## Agregar cursos

Edita `data/courses.json`:

```json
{
  "title": "Hebreo para entrevistas",
  "summary": "Preguntas frecuentes, respuestas profesionales y vocabulario laboral.",
  "level": "intermedio",
  "format": "Practica guiada"
}
```

## Agregar guias para olim

Edita `data/guides.json`:

```json
{
  "title": "Bituaj Leumi paso a paso",
  "summary": "Como preparar documentos, entender pagos y reconocer vocabulario clave.",
  "audience": "Olim jadashim",
  "status": "base"
}
```

## Agregar articulos

Edita `data/articles.json`:

```json
{
  "title": "10 frases para hablar con el propietario",
  "summary": "Vocabulario para alquiler, contrato, pagos, reparaciones y visitas.",
  "type": "Frases utiles"
}
```

## Agregar letras o ejemplos del Alef-Bet

Edita `data/alphabet.json`:

```json
{
  "hebrew": "א",
  "name": "Alef",
  "sound_es": "silenciosa o soporte vocal",
  "spanish_near": "a/e/i/o/u segun vocal",
  "example": "אבא / aba / papa"
}
```

## Publicar lecciones semanales

La pagina publica es `pages/lecciones.html`.

La interfaz protegida de administracion es `pages/admin.php`.

El panel permite subir:

- titulo
- descripcion
- categoria
- imagen destacada
- video MP4/WebM
- enlace de video externo
- PDF para lectura online
- archivo adjunto opcional
- contenido visible dentro de la pagina

Flujo recomendado:

1. Entra con rol administrador desde `auth/login.php`.
2. Abre el link privado `pages/admin.php`.
3. Completa titulo, descripcion, categoria, fecha y nivel.
4. Sube imagen, video, PDF o adjunto si aplica.
5. Pulsa subir.
6. El sistema guardara archivos en `assets/lessons/uploads/` y actualizara `data/lessons.json`.
7. Para editar o eliminar, usa la lista de lecciones dentro del mismo panel.

Ejemplo:

```json
{
  "id": "2026-06-14-leccion-01-alef-bet",
  "title": "Leccion 01 - Alef-Bet",
  "summary": "Primer reconocimiento de letras hebreas y sonidos.",
  "date": "2026-06-14",
  "level": "basico",
  "pdf": "../assets/lessons/leccion-01-alef-bet.pdf",
  "published": true
}
```

### Sobre impedir descargas de PDF

La web oculta la barra de herramientas del visor cuando el navegador lo permite, evita mostrar enlaces directos de descarga y fuerza `Content-Disposition: inline` en `.htaccess`.

Limitacion importante: si un navegador puede leer un PDF, una persona con conocimientos tecnicos siempre puede intentar guardar el archivo desde herramientas del navegador o cache. Para proteccion real se necesita un backend con autenticacion, streaming por paginas o convertir PDFs a imagenes/HTML protegidos por sesion.

## Prompts recomendados para Codex

Puedes pedir cambios asi:

```text
Agrega 50 palabras nuevas sobre banco en hebreo, espanol e ingles en data/dictionary.json.
Usa categoria Banco, niveles basico e intermedio, y crea ejemplos de uso.
No cambies el diseno.
```

```text
Crea una nueva guia para olim sobre Bituaj Leumi en data/guides.json.
Debe ser clara para una persona que acaba de llegar a Israel.
```

```text
Actualiza la seccion de vocabulario medico agregando palabras de farmacia,
turnos, receta, dolor, alergia y emergencia. Mantener JSON valido.
```

## Notas sobre la migracion de hebraika.com

La portada publica de `hebraika.com`, `www.hebraika.com`, `http://hebraika.com` y `sitemap.xml` devolvio `409 Conflict` durante la revision tecnica. Por eso no se copio texto literal del sitio anterior. La nueva web conserva solo las areas utiles solicitadas: cursos, metodo practico, diccionario, recursos, contacto, mision y ayuda para olim.

## Siguientes mejoras sugeridas

- Conectar el formulario a Bluehost, Formspree o un plugin de email.
- Agregar audio real para pronunciacion.
- Crear paginas individuales para cada guia y cada curso.
- Agregar un panel admin simple para editar JSON desde el navegador.
- Conectar el diccionario a una base de datos cuando crezca.
