Este proyecto es una API construida con Django y Graphene que expone datos del universo de Star Wars usando GraphQL. Utiliza contenedores Docker para facilitar su despliegue y ejecución.
- API GraphQL para consultar:
- Personajes
- Planetas
- Películas
- Modelado relacional usando Django ORM
- Backend desarrollado con Django
- GraphQL usando Graphene
- Contenerización con Docker y Docker Compose
- Carga de datos desde fixtures
- Pruebas unitarias e integradas
- Python 3.12+
- Django 4.2.23
- Graphene-Django 3.2.3
- SQLite (modo desarrollo)
- Docker & Docker Compose
- Clona el repositorio:
git clone https://github.com/d1egoM/starwars-api-lqn
cd starwars-api-lqn- Construye y levanta los servicios:
docker compose up --build- Aplica las migraciones y carga datos:
docker compose exec starwars_api python manage.py migrate
docker compose exec starwars_api python manage.py loaddata initial_data- Accede a la interfaz GraphQL en:
http://localhost:8000/graphql/
Este proyecto requiere un archivo .env para configurar las variables de entorno necesarias para ejecutar el backend correctamente. A continuación, se indican los pasos para crear este archivo y las variables que deben ser definidas.
En la raíz del proyecto, crea un archivo llamado .env
touch .envDJANGO_SETTINGS_MODULE=starwars_api.settings.dev
DJANGO_SECRET_KEY='secret key'
DJANGO_DEBUG=True # Usa False en producción
DJANGO_ALLOWED_HOSTS=localhost,127.0.0.1
docker compose exec starwars_api python manage.py test├── starwars
│ ├── admin.py
│ ├── apps.py
│ ├── fixtures
│ │ └── initial_data.json
│ ├── migrations
│ ├── models.py
│ ├── mutations.py
│ ├── queries.py
│ ├── schema.py
│ ├── tests
│ │ ├── test_graphql.py
│ │ └── test_models.py
│ ├── types.py
│ └── views.py
└── starwars_api
├── asgi.py
├── db.sqlite3
├── settings
│ ├── base.py
│ ├── dev.py
│ └── prod.py
├── urls.py
└── wsgi.py
├── Dockerfile
├── README.md
├── docker-compose.yml
├── manage.py
├── requirements.txt
└── schema.py
query {
allCharacters {
id
name
homeworld {
name
}
movies {
title
}
}
}Este proyecto es de uso educativo y libre. No afiliado con Disney o Lucasfilm.
Diego Martínez – https://github.com/d1egoM