Stack tecnológico
Versiones y librerías clave de Gestión Civis, tomadas de requirements.txt
(backend) y gestion-civis-frontend/package.json (frontend).
Backend (Python / Flask)
| Componente | Paquete | Versión |
|---|---|---|
| Framework web | Flask |
3.1.2 |
| Servidor WSGI dev | Werkzeug |
3.1.3 |
| ORM | SQLAlchemy |
2.0.43 |
| Integración ORM | Flask-SQLAlchemy |
3.1.1 |
| Migraciones | Flask-Migrate / alembic |
4.1.0 / 1.16.5 |
| Hash de contraseñas | Flask-Bcrypt / bcrypt |
1.0.1 / 4.3.0 |
| CORS | flask-cors |
6.0.1 |
| Rate limiting | Flask-Limiter / limits |
4.1.1 / 5.8.0 |
| JWT | PyJWT |
2.10.1 |
| MFA / TOTP | pyotp / qrcode |
2.9.0 / 8.2 |
| Driver PostgreSQL | psycopg2-binary |
2.9.10 |
| Cron (expresiones) | croniter |
6.0.0 |
| Variables de entorno | python-dotenv |
1.1.1 |
Documentos, firma y PDF
| Función | Paquete | Versión |
|---|---|---|
| Generación de PDF (HTML→PDF) | weasyprint |
66.0 |
| Generación de PDF (canvas) | reportlab |
4.4.6 |
| Manipulación de PDF | pikepdf / PyPDF2 |
10.7.2 / 3.0.1 |
| Firma electrónica PDF | pyhanko |
0.27.0 |
| Firma XML (XAdES) | signxml |
4.0.4 |
| Sellado de tiempo (RFC 3161) | rfc3161ng |
2.1.3 |
| Criptografía | cryptography |
46.0.7 |
| Cliente SOAP (SIR) | zeep |
4.3.2 |
| XML | lxml |
6.0.2 |
| Documentos Office | python-docx / openpyxl |
1.2.0 / 3.1.5 |
IA / búsqueda
| Función | Paquete | Versión |
|---|---|---|
| Índice vectorial | faiss-cpu |
1.12.0 |
| Embeddings | sentence-transformers |
5.1.0 |
| Modelos / tokenizers | transformers / torch |
4.56.2 / 2.8.0 |
| Google GenAI | google-genai / google-generativeai |
1.56.0 / 0.8.5 |
| Almacenamiento GCS | google-cloud-storage |
3.3.1 |
Datos sintéticos
Faker (37.6.0) se usa para generar datos de prueba en el sembrado.
Frontend (React / Vite)
| Componente | Paquete | Versión |
|---|---|---|
| Librería UI | react / react-dom |
^18.2.0 |
| Bundler / dev server | vite |
^7.1.2 |
| Plugin React | @vitejs/plugin-react |
^5.0.0 |
| Componentes UI | @mui/material |
^5.15.20 |
| Iconos | @mui/icons-material |
^5.15.20 |
| Tablas de datos | @mui/x-data-grid |
^8.21.0 |
| Selectores de fecha | @mui/x-date-pickers |
^8.27.0 |
| Vista de árbol | @mui/x-tree-view |
^8.14.0 |
| Estado servidor | @tanstack/react-query |
^5.90.3 |
| Cliente HTTP | axios |
^1.7.2 |
| Routing | react-router-dom |
^6.23.1 |
| Editor rich text | @tiptap/react + extensiones |
^2.26.x |
| Calendario | @fullcalendar/react |
^6.1.19 |
| Gráficas | recharts |
^3.2.1 |
| Drag & drop | @dnd-kit/*, @hello-pangea/dnd |
^6.3 / ^18.0 |
| Formularios | react-hook-form |
^7.64.0 |
| Decodificar JWT | jwt-decode |
^4.0.0 |
| Notificaciones | notistack, react-hot-toast, react-toastify |
— |
| Números/decimales | decimal.js, mathjs, react-number-format |
— |
Scripts del frontend
npm run dev # servidor de desarrollo (Vite, puerto 5173)
npm run build # build de producción → dist/
npm run lint # ESLint
npm run preview # previsualizar el build
Linting
El frontend usa ESLint 9 (flat config) con eslint-plugin-react-hooks y
eslint-plugin-react-refresh.