No description
| app | ||
| .env.example | ||
| .gitignore | ||
| init_db.py | ||
| README.md | ||
| requirements.txt | ||
| run.py | ||
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
- Crear entorno virtual:
python -m venv venv
source venv/bin/activate # En Windows: venv\Scripts\activate
- Instalar dependencias:
pip install -r requirements.txt
- 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