Una API REST desarrollada con Django Rest Framework para gestionar planes de entrenamiento personalizados y perfiles de usuario, se integra con OpenAI ChatGPT.
- Autenticación mediante JWT (JSON Web Tokens)
- Generación automática de planes de entrenamiento usando OpenAI
- Gestión de perfiles de usuario con preferencias de entrenamiento
- Documentación interactiva con Swagger/OpenAPI
- Tests automatizados para todos los componentes
- Internacionalización (i18n) configurada para español
- Python 3.x
- Django 5.1
- Django Rest Framework
- Simple JWT
- OpenAI API
- SQLite3
- Swagger/OpenAPI (drf-yasg)
- pytest
- Python 3.x
- pip (gestor de paquetes de Python)
- Cuenta en OpenAI (para la generación de planes)
git clone https://github.com/tu-usuario/fitness-api.git
cd fitness-api
python -m venv venv
source venv/bin/activate # Linux/Mac
venv\Scripts\activate # Windows
pip install -r requirements.txt
SECRET_KEY=tu_secret_key
OPENAI_API_KEY=tu_api_key_de_openai
python manage.py migrate
python manage.py createsuperuser
python manage.py runserver
fitness_api/
├── apps/
│ ├── training/
│ │ ├── api/
│ │ ├── services/
│ │ ├── tests/
│ ├── users/
│ │ ├── api/
│ │ ├── tests/
├── .env.example
├── fitness_backend/
├── manage.py
├── requirements.txt
La documentación completa de la API está disponible en:
- Swagger UI:
/swagger/
- ReDoc:
/redoc/
POST /token/
- Obtener token JWTPOST /token/refresh/
- Refrescar token JWT
GET /training/
- Listar planes de entrenamientoPOST /training/
- Crear nuevo planPOST /training/generate/
- Generar plan automáticoGET /training/{id}/
- Obtener plan específicoPUT /training/{id}/
- Actualizar plan completoPATCH /training/{id}/
- Actualizar plan parcialmenteDELETE /training/{id}/
- Eliminar plan
GET /users/profile/
- Obtener perfil de usuarioPUT /users/profile/
- Actualizar perfil completoPATCH /users/profile/
- Actualizar perfil parcialmentePOST /users/register/
- Registrar nuevo usuario
El proyecto utiliza variables de entorno para la configuración. Principales variables:
SECRET_KEY: Clave secreta de Django
OPENAI_API_KEY: API key de OpenAI
DEBUG: Modo debug (True/False)
El proyecto incluye tests exhaustivos para todos los componentes. Para ejecutarlos:
pytest
O para un directorio específico:
pytest apps/training/tests/
pytest apps/users/tests/