Florilegio cuenta con un sistema completo de cuentas de usuario que combina autenticación propia por correo electrónico con inicio de sesión social vía Google. El registro incluye verificación por correo electrónico con código de 6 dígitos enviado a través de Brevo (ex Sendinblue). Una vez registrados, los usuarios tienen acceso a un perfil personalizable con avatar, a sus estudios bíblicos guardados y, opcionalmente, a planes de suscripción de pago que amplían los límites de uso. Los perfiles de autor están también vinculados al sistema de usuarios, habilitando el portal editorial.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.
Flujo de registro
POST /registro/ — Envío del formulario
El usuario envía su nombre, correo electrónico y contraseña. El sistema valida que el correo no esté en uso y que las contraseñas coincidan.El código se envía al correo del usuario mediante la API de Brevo usando el
BREVO_TEMPLATE_ID configurado. Si el envío falla, el usuario creado se elimina y se muestra un error.Límite de tasa: 5 registros por hora por IP.Login
Login por correo
POST /iniciar-sesion/ — Autenticación con correo electrónico y contraseña. El backend de Django autentica al usuario por username (que puede ser el correo) o por correo directamente a través del backend personalizado.Límite de tasa: 10 intentos por 15 minutos por IP.Google OAuth
GET /accounts/ — Inicio de sesión con Google a través de django-allauth. Al autenticarse con Google, si no existe un UserProfile, se crea automáticamente mediante señales de Django.La integración de Google OAuth con
django-allauth requiere configurar SITE_ID en settings.py, añadir allauth, allauth.account y allauth.socialaccount a INSTALLED_APPS, y registrar las credenciales OAuth de Google (SOCIALACCOUNT_PROVIDERS o desde el panel de admin de Sites). Consulta la documentación oficial de django-allauth para los pasos exactos.Modelo UserProfile
Se crea automáticamente para cada nuevo User mediante señales de Django (post_save). No es necesario crearlo manualmente.
| Campo / Método | Descripción |
|---|---|
bio | Biografía del usuario (opcional) |
avatar_url | URL del avatar elegido |
plan | Plan de suscripción: free, premium o pro |
created_at | Fecha de registro del perfil |
updated_at | Fecha de última actualización |
study_limit() | Retorna 3 (free), 100 (premium) o None (pro = ilimitado) |
is_author | True si el usuario tiene un perfil Author vinculado |
Planes de suscripción
| Plan | Estudios guardados | PayPal |
|---|---|---|
| Free | 3 | — |
| Premium | 100 | PAYPAL_PLAN_PREMIUM |
| Pro | Ilimitado | PAYPAL_PLAN_PRO |
PAYPAL_PLAN_PREMIUM, PAYPAL_PLAN_PRO) y se pasan al template de la página /planes/ junto con el PAYPAL_CLIENT_ID.
Activación de suscripción
Una vez que el usuario completa el pago en el frontend de PayPal, el cliente llama a este endpoint para actualizar su plan:plan debe ser "premium" o "pro".
Límite de tasa: 10 solicitudes por hora por usuario/IP.
Avatar
Los usuarios pueden elegir entre un conjunto de avatares pre-cargados en la carpetastatic/avatares/. El avatar activo se almacena en UserProfile.avatar_url.
.webp, .png, .jpg, .jpeg, .gif.
Modelo UserStudy
Almacena las notas de estudio bíblico guardadas por cada usuario autenticado. El contenido HTML es sanitizado con bleach antes de guardarse.
| Campo | Descripción |
|---|---|
title | Título libre para la nota de estudio |
reference | Referencia bíblica (ej. "Juan 3:16") |
content | Contenido en HTML, sanitizado con la whitelist de bleach |
created_at | Fecha de creación |
updated_at | Fecha de última modificación; usado para ordenación (-updated_at) |
URLs de perfil y estudios
GET /perfil/ — Perfil de usuario
GET /perfil/ — Perfil de usuario
Requiere autenticación. Muestra el perfil del usuario con su plan actual, avatar y datos personales. El template recibe también la lista de archivos de avatar disponibles desde
static/avatares/.GET /mis-estudios/ — Estudios guardados
GET /mis-estudios/ — Estudios guardados
Requiere autenticación. Lista todos los
UserStudy del usuario autenticado, ordenados por updated_at descendente.POST /api/estudios/guardar/ — Guardar estudio
POST /api/estudios/guardar/ — Guardar estudio
Crea un nuevo Límite de tasa: 60 solicitudes por hora por usuario/IP.
UserStudy o actualiza uno existente si se proporciona study_id. Verifica el límite de estudios del plan antes de crear.GET /api/estudios/<id>/ — Obtener estudio
GET /api/estudios/<id>/ — Obtener estudio
Devuelve los datos de un estudio específico del usuario autenticado.Límite de tasa: 60 solicitudes por hora por usuario/IP.Respuesta: