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.

Florilegio de la Fe es una aplicación web full-stack construida sobre Django 4.2 (Python) con PostgreSQL como base de datos principal. El backend gestiona contenido editorial, estudio bíblico interactivo, autenticación con Google OAuth, suscripciones de pago con PayPal y sincronización de versiones bíblicas desde servicios externos. El frontend es un sistema de diseño CSS a medida con JavaScript vanilla, sin frameworks pesados. Todos los secretos de configuración se cargan desde un archivo .env mediante python-dotenv.

Backend

Django 4.2.11

Framework MVT principal (Python). Gestiona ORM, autenticación, admin, middleware, sitemaps y manejo de errores HTTP personalizados.

PostgreSQL

Base de datos primaria. Se usa django.contrib.postgres para habilitar búsqueda con unaccent (insensible a tildes) en artículos y ensayos.

psycopg2-binary 2.9.11

Adaptador Python–PostgreSQL requerido por el backend de base de datos de Django.

WhiteNoise 6.6.0

Sirve archivos estáticos directamente desde Django en producción, con compresión habilitada (CompressedStaticFilesStorage).

python-dotenv 1.0.1

Carga las variables de entorno desde .env al iniciar el servidor. Todas las credenciales se gestionan con os.environ.get().

django-allauth 0.54.0

Autenticación social con Google OAuth2 (PKCE habilitado), gestión de cuentas por email y adaptador personalizado FlorilegioSocialAdapter.

django-ratelimit 4.1.0

Limita por IP o usuario peticiones sensibles: registro (5/h), login (10/15m), contacto (3/h), guardado de estudios (60/h), consulta de versículos (200/m).

bleach 6.3.0

Sanitiza el HTML generado por los usuarios antes de persistirlo. La lista blanca de etiquetas y atributos se define en views.py (BLEACH_TAGS, BLEACH_ATTRS).

Pillow 12.2.0

Habilita el campo ImageField de Django para subir y almacenar fotos de autores en media/authors/.

Configuración de producción relevante

# settings.py — seguridad en producción (DEBUG=False)
SECURE_SSL_REDIRECT = True
SECURE_HSTS_SECONDS = 31536000        # 1 año
SECURE_HSTS_INCLUDE_SUBDOMAINS = True
SECURE_HSTS_PRELOAD = True
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True
SECURE_CONTENT_TYPE_NOSNIFF = True

# Archivos estáticos con compresión WhiteNoise
STATICFILES_STORAGE = 'whitenoise.storage.CompressedStaticFilesStorage'

Frontend

El frontend está construido enteramente con tecnologías nativas, sin frameworks de componentes JavaScript.
TecnologíaUso
HTML5 + CSS3 (Vanilla)Sistema de diseño a medida con paleta editorial (crema #f7f3ed), efecto paper-edge y tipografía cuidada
JavaScript (Vanilla)Lógica de interacción: editor de estudios bíblicos, llamadas fetch a las API JSON internas, gestión de estado del UI
Swiper.jsCarrusel de artículos destacados (is_featured=True) en la página principal
AniJS (anijs.js)Animaciones de texto declarativas en el hero y secciones destacadas

Servicios externos

Resumen de variables de entorno

ServicioVariable(s) de entornoPropósito
BrevoBREVO_API_KEY, BREVO_SENDER_EMAIL, BREVO_SENDER_NAME, BREVO_TEMPLATE_IDEmail transaccional
PayPalPAYPAL_CLIENT_ID, PAYPAL_PLAN_PREMIUM, PAYPAL_PLAN_PRO, PAYPAL_PLAN_DONATION_MONTHLY, PAYPAL_PLAN_DONATION_ANNUALSuscripciones y donaciones
API.BibleBIBLE_API_KEYSincronización de versiones bíblicas
YouVersionYVP_APP_KEYConsulta de capítulos bíblicos
Base de datosDB_NAME, DB_USER, DB_PASSWORD, DB_HOST, DB_PORTConexión a PostgreSQL
DjangoSECRET_KEY, DJANGO_DEBUGSeguridad y modo de ejecución

Brevo (email transaccional)

Brevo (anteriormente Sendinblue) gestiona todos los correos transaccionales de la plataforma:
  • Verificación de email al registrarse: Se genera un código de 6 dígitos y se envía con templateId definido en BREVO_TEMPLATE_ID, pasando el parámetro {'CODE': code} a la plantilla.
  • Formulario de contacto: Los mensajes enviados desde /contacto/ se reenvían al correo del equipo vía la API REST de Brevo (POST /v3/smtp/email).
# Envío de código de verificación
requests.post(
    'https://api.brevo.com/v3/smtp/email',
    headers={'api-key': settings.BREVO_API_KEY, ...},
    json={
        'to': [{'email': email}],
        'templateId': int(settings.BREVO_TEMPLATE_ID),
        'params': {'CODE': code},
    },
)

PayPal (suscripciones y donaciones)

PayPal gestiona los planes de suscripción y las donaciones. El PAYPAL_CLIENT_ID se inyecta en los templates de /planes/ y /apoyo/ para inicializar el SDK de PayPal en el cliente.
VariablePlan
PAYPAL_PLAN_PREMIUMPlan Premium (límite 100 estudios)
PAYPAL_PLAN_PROPlan Pro (sin límite de estudios)
PAYPAL_PLAN_DONATION_MONTHLYDonación mensual recurrente
PAYPAL_PLAN_DONATION_ANNUALDonación anual recurrente
Cuando PayPal confirma una suscripción en el cliente, éste llama a POST /api/paypal/subscription/activate/ con el subscription_id y el plan deseado. El endpoint actualiza UserProfile.plan en la base de datos.

API.Bible (sincronización de versiones)

API.Bible permite descargar el texto completo de versiones bíblicas con licencia. Florilegio sincroniza tres versiones al modelo VersiculoBiblia:
ClaveVersión
nblaNueva Biblia de las Américas
ntvNueva Traducción Viviente
rvr09Reina Valera 1909
La sincronización se administra desde el panel de Django en /api/admin/bible-sync/<version>/ y su estado se registra en el modelo ApiBibleSyncStatus.

YouVersion Platform API

La YouVersion Platform API se usa para recuperar capítulos bíblicos bajo demanda. La clave YVP_APP_KEY autoriza las peticiones. Los endpoints internos son:
  • GET /api/youversion/bibles/ — lista las versiones disponibles.
  • GET /api/youversion/chapter/ — devuelve el texto de un capítulo específico.

Fuentes de datos bíblicos

Florilegio incorpora cuatro fuentes abiertas de datos bíblicos que se importan una vez a la base de datos PostgreSQL:

OGNT

Open Greek New Testament — datos de cada palabra del Nuevo Testamento en griego original, incluyendo forma, raíz, código RMAC y número de Strong (PalabraBiblia, TraduccionLiteral, Morfologia).

OSHB / morphHB

Open Scriptures Hebrew Bible — datos morfológicos del Antiguo Testamento en hebreo, procesados desde el directorio biblia/morphhb/ (PalabraHebreo, TraduccionHebreo, MorfologiaHebreo).

Strong's Concordance

Definiciones léxicas indexadas por número de Strong para griego (G####) y hebreo (H####), almacenadas en el modelo StrongConcord.

Vine's Expository Dictionary

Definiciones expositivas del Diccionario Vine, enlazadas a números de Strong mediante el campo strong_numbers (JSONField) en el modelo VineConcord.

Build docs developers (and LLMs) love