Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/alfonsoolavarria/florilegio/llms.txt

Use this file to discover all available pages before exploring further.

La herramienta de estudio bíblico de Florilegio permite al usuario seleccionar cualquier libro, capítulo y versículo de la Biblia para ver un análisis palabra por palabra del texto original. Para el Nuevo Testamento (libros 40–66), los datos provienen del Open Greek New Testament (OGNT) con análisis morfológico RMAC. Para el Antiguo Testamento (libros 1–39), la fuente es el Open Scriptures Hebrew Bible (OSHB/morphHB). Cada palabra muestra su texto original, traducción al español, palabra raíz, código morfológico con descripción, y número de Strong vinculado a las concordancias de Strong y Vine.

Versiones Bíblicas disponibles

rv1960

Reina-Valera 1960 — Importada mediante comando de gestión (import_rv1960) desde archivos JSON locales.

nbla

Nueva Biblia de las Américas — Sincronizada desde API.Bible. Estado de sincronización rastreado en ApiBibleSyncStatus.

ntv

Nueva Traducción Viviente — Sincronizada desde API.Bible.

rvr09

Reina-Valera 1909 — Sincronizada desde API.Bible.
Adicionalmente, el sistema integra versiones de la plataforma YouVersion para lectura paralela:
ID YouVersionVersión
103NBLA — Nueva Biblia de las Américas
147RVA — Reina Valera Actualizada
128NVI-S 2025 — Nueva Versión Internacional
89LBLA — La Biblia de las Américas
2664NVI-S 2015
3291VBL
3365PdDpt
4212GlossSP
Los textos de versículos se almacenan en el modelo VersiculoBiblia con clave única (version, libro, capitulo, versiculo).

Análisis morfológico griego (Nuevo Testamento)

Para los libros 40–66 (Nuevo Testamento), cada palabra proviene del dataset OGNT (Open Greek New Testament). Los datos se distribuyen en tres modelos relacionados:
# Palabra base con referencia de ubicación
class PalabraBiblia(models.Model):
    ognt_sort   = models.CharField(max_length=50, primary_key=True)  # ID único OGNT
    libro       = models.IntegerField()    # Número de libro (40–66)
    capitulo    = models.IntegerField()
    versiculo   = models.IntegerField()

# Traducción literal
class TraduccionLiteral(models.Model):
    palabra     = models.OneToOneField(PalabraBiblia, related_name='traduccion')
    espanol     = models.CharField(max_length=255)   # Traducción al español
    griego      = models.CharField(max_length=255)   # Texto griego
    raiz_griega = models.CharField(max_length=255)   # Palabra raíz

# Datos morfológicos y Strong
class Morfologia(models.Model):
    palabra         = models.OneToOneField(PalabraBiblia, related_name='morfologia')
    rmac            = models.CharField(max_length=50)    # Código morfológico RMAC
    descripcion_rmac = models.CharField(max_length=255)  # Descripción legible del código
    low_nida_number  = models.CharField(max_length=150)  # Número Louw-Nida
    strong          = models.CharField(max_length=20)    # Número Strong (ej. G3056)
Los campos que devuelve la API para cada palabra griega:
CampoDescripción
ognt_sortIdentificador único OGNT de la palabra
espanolTraducción literal al español
griegoTexto en griego
raiz_griegaForma léxica / palabra raíz
rmacCódigo morfológico RMAC (ej. N-NSM)
descripcion_rmacDescripción legible del código RMAC
low_nida_numberNúmero del dominio semántico Louw-Nida
strongNúmero Strong con prefijo G (ej. G3056)

Análisis morfológico hebreo (Antiguo Testamento)

Para los libros 1–39 (Antiguo Testamento), la fuente es OSHB/morphHB. Los modelos correspondientes son:
class PalabraHebreo(models.Model):
    oshb_id   = models.CharField(max_length=50, primary_key=True)  # ID único OSHB
    libro     = models.IntegerField()   # Número de libro (1–39)
    capitulo  = models.IntegerField()
    versiculo = models.IntegerField()
    orden     = models.IntegerField()   # Orden de la palabra en el versículo

class TraduccionHebreo(models.Model):
    palabra    = models.OneToOneField(PalabraHebreo, related_name='traduccion_hebreo')
    hebreo     = models.CharField(max_length=255)   # Texto en hebreo
    raiz_hebrea = models.CharField(max_length=255)  # Raíz hebrea
    espanol    = models.CharField(max_length=255)   # Traducción al español

