No description
Find a file
2026-02-16 23:46:29 -05:00
app fix options and buttons styling 2026-02-16 23:46:29 -05:00
.env.example clean slate 2026-02-16 03:27:51 -05:00
.gitignore implement document storage options 2026-02-16 19:04:38 -05:00
init_db.py fix options and buttons styling 2026-02-16 23:46:29 -05:00
README.md implement document storage options 2026-02-16 19:04:38 -05:00
requirements.txt clean slate 2026-02-16 03:27:51 -05:00
run.py clean slate 2026-02-16 03:27:51 -05:00

Archetto

Sistema de repositorio digital de documentos con extracción automática de texto mediante OCR, control de acceso basado en roles, verificación de integridad mediante hash, búsqueda full-text y sistema de categorías.

Características

  • Subida de documentos (PDF, PNG, JPG)
  • Extracción automática de texto con PaddleOCR
  • Verificación de integridad mediante hash SHA-256
  • Sistema de roles (Admin, Supervisor, Usuario)
  • Soft delete (eliminación lógica)
  • Restauración de documentos eliminados
  • Categorización de documentos (muchos a muchos)
  • Búsqueda full-text con filtrado por categorías
  • Panel lateral de categorías en lista de documentos
  • Tabs para ver documentos activos y eliminados
  • Modals nativos para confirmaciones
  • Notificaciones toast con Oat UI
  • Dropdowns para menús de acción y búsqueda avanzada
  • Loading states con spinners para operaciones en segundo plano
  • Interfaz UI boxy, empresarial, completa

Requisitos

  • Python 3.13
  • pip

Instalación

  1. Crear entorno virtual:
python -m venv venv
source venv/bin/activate  # En Windows: venv\Scripts\activate
  1. Instalar dependencias:
pip install -r requirements.txt
  1. Inicializar base de datos:
python init_db.py

Esto creará las tablas de la base de datos, un usuario administrador con las siguientes credenciales:

  • Usuario: admin
  • Contraseña: admin123

IMPORTANTE: Cambia la contraseña del administrador después del primer inicio de sesión.

Ejecutar la aplicación

python run.py

La aplicación estará disponible en http://localhost:5000

Estructura del proyecto

archetto/
├── app/
│   ├── __init__.py           # Inicialización de Flask
│   ├── models.py              # Modelos SQLAlchemy
│   ├── config.py              # Configuración
│   ├── auth/                  # Autenticación
│   ├── documents/             # Gestión de documentos
│   ├── categories/            # Gestión de categorías
│   ├── admin/                 # Panel de administración
│   ├── static/                # Archivos estáticos
│   │   ├── css/               # Estilos personalizados
│   │   └── js/                # Scripts (toast.js, loading.js)
│   └── templates/             # Templates Jinja2
├── uploads/                   # Almacenamiento de archivos
├── migrations/                # Migraciones de BD
├── requirements.txt           # Dependencias
└── run.py                    # Punto de entrada

Roles de Usuario

  • Admin: Control total del sistema, gestión de usuarios y categorías, ver y restaurar documentos eliminados
  • Supervisor: Ver todos los documentos, asignar categorías
  • Usuario: Subir y ver sus propios documentos

Funcionalidades

Documentos

  • Subir documentos con asignación de categorías
  • Búsqueda full-text en el contenido extraído por OCR
  • Filtrado por categoría
  • Ver lista de documentos activos o eliminados (solo admin)
  • Ver detalle de documento con información completa
  • Descargar documentos
  • Eliminar documentos (soft delete) con modal de confirmación
  • Restaurar documentos eliminados (solo admin)
  • Verificar integridad de documentos (hash SHA-256)
  • Dropdown de acciones en cada documento
  • Loading state durante subida con OCR

Categorías

  • Crear nuevas categorías (solo admin)
  • Ver lista de categorías
  • Asignar múltiples categorías a documentos
  • Filtrar documentos por categoría con panel lateral

Administración

  • Ver lista de usuarios activos o eliminados
  • Eliminar usuarios (soft delete) con modal de confirmación
  • Restaurar usuarios eliminados
  • Dropdown de acciones en cada usuario

Interfaz de Usuario

  • Panel lateral de navegación
  • Panel lateral de categorías con filtrado
  • Dropdown de usuario en topnav con acceso rápido
  • Dropdown de búsqueda avanzada con filtros
  • Tabs para alternar entre vistas (activos/eliminados)
  • Modals nativos para confirmaciones
  • Notificaciones toast para feedback
  • Spinners durante operaciones en segundo plano
  • Diseño boxy y empresarial con Oat UI completo

Configuración

Variables de entorno (opcional):

SECRET_KEY=tu_clave_secreta
DATABASE_URL=sqlite:///archetto.db
OCR_LANG=en  # o 'es' para español