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 archivoDocumentation 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.
.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
Frontend
El frontend está construido enteramente con tecnologías nativas, sin frameworks de componentes JavaScript.| Tecnología | Uso |
|---|---|
| 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.js | Carrusel 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
| Servicio | Variable(s) de entorno | Propósito |
|---|---|---|
| Brevo | BREVO_API_KEY, BREVO_SENDER_EMAIL, BREVO_SENDER_NAME, BREVO_TEMPLATE_ID | Email transaccional |
| PayPal | PAYPAL_CLIENT_ID, PAYPAL_PLAN_PREMIUM, PAYPAL_PLAN_PRO, PAYPAL_PLAN_DONATION_MONTHLY, PAYPAL_PLAN_DONATION_ANNUAL | Suscripciones y donaciones |
| API.Bible | BIBLE_API_KEY | Sincronización de versiones bíblicas |
| YouVersion | YVP_APP_KEY | Consulta de capítulos bíblicos |
| Base de datos | DB_NAME, DB_USER, DB_PASSWORD, DB_HOST, DB_PORT | Conexión a PostgreSQL |
| Django | SECRET_KEY, DJANGO_DEBUG | Seguridad 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
templateIddefinido enBREVO_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).
PayPal (suscripciones y donaciones)
PayPal gestiona los planes de suscripción y las donaciones. ElPAYPAL_CLIENT_ID se inyecta en los templates de /planes/ y /apoyo/ para inicializar el SDK de PayPal en el cliente.
| Variable | Plan |
|---|---|
PAYPAL_PLAN_PREMIUM | Plan Premium (límite 100 estudios) |
PAYPAL_PLAN_PRO | Plan Pro (sin límite de estudios) |
PAYPAL_PLAN_DONATION_MONTHLY | Donación mensual recurrente |
PAYPAL_PLAN_DONATION_ANNUAL | Donación anual recurrente |
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 modeloVersiculoBiblia:
| Clave | Versión |
|---|---|
nbla | Nueva Biblia de las Américas |
ntv | Nueva Traducción Viviente |
rvr09 | Reina Valera 1909 |
/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 claveYVP_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.