DineEasy es una API robusta y escalable diseñada para automatizar el proceso de reservaciones en restaurantes. Desarrollada con Django Rest Framework (DRF), esta API proporciona una solución completa para la gestión de clientes, restaurantes y reservaciones, con características avanzadas como autenticación, paginación, operaciones CRUD, sistema de permisos y documentación automática.
-
Gestión de Reservaciones:
- Crear, leer, actualizar y eliminar reservaciones.
- Listar todas las reservaciones.
- Filtrar reservaciones por estado.
- Obtener resumen de reservaciones por restaurante.
-
Gestión de Clientes:
- Registro de nuevos clientes.
- Obtener información del usuario actual.
- Listar todos los usuarios y clientes.
- Obtener resumen de reservaciones por cliente.
-
Gestión de Restaurantes:
- Listar todos los restaurantes.
- Obtener detalles de un restaurante específico.
- Obtener resumen de reservaciones por restaurante.
-
Gestión de Mesas:
- Crear, leer, actualizar y eliminar mesas.
- Listar todas las mesas.
- Obtener mesas por restaurante.
- Obtener resumen de mesas por restaurante.
-
Autenticación: Sistema seguro de autenticación basado en tokens.
-
Autorización: Control de acceso basado en roles y permisos.
-
Paginación: Resultados paginados para una mejor experiencia de usuario y rendimiento.
-
Operaciones CRUD: Soporte completo para operaciones Create, Read, Update y Delete en reservaciones, mesas y parcialmente en restaurantes y clientes.
-
Documentación Automática: Integración con Swagger para una documentación de API interactiva y actualizada.
-
Base de Datos: Soporta varios motores de bases de datos entre ellos PostgreSQL, MySQL y SQLite.
- Python 3.8+
- Django 3.2+
- Django Rest Framework 3.12+
- PostgreSQL 12+
La API estará disponible para acceder a la documentación interactiva de Swagger, visite http://localhost:8000/api/docs/.
GET /api/restaurant/: Lista todos los restaurantesGET /api/restaurant/<int:pk>/: Obtiene detalles de un restaurante específicoGET /api/restaurant/<int:restaurant_id>/reservation-summary/: Resumen de reservaciones para un restauranteGET /api/table/: Lista todas las mesas y permite crear nuevasGET /api/table/<int:pk>/restaurant/: Obtiene mesas para un restaurante específicoGET /api/table/<int:restaurant_id>/table-summary/: Resumen de mesas para un restauranteGET, PUT, DELETE /api/table/<int:pk>/: Operaciones CRUD para una mesa específica
POST /api/customer/register/: Registra un nuevo clienteGET /api/get/current/user: Obtiene información del usuario actualGET /api/users/: Lista todos los usuariosGET /api/users/customers/: Lista todos los clientesGET /api/users/customers/<int:customer_id>/customer-summary/: Resumen de reservaciones para un cliente específico
GET, POST /api/reservations/: Lista todas las reservaciones y permite crear nuevasGET, PUT, DELETE /api/reservations/<int:pk>/: Operaciones CRUD para una reservación específicaGET /api/reservations/status/: Obtiene reservaciones filtradas por estado
Siga estos pasos para configurar el proyecto en su entorno local:
-
Clonar o Descargar el repositorio:
git clone [URL del repositorio] cd [nombre del directorio] -
Crear y activar un entorno virtual:
python -m venv venv source venv/bin/activate # En Windows para activar `venv\Scripts\activate` -
Instalar las dependencias:
pip install -r requirements.txt -
Configurar la base de datos:
- Por defecto, el proyecto está configurado para usar SQLite.
- Si desea usar PostgreSQL o MySQL,
- deberá modificar la configuración de la base de datos en
settings.py.
-
Crear y aplicar las migraciones:
python manage.py makemigrations python manage.py migrate -
Crear un superusuario (opcional, pero recomendado para acceder al panel de administración):
python manage.py createsuperuser -
Ejecutar el servidor de desarrollo:
python manage.py runserver
La API ahora debería estar disponible en http://localhost:8000/api/docs/.
En futuras actualizaciones, se proporcionarán instrucciones para:
- Configurar variables de entorno para mayor seguridad
- Ajustar la configuración para diferentes entornos (desarrollo, producción)
- Integrar servicios externos (si es aplicable)