WebApp para la gestión y consulta de competencias informáticas personales y grupales.
CompetenciApp se encarga de almacenar diferentes competencias en una base de datos vectorial. Las relaciones entre competencias son calculadas mediante un modelo de inteligencia artificial, con el fin de ofrecer al usuario relacionar o buscar competencias que podrían ser similares a las suyas. También incluye un sistema de usuarios, que facilita conocer las aptitudes de potenciales compañeros/as de proyectos, como también poder añadir competencias que el usuario haya aprendido.
- Front-end: Python (Django)
- Back-end: Base de datos PostgreSQL, conectada con el ORM de Django. Sistema vectorial soportado mediante pgvector-python
- Modelo de IA: mxbai-embed-large v1 para la vectorización de tokens y Llama 3.2 para el chatbot, ambos ejecutados mediante el Framework Ollama.
- Sistema de registro de usuarios
- Consultar las competencias de cualquier usuario
- Añadir a tu usuario nuevas competencias que hayas aprendido
- Inserción y vectorización de competencias nuevas en la base de datos
- Ver qué usuarios comparten la competencia buscada
La base de datos soporta dos competencias diferentes: Lenguajes de programación (más general) y Librerías (más específica); sin embargo, ambas están relacionadas ya que a cada librería se le asocia un lenguaje. A cada usuario se le asocian una serie de lenguajes y/o librerías, y calculando las distancias de los vectores de otras competencias, se puede obtener el nivel de similitud que tienen entre ellas. Cuanto más corta sea la distancia entre dos vectores, más similares serán las competencias.
Mendiante ficheros .csv, se pueden inicializar unos datos de prueba. Estos datos son vectorizados por la IA y añadidos a la base de datos. Los ficheros .csv contienen datos de lenguajes, librerías, usuarios y de la relación que tienen entre ellos, y ofrecen una forma de ver cómo la aplicación podría funcionar con varios usuarios y competencias diferentes. Los ficheros .csv se encuentran en resources/
En la raíz del repositorio, ejecuta el siguiente comando:
docker build -t Sprinter05/competenciapp:v1 .
Este comando genera la imagen de Docker del proyecto. Antes de ejecutarla, se deben definir las siguientes variables de entorno en un fichero llamado .env
en la raíz del proyecto:
OLLAMA_HOST = <ip>
POSTGRES_IP = <ip>
POSTGRES_PORT = <puerto>
POSTGRES_DB = <nombre_db>
POSTGRES_USER = <usuario_db>
POSTGRES_PASSWORD = <contraseña_db>
Una vez hayas definido las variables de entorno y hayas obtenido la imagen, ésta se puede ejecutar desde Docker CLI. La WebApp se ejecutará en el puerto 8000
y estará lista para ser utilizada.
- Si lo necesitas, crea un entorno virtual de Python
- Instala los requerimientos con
pip install -r requirements.txt
- Crea las migraciones de la base de datos con
python manage.py makemigrations core
y aplícalas conpython manage.py migrate
- Antes de ejecutar, asegúrate que las variables de entorno necesarias (mostradas arriba) están definidas en el fichero de variables de entorno
.env
- Finalmente, inicia el servidor con
python manage.py runserver
Consulta requirements.txt
para obtener informacíon sobre los requerimientos del programa.
Este proyecto fue realizado durante el evento HackUDC 2025, en la Universidade da Coruña, por el siguiente grupo de desarrolladores:
Más información sobre contribuciones individuales en CONTRIBUTORS.md
Este repositorio sigue la GNU General Public License (GPLv3). Se permite la copia y distribución de copias literales de esta licencia, pero no se permite su modificación. Para más información, consulta LICENSE