El propósito de este proyecto es diseñar e implementar un sistema de catálogo digital que permita visualizar, registrar, modificar y buscar rápidamente piezas arqueológicas junto con sus datos asociados, tales como imágenes, modelos 3D, etiquetas y descripciones textuales. Este sistema será fundamental para que los funcionarios del Museo de Arte Popular Americano Tomás Lago (MAPA) accedan a la información de la colección de piezas arqueológicas de manera intuitiva y amigable.
Para ejecutar la aplicación en un ambiente de desarrollo, se debe tener:
- Python 3.8 o superior
Para ejecutar la aplicación en un ambiente de producción, se deben tener:
- Docker Desktop
- Docker Compose
Para subir contenido de forma masiva, el primer paso es ubicar los archivos de la siguiente forma:
CATALOGO
├── nginx
├── backend
├── frontend
└── data
├── CH_tags.csv
├── clasificacion-forma
├── coleccion-cultura.csv
├── complete-dataset
├── metadata - descripcion.csv
├── institutions.csv
├── multimedia
└── thumbnails
Dependiendo del ambiente de ejecución se deberá ejecutar un comando distinto para cargar el contenido.
Para comenzar, se deben instalar los paquetes ejecutando el siguiente comando en la carpeta frontend
:
npm install
Para ejecutar el frontend, se debe ejecutar el siguiente comando en la carpeta frontend
:
npm start
La aplicación utiliza el paquete django-environ
para la configuración del entorno. Para ello, se debe crear un archivo .env
en la carpeta backend/catalogo_arqueologico
con las siguientes variables de entorno:
DEBUG=True
SECRET_KEY=django-secret-key
ALLOWED_HOSTS=127.0.0.1,localhost,0.0.0.0
CORS_ALLOW_ALL_ORIGINS=True
Se recomienda el uso de SQLite para el ambiente de desarrollo. Para ello, se debe configurar el archivo settings.py
ubicado en la carpeta backend/catalogo_arqueologico/catalogo_arqueologico
de la siguiente forma:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
Es necesario crear un ambiente virtual con los paquetes que están en backend/requirements.txt
. La creación y activación de un ambiente virtual varía según el sistema operativo:
Windows:
- Abra la línea de comandos (Command Prompt).
- Navegue a la carpeta del proyecto backend.
- Ejecute los siguientes comandos:
python -m venv venv
venv\Scripts\activate
pip install -r requirements.txt
Linux/macOS:
- Abra la terminal.
- Navegue a la carpeta del proyecto backend.
- Ejecute los siguientes comandos:
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
Para cargar el contenido de la base de datos, se deben ejecutar los siguientes comandos desde la carpeta que contiene manage.py
, ubicada en la ruta backend/catalogo_arqueologico
:
python manage.py migrate
python manage.py importAllData
Si se desea volver a cargar la base de datos, se debe
- eliminar la base de datos
db.sqlite3
ubicada en la carpetabackend/catalogo_arqueologico
, - eliminar las migraciones
0001_initial.py
de la carpetabackend/catalogo_arqueologico/piezas/migrations
y - eliminar el contenido de la carpeta media ubicada en
backend/catalogo_arqueologico/media
.
Luego, ubicado en la carpeta contenedora de manage.py
, se debe ejecutar el comando python manage.py makemigrations
seguido de los comandos de importación de datos mencionados anteriormente.
La aplicación tiene dos roles de usuario y dos grupos de permisos: administrador
y funcionario
. Para crear estos grupos, se debe ejecutar el siguiente comando desde la carpeta que contiene manage.py
, ubicada en la ruta backend/catalogo_arqueologico
:
python manage.py createGroups
Para crear un superusuario, se debe ejecutar el siguiente comando desde la misma carpeta anterior:
python manage.py createsuperuser
Luego, se deben seguir las instrucciones que se presentan en la terminal.
Cabe destacar que el superusuario creado no tendrá todos sus atributos definidos, por lo que se recomienda completarlos desde la interfaz de administrador de Django una vez se ejecute la aplicación por primera vez.
Desde la carpeta backend/catalogo_arqueologico
, ejecutar el siguiente comando:
python manage.py runserver
La aplicación se puede ejecutar en un ambiente de producción utilizando Docker y Docker Compose. El contenedor nginx
se encarga de servir los archivos estáticos y redirigir las peticiones al backend o frontend según corresponda.
Por un lado, se deben actualizar las variables de entorno en el archivo .env
ubicado en la carpeta backend/catalogo_arqueologico
con las siguientes variables:
DEBUG=False
SECRET_KEY=django-secret-key-prod
ALLOWED_HOSTS=mydomain.com,www.mydomain.com,subdomain.mydomain.com
CORS_ALLOW_ALL_ORIGINS=False
CORS_ALLOWED_ORIGINS=http://yourdomain.com,https://yourdomain.com,http://subdomain.yourdomain.com
POSTGRES_DB=postgres_db
POSTGRES_USER=postgres_user
POSTGRES_PASSWORD=postgres_password
DB_HOST=db
DB_PORT=5432
No olvide cambiar los valores de las variables de entorno según su configuración.
Por otro lado, es necesario cambiar la configuración de la base de datos en el archivo settings.py
ubicado en la carpeta backend/catalogo_arqueologico/catalogo_arqueologico
de la siguiente forma:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': os.getenv('POSTGRES_DB'),
'USER': os.getenv('POSTGRES_USER'),
'PASSWORD': os.getenv('POSTGRES_PASSWORD'),
'HOST': os.getenv('DB_HOST'),
'PORT': os.getenv('DB_PORT'),
}
}
Para montar la aplicación en un ambiente de producción, se deben ejecutar los siguientes comandos:
docker-compose build
docker-compose run django python manage.py migrate
docker-compose run django python manage.py collectstatic
docker-compose run django python manage.py importAllData
docker-compose run django python manage.py createGroups
docker-compose run django python manage.py createsuperuser
Para elimitar la base de datos y volver a cargar el contenido, se deben eliminar los volúmenes mediante el siguiente comando:
docker-compose down -v
Luego se deben ejecutar los comandos mencionados anteriormente.
Para ejecutar la aplicación en un ambiente de producción, se debe ejecutar el siguiente comandos:
docker-compose up