Little Lemon es una API RESTful desarrollada con Django y Django REST Framework para gestionar un restaurante. La aplicación permite administrar el menú, reservas y autenticación de usuarios.
- Gestión de menú (crear, leer, actualizar y eliminar elementos del menú)
- Sistema de reservas de mesas
- Autenticación de usuarios mediante tokens
- API RESTful completa
- Soporte para bases de datos SQLite y PostgreSQL
- Python 3.8 o superior
- Django 5.1 o superior
- Django REST Framework
- PostgreSQL (opcional, SQLite por defecto)
git clone https://github.com/tu-usuario/LiteLemonn.git
cd LiteLemonn
python -m venv venv
venv\Scripts\activate
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
No se requiere configuración adicional. Django utilizará SQLite por defecto.
- Instalar PostgreSQL desde el sitio oficial
- Crear una base de datos llamada 'littlelemon'
- Crear un archivo
.env
en la raíz del proyecto con el siguiente contenido:
DB_ENGINE=django.db.backends.postgresql
DB_NAME=littlelemon
DB_USER=postgres
DB_PASSWORD=tu_contraseña
DB_HOST=localhost
DB_PORT=5432
SECRET_KEY=tu_clave_secreta
DEBUG=True
cd littlelemon
python manage.py makemigrations
python manage.py migrate
python manage.py createsuperuser
python manage.py runserver
El servidor estará disponible en http://127.0.0.1:8000/
littlelemon/
├── littlelemon/ # Configuración principal del proyecto
├── restaurant/ # Aplicación principal
│ ├── models.py # Modelos de datos
│ ├── views.py # Vistas y lógica de negocio
│ ├── urls.py # Configuración de URLs
│ ├── serializers.py # Serializadores para la API
│ ├── static/ # Archivos estáticos
│ └── templates/ # Plantillas HTML
└── tests/ # Pruebas automatizadas
POST /auth/token/login/
- Obtener token de autenticaciónPOST /auth/token/logout/
- Cerrar sesión (invalidar token)POST /restaurant/api-token-auth/
- Obtener token (método alternativo)
GET /restaurant/menu-items/
- Listar todos los elementos del menúPOST /restaurant/menu-items/
- Crear un nuevo elemento del menúGET /restaurant/menu-items/{id}/
- Obtener detalles de un elemento del menúPUT /restaurant/menu-items/{id}/
- Actualizar un elemento del menúDELETE /restaurant/menu-items/{id}/
- Eliminar un elemento del menú
GET /restaurant/booking/tables/
- Listar todas las reservas (requiere autenticación)POST /restaurant/booking/tables/
- Crear una nueva reserva (requiere autenticación)GET /restaurant/booking/tables/{id}/
- Obtener detalles de una reserva (requiere autenticación)PUT /restaurant/booking/tables/{id}/
- Actualizar una reserva (requiere autenticación)DELETE /restaurant/booking/tables/{id}/
- Eliminar una reserva (requiere autenticación)
GET /restaurant/message/
- Obtener mensaje protegido (requiere autenticación)
curl -X POST http://127.0.0.1:8000/auth/token/login/ \
-H "Content-Type: application/json" \
-d '{"username":"tu_usuario","password":"tu_contraseña"}'
curl -X GET http://127.0.0.1:8000/restaurant/menu-items/
curl -X POST http://127.0.0.1:8000/restaurant/booking/tables/ \
-H "Authorization: Token tu_token" \
-H "Content-Type: application/json" \
-d '{"name":"Juan Pérez","no_of_guests":4,"booking_date":"2023-12-25T19:30:00Z"}'
Para ejecutar las pruebas automatizadas:
python manage.py test
- Haz un fork del repositorio
- Crea una rama para tu característica (
git checkout -b feature/nueva-caracteristica
) - Haz commit de tus cambios (
git commit -am 'Añadir nueva característica'
) - Haz push a la rama (
git push origin feature/nueva-caracteristica
) - Crea un nuevo Pull Request
Este proyecto está licenciado bajo la Licencia MIT - ver el archivo LICENSE para más detalles.