pfo2-tareas-app

PFO2 - Programación sobre Redes

REST API desarrollada con Flask, utilizando SQLAlchemy como ORM y SQLite como base de datos para la gestión de tareas de usuarios.

📋 Descripción

Esta aplicación web permite a los usuarios gestionar sus tareas personales a través de una interfaz REST API completa. La aplicación maneja autenticación de usuarios y operaciones CRUD (Crear, Leer, Actualizar, Eliminar) para las tareas.

Ver descripción completa en githubpages Link

✨ Funcionalidades

La aplicación permite realizar las siguientes operaciones:

  1. 👤 Registrar usuarios con nombre de usuario y contraseña
  2. 🔐 Iniciar sesión con nombre de usuario y contraseña
  3. ➕ Crear tareas mediante una descripción y la opción de establecer un estado (completada o pendiente). Por defecto es pendiente
  4. 📋 Listar todas las tareas del usuario logueado
  5. ✏️ Actualizar o modificar una tarea (tanto la descripción como su estado pueden actualizarse)
  6. 🗑️ Eliminar una tarea
  7. 👋 Cerrar sesión (logout)

🛠️ Tecnologías Utilizadas

📦 Instalación y Configuración

Requisitos Previos

Instalación

  1. Clonar el repositorio
    git clone https://github.com/rocohen/pfo2-tareas-app
    cd pfo2-tareas-app
    
  2. Instalar dependencias
    pip install -r requirements.txt
    
  3. Inicializar el servidor
    python servidor.py
    

    El servidor se ejecutará en http://127.0.0.1:5000

🎯 Usuarios de Prueba

La aplicación incluye los siguientes usuarios de prueba:

Usuario Contraseña
Juan 1234
Ana 1234
Fran 1234
María 1234

🌐 API Endpoints

Autenticación

Gestión de Tareas

📱 Tipos de Respuesta

La aplicación soporta respuestas duales:

El tipo de respuesta se determina automáticamente según las cabeceras HTTP de la petición (Accept).

🖥️ Cliente de Consola

El proyecto incluye un cliente de consola (cliente.py) que despliega un menú interactivo para probar todas las funcionalidades de la aplicación.

Uso del Cliente

  1. Asegurarse de que el servidor esté ejecutándose
    python servidor.py
    
  2. En otra terminal, ejecutar el cliente
    python cliente.py
    
  3. Seguir el menú interactivo ``` 📋 CLIENTE API - MENÚ ===============================
    1. Registrar usuario
    2. Login
    3. Listar tareas
    4. Agregar tarea
    5. Actualizar tarea
    6. Eliminar tarea
    7. Salir ```

📁 Estructura del Proyecto

pfo2-tareas-app/
├── intance/
|   ├── tarea.db 
├── servidor.py             # Aplicación principal Flask
├── cliente.py              # Cliente de consola
├── requirements.txt        # Dependencias del proyecto
├── README.md               # Este archivo
├── templates/              # Templates HTML
│   ├── base.html           # Template base
│   ├── index.html          # Página de inicio/login
│   ├── tareas.html         # Dashboard de tareas
|   ├── header.html         # Template header
│   └── Error/              # Templates de error
│       ├── 404.html        # Página no encontrada
│       └── 500.html        # Error interno del servidor
└── tareas.db               # Base de datos SQLite (generada automáticamente)

🔧 Ejemplos de Uso

Crear una nueva tarea (JSON)

curl -X POST http://127.0.0.1:5000/tareas \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{"description": "Completar el proyecto", "done": false}' \
  -b cookies.txt

Listar tareas (JSON)

curl -X GET http://127.0.0.1:5000/tareas \
  -H "Accept: application/json" \
  -b cookies.txt

Actualizar una tarea (JSON)

curl -X PUT http://127.0.0.1:5000/tareas/1 \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{"description": "Tarea actualizada", "done": true}' \
  -b cookies.txt

🚀 Características Técnicas

📝 Notas Importantes

👥 Contribución

Este proyecto fue desarrollado como PFO2 de la materia Programación sobre Redes.

📄 Licencia

Este proyecto es de uso académico para la materia Programación sobre Redes.