class MorfologiaHebreo(models.Model):
    palabra    = models.OneToOneField(PalabraHebreo, related_name='morfologia_hebreo')
    morph_code = models.CharField(max_length=50)    # Código morfológico (ej. Ncmsa)
    strong     = models.CharField(max_length=20)    # Número Strong con prefijo H (ej. H1234)

Decodificación de morfología hebrea

La función describir_morfologia_hebrea() en views.py decodifica el morph_code en español de forma legible. Algunos ejemplos:
CódigoDescripción generada
Ncmsasustantivo: masculino, singular, absoluto
Vqp3msverbo: Qal, perfecto, 3ª, masculino, singular
Vnp3fsverbo: Niphal, perfecto, 3ª, femenino, singular
Vhi3mpverbo: Hiphil, imperfecto, 3ª, masculino, plural
Vtp3msverbo: Hithpael, perfecto, 3ª, masculino, singular
Pp1cspronombre: 1ª, común, singular
Los posibles tallos verbales reconocidos son: Qal, Niphal, Piel, Hiphil, Hithpael, Poel, Polel.

URL del estudio bíblico

GET /estudios/
Renderiza el navegador bíblico que muestra la lista de libros del Antiguo y Nuevo Testamento. La estructura de capítulos de cada libro se envía al frontend como JSON:
estructura_datos = {libro.numero: libro.estructura_capitulos for libro in libros_todos}
# → {"1": {"1": 31, "2": 25, ...}, "40": {"1": 25, ...}, ...}
El template recibe:
  • libros_ot — libros del Antiguo Testamento (testamento="Antiguo Testamento")
  • libros_nt — libros del Nuevo Testamento (testamento="Nuevo Testamento")
  • estructura_json — JSON serializado con el número de versículos por capítulo

API del versículo

GET /api/versiculo/?tipo=estudio&libro=43&capitulo=3&versiculo=16&version=rv1960
Límite de tasa: 200 solicitudes por minuto por IP.
ParámetroObligatorioDescripción
tipoNo (default: estudio)estudio devuelve análisis palabra por palabra; biblia devuelve los versículos de texto plano del capítulo
libroNúmero de libro (1–66)
capituloNúmero de capítulo
versiculoSolo en tipo=estudioNúmero de versículo
versionNo (default: rv1960)Versión para texto plano (usado en tipo=biblia)
Respuesta en modo estudio (libros NT):
{
  "status": "success",
  "modo": "estudio",
  "idioma": "griego",
  "texto_rv1960": "Porque de tal manera amó Dios al mundo...",
  "data": [
    {
      "idioma": "griego",
      "ognt_sort": "430031600010010",
      "espanol": "porque",
      "griego": "ὅτι",
      "raiz_griega": "ὅτι",
      "rmac": "CONJ",
      "descripcion_rmac": "conjunction",
      "low_nida_number": "89.23",
      "strong": "G3754"
    }
  ]
}

Detalle de palabra

GET /palabra/<idioma>/<pk>/
Página de detalle para una palabra individual. Parámetros:
  • idioma: griego o hebreo
  • pk: ognt_sort para griego, oshb_id para hebreo
El template recibe:
  • word — dict con original, translation, root, morph_code, morph_desc, low_nida, ref, strong_num
  • strong_def — objeto StrongConcord con la definición del número Strong
  • vine_defs — lista de objetos VineConcord que contienen ese número Strong

Notas de estudio personal

Los usuarios autenticados pueden guardar anotaciones de estudio asociadas a una referencia bíblica. El modelo UserStudy almacena estas notas:
class UserStudy(models.Model):
    user      = models.ForeignKey(User, related_name='studies')
    title     = models.CharField(max_length=255)   # Título de la nota
    reference = models.CharField(max_length=255)   # Referencia bíblica (ej. "Juan 3:16")
    content   = models.TextField()                 # Contenido HTML (sanitizado con bleach)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    class Meta:
        ordering = ['-updated_at']
Los límites por plan son:
PlanEstudios guardados
Free3
Premium100
ProIlimitado
Al superar el límite, la API devuelve HTTP 403 con "status": "plan_limit_reached".
Los datos del OGNT (griego) y del OSHB (hebreo) deben importarse con comandos de gestión de Django antes de que la herramienta de estudio funcione. Sin los datos importados, las consultas devolverán listas vacías. Consulta la sección Importación de datos en la documentación de instalación para los comandos exactos.

Build docs developers (and LLMs) love