# ARCH - Sistema de Gestión de Documentos para Proyectos de Ingeniería

ARCH es un sistema de gestión documental diseñado específicamente para equipos de ingeniería, con el propósito de almacenar, organizar y versionar los archivos críticos de cada proyecto. La aplicación proporciona una estructura jerárquica para proyectos, control de versiones para documentos, y esquemas personalizables según el tipo de proyecto.

## Características Principales

- **Gestión de Proyectos**: Creación y organización jerárquica de proyectos
- **Control de Versiones**: Histórico completo de todas las versiones de documentos
- **Esquemas Personalizables**: Definición de tipos de documentos por proyecto
- **Sistema de Permisos**: Control de acceso granular basado en niveles de usuario
- **Arquitectura Simple**: Basada en archivos JSON para facilitar el mantenimiento y backups
- **Seguridad**: Validación de archivos y autenticación de usuarios

## Requisitos del Sistema

- Python 3.8 o superior
- Dependencias listadas en `requirements.txt`
- 500MB de espacio en disco para la instalación inicial

## Instalación

1. Clonar el repositorio:
   ```
   git clone https://github.com/tu-usuario/arch-document-manager.git
   cd arch-document-manager
   ```

2. Crear y activar un entorno virtual:
   ```
   python -m venv venv
   source venv/bin/activate  # Linux/Mac
   venv\Scripts\activate     # Windows
   ```

3. Instalar dependencias:
   ```
   pip install -r requirements.txt
   ```

4. Inicializar el sistema:
   ```
   python init_app.py
   ```

5. Crear archivo `.env` con la configuración:
   ```
   FLASK_APP=app.py
   FLASK_ENV=development
   SECRET_KEY=clave_secreta_generada_aleatoriamente
   STORAGE_PATH=storage
   ```

## Ejecución

1. Iniciar la aplicación:
   ```
   flask run
   ```

2. Acceder a la aplicación en el navegador:
   ```
   http://localhost:5000
   ```

3. Iniciar sesión con las credenciales por defecto:
   - Usuario: `admin`
   - Contraseña: `admin123`

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

## Estructura de Directorios

```
document_manager/
│
├── app.py                  # Punto de entrada de la aplicación
├── config.py               # Configuración global
├── requirements.txt        # Dependencias del proyecto
├── README.md               # Este archivo
│
├── services/               # Lógica de negocio
├── utils/                  # Utilidades generales
├── middleware/             # Middleware para Flask
├── routes/                 # Endpoints de la API
├── static/                 # Archivos estáticos (CSS, JS)
├── templates/              # Plantillas HTML
├── tests/                  # Pruebas unitarias
└── storage/                # Almacenamiento de datos
```

## Niveles de Usuario

- **Nivel 0-999**: Usuario básico (solo lectura)
- **Nivel 1000-4999**: Editor (puede subir documentos)
- **Nivel 5000-8999**: Gestor (puede crear y editar proyectos)
- **Nivel 9000-9999**: Administrador (acceso completo al sistema)

## Backups

Se recomienda realizar backups regulares del directorio `storage/`:

```bash
# Script simple de backup
tar -czf backup-$(date +%Y%m%d).tar.gz storage/
```

## Soporte

Si encuentra algún problema o tiene alguna sugerencia, por favor abra un issue en el repositorio del proyecto.

## Licencia

Este proyecto está licenciado bajo los términos de la licencia MIT.

## Running Tests

To run the test suite:
```

Credenciales de acceso por defecto:
    Usuario: admin
    Contraseña: admin123