Proyectos
=========

La entrega de los proyectos debe realizarse compartiendo un **repositorio
público de GitHub** que incluya los archivos de configuración de **GitHub
Codespaces**, de forma que se especifique el software y las librerías necesarias
para la ejecución del proyecto.

Cuando se indique en la descripción del proyecto, también será necesario contar
con una instancia en **AWS**, cuya configuración deberá estar automatizada
mediante **Ansible**.

Además, se deberá incluir un enlace a un **video con duración máxima de cinco
minutos**, en el que se explique el código, su funcionamiento y las decisiones
de diseño.

Proyectos disponibles:

1. `GoodReads <https://github.com/mariosky/GoodReads>`_
2. `MyMovies <https://github.com/mariosky/MyMovies>`_

Proyectos y materiales del curso
================================

A lo largo del curso se utilizan distintos repositorios como apoyo al aprendizaje,
actividades guiadas y proyectos formales. Estos repositorios permiten explorar de
manera progresiva las tecnologías y arquitecturas utilizadas en el desarrollo de
aplicaciones web modernas.

Infraestructura y herramientas
-------------------------------

**Ansible y automatización**

Repositorio con *playbooks* y ejemplos para la automatización de entornos de
desarrollo y despliegue:

- `webdev-playbooks (Ansible) <https://github.com/mariosky/webdev-playbooks>`_

**Hub del curso**

Repositorio principal del curso, que centraliza material, documentación y enlaces
a los distintos proyectos y tutoriales:

- `Programación Web Hub <https://github.com/mariosky/ProgWeb>`_

Actividades guiadas
-------------------

**WebRequestHandler**

Actividad guiada que introduce conceptos básicos del manejo de peticiones web.
El desarrollo se realiza mediante *commits* incrementales que muestran la evolución
del código paso a paso.

- `WebRequestHandler <https://github.com/mariosky/WebRequestHandler>`_

Tutoriales de tecnologías base
------------------------------

**HTML y CSS**

Material introductorio para el desarrollo de interfaces web utilizando HTML y CSS:

- `Tutoriales HTML y CSS <https://github.com/mariosky/ProgWeb/tree/main/Tutoriales/css>`_

**JavaScript**

Introducción al lenguaje JavaScript y su uso en el desarrollo del lado del cliente:

- `Tutoriales JavaScript (ProgWeb) <https://github.com/mariosky/ProgWeb/tree/main/Tutoriales/javascript>`_
- `Repositorio JavaScript <https://github.com/mariosky/javascript>`_

Proyectos del curso
-------------------

**Proyecto 1 – GoodReads**

Proyecto enfocado en la construcción de un servidor web mínimo, integrando una API
y almacenamiento de datos en Redis.

- `GoodReads <https://github.com/mariosky/GoodReads>`_
- `GoodReads (solución) <https://github.com/mariosky/GoodReadsSolution>`_

**Proyecto 2 – MyMovies**

Proyecto desarrollado con Django que integra backend, base de datos y vistas web
para la gestión de información.

- `MyMovies <https://github.com/mariosky/MyMovies>`_
- `MyMovies (ejemplo) <https://github.com/mariosky/MyMoviesExample>`_
- `misPelis <https://github.com/mariosky/mispelis>`_
- `peliculas <https://github.com/mariosky/peliculas>`_

**Proyecto 3 – Artworks**

Proyecto centrado en el análisis y desarrollo de una aplicación a partir de una
especificación detallada, reforzando el diseño y la estructuración del software.

- `ArtTest <https://github.com/mariosky/ArtTest>`_
- `Artworks <https://github.com/mariosky/artworks>`_

**Proyecto 4 – ImageService**

Proyecto de arquitectura distribuida y orientada a eventos, que integra servicios
independientes y un cliente web moderno.

- `file-upload <https://github.com/mariosky/file-upload>`_
- `file-upload-client <https://github.com/mariosky/file-upload-client>`_
- `ImageService <https://github.com/mariosky/ImageService>`_

Procesamiento asíncrono y workers
---------------------------------

**Evo Workers**

Repositorio orientado al desarrollo de sistemas basados en eventos y procesamiento
asíncrono mediante *workers*, utilizado como apoyo en temas avanzados del curso.

- `event-driven <https://github.com/mariosky/event-driven>`_

