diff --git a/docs/hackathon.ipynb b/docs/hackathon.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..a5e39673c777c7e5c06d4dadc7e14b5c6be20073
--- /dev/null
+++ b/docs/hackathon.ipynb
@@ -0,0 +1,353 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "id": "bf1e1f14-3a8f-4346-9268-0638f16257f2",
+   "metadata": {},
+   "source": [
+    "# Agricultura Familiar Conectada: Plataforma Web para Optimizar Cultivos con NDVI y NDWI"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "d9e05d42-0175-41fd-a589-680e8354f145",
+   "metadata": {},
+   "source": [
+    "### Casos de estudio\n",
+    "\n",
+    "* Cuenca del río Grande en el área Central de Panamá"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "ae13de6f-8a8f-4bbe-995e-b1e1750b9999",
+   "metadata": {},
+   "source": [
+    "### Objetivo General\n",
+    "\n",
+    "\"Desarrollar una plataforma web innovadora y accesible para agricultores familiares, basada en cálculos de los índices NDVI y NDWI, que les permita mejorar la toma de decisiones y optimizar el manejo de cultivos mediante el monitoreo de la salud de las plantas y la disponibilidad de agua en sus terrenos agrícolas ee identificar posibles zonas inundables en el area.\""
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "622f4ddd-b1ce-447d-83c4-b0f5c8538271",
+   "metadata": {},
+   "source": [
+    "### Objetivos Específicos\n",
+    "\n",
+    "* Desarrollar la plataforma web: Crear una plataforma en línea que sea intuitiva, fácil de usar y accesible desde diversos dispositivos    (como computadoras, tabletas y teléfonos móviles) para garantizar que los agricultores familiares puedan acceder a ella y utilizarla de manera efectiva.\n",
+    "*  Integrar datos de teledetección: Automatizar la descarga de datos de los satilites y delimitados por las parcelas que el usuario seleccione.\n",
+    "* Identificar la calidad de la cobertura vegetal\n",
+    "* Identificar las potencialidades de concentración de agua superficial\n",
+    "* Definir los principales usos de suelo\n",
+    "* Delimitación de áreas de inundación por influencia topográfica\n",
+    "* Establecer bases de datos de parcelas agrícolas\n",
+    "* Implementar alertas y notificaciones cuando se detecten cambios significativos en los índices NDVI y NDWI, señalando posibles situaciones de estrés hídrico o problemas en el crecimiento de los cultivos.\n",
+    "* Facilitar la interacción y colaboración al implementar funciones de interacción social en la plataforma para que los agricultores familiares puedan compartir experiencias, hacer preguntas y recibir asesoramiento de otros agricultores y expertos agrícolas."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "5c773f94-cbd3-4bc4-9a9c-73f23173ca1d",
+   "metadata": {},
+   "source": [
+    "## Metodología\n",
+    "\n",
+    "### Planteamiento del problema\n",
+    "\n",
+    "Las áreas geográficas de provincias centrales en Panamá presentan características naturales morfológicas favorables para los procesos de inundaciones.  Estas áreas geográficas presentan importantes actividades económicas de explotación del sector primario y sobresalientes ecosistemas.\n",
+    "De igual manera nuestros agricultores se enfrentan a retos nunca antes vistos, fenómenos climáticos extremos como sequias, inundaciones, Ciclones tropicales, degradación de la tierra, entre otros. Estos fenómenos naturales alteran en gran medida los valores nutricionales y químicos de los suelos en que los cultivos regularmente se desarrollan. \n",
+    "\n",
+    "Mediante el presente análisis, se proyecta identificar las áreas potenciales de concentración de agua superficial como datos relevantes para delimitar áreas de inundación por la naturaleza del territorio y como potencialidad para el aprovechamiento del recursos hídricos para actividades económicas importantes como la agricultura."
+   ]
+  },
+  {
+   "attachments": {},
+   "cell_type": "markdown",
+   "id": "4d5b2e96-7255-487f-81f9-ab9ecc136d17",
+   "metadata": {},
+   "source": [
+    "## Procedimiento\n",
+    "\n",
+    "1. Delimitacion de Zonas agricolas mediante el uso de mapa de cobertura boscosa y uso de suelo gestionando de información de carácter satelital del sitio de Copernicus y procesadas en QGIS 3.22"
+   ]
+  },
+  {
+   "attachments": {},
+   "cell_type": "markdown",
+   "id": "595feab2-b299-4eed-89d6-629021683bdc",
+   "metadata": {},
+   "source": [
+    "<img src=\"./img/landcover.png\" />"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "9c2060e1-9132-425d-be8f-a43790e150b3",
+   "metadata": {},
+   "source": [
+    "# for Raster files 'tiff' manipulation\n",
+    "import rasterio\n",
+    "# libraries for array manipulation\n",
+    "import numpy as np\n",
+    "import pandas as pd"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 38,
+   "id": "c177b48b",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def readTiffBand(tiff_file, band_number):\n",
+    "    \"\"\"\n",
+    "    Reading the specific band from the 'tiff' file.\n",
+    "    \"\"\"\n",
+    "    with rasterio.open(tiff_file) as dataset:\n",
+    "        band = dataset.read(band_number)\n",
+    "    return band"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "a18e63b6-1b41-4f15-aeca-676956e3d3cb",
+   "metadata": {},
+   "source": [
+    "2. Calculamos el Índice Normalizado de Diferencia de Vegetación, utilizando codigos en Python\n",
+    "\n",
+    "NDVI = (NIR-Red) / (NIR+Red)\n",
+    "\n",
+    "NIR=  luz del infrarrojo cercano y \n",
+    "Rojo= luz roja visible\n",
+    "\n",
+    "Entre los valores de referencia de índice que se interpretarán calculando el NDVI, se encuentran los siguientes:\n",
+    "\n",
+    " | Min | Max  |         State               |\n",
+    "|------|------|-----------------------------|\n",
+    "| 0.1  | 0.2  | Suelo desnudo               |\n",
+    "| 0.2  |  1   |   Plantas                   |\n",
+    "| 0.5  | 0.5  | Vegetación densa y saludable|\n",
+    "| 0.2  | 0.5  | Vegetación dispersa         |\n",
+    "\n",
+    "Valores negativos = Concentración de agua, estructuras artificiales y rocas entre otros.\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 22,
+   "id": "5868bef0",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def calculateNDVI(band_red, band_nir):\n",
+    "    \"\"\"\n",
+    "    Calculating NDVI index given the red and near infrared band.\n",
+    "    \"\"\"\n",
+    "    \n",
+    "    # In case you don't have cero values over the bands\n",
+    "    #ndvi = (band_nir - band_red) / (band_nir + band_red)\n",
+    "    \n",
+    "    # Cero values won't be valid\n",
+    "    element1 = (band_nir - band_red)\n",
+    "    element2 = (band_nir + band_red)\n",
+    "    \n",
+    "    ndvi = np.divide(element1, element2, out=np.zeros_like(element1), where=element2!=0)\n",
+    "    \n",
+    "    return ndvi"
+   ]
+  },
+  {
+   "attachments": {},
+   "cell_type": "markdown",
+   "id": "64302660-61a1-445b-a35c-3ebfafb71c8a",
+   "metadata": {},
+   "source": [
+    "<img src=\"./img/NDVI.png\" />"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "c87217b4-0fcd-46c5-a492-4d99c8be0be6",
+   "metadata": {},
+   "source": [
+    "4. Cálculo de Índice de Agua de Diferencia Normalizada (NDWI), con la finalidad de identificar concentraciones de  agua sobre la superficie de la tierra.  Se aplicará la siguiente fórmula\n",
+    "\n",
+    "NDWI = (Green – NIR)/(Green + NIR)\n",
+    "\n",
+    "Green = luz de banda verde\n",
+    "NIR = luz del infrarrojo cercano\n",
+    "| Min | Max  |         State                        |\n",
+    "|------|-----|--------------------------------------|\n",
+    "| 0.2  | 1   | Superficie del agua                  |\n",
+    "| 0,0  | 0,2 |  Inundación, humedad                 |\n",
+    "|- 0,3 | 0,0 | Sequía moderada, superficies sin agua| \n",
+    "| -1   | -0,3| Sequía, superficies sin agua         |\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 23,
+   "id": "6a97d07d",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def calculateNDWI(band_green, band_nir):\n",
+    "    \"\"\"\n",
+    "    Calculating NDWI index given the green and near infrared band.\n",
+    "    \"\"\"\n",
+    "    \n",
+    "    # In case you don't have cero values over the bands\n",
+    "    #ndwi = (band_green - band_nir) / (band_green + band_nir)\n",
+    "    \n",
+    "    \n",
+    "    # Cero values won't be valid\n",
+    "    element1 = (band_green - band_nir)\n",
+    "    element2 = (band_green + band_nir)\n",
+    "    \n",
+    "    ndwi = np.divide(element1, element2, out=np.zeros_like(element1), where=element2!=0)\n",
+    "    \n",
+    "    return ndwi"
+   ]
+  },
+  {
+   "attachments": {},
+   "cell_type": "markdown",
+   "id": "71134f4a-04fe-4976-9f16-4b2bea08db92",
+   "metadata": {},
+   "source": [
+    "<img src=\"./img/NDWI.png\" />"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 24,
+   "id": "3ba41e31",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def write_index_to_tiff(index_array, output_tiff_file, tiff_metadata):\n",
+    "    \"\"\"\n",
+    "    Write the computed index array to the new 'tiff' file with the same metadata as the input 'tiff' file.\n",
+    "    \"\"\"\n",
+    "    \n",
+    "    with rasterio.open(output_tiff_file, 'w', **tiff_metadata) as dst:\n",
+    "        dst.write(index_array, 1)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 25,
+   "id": "d8bdbf9f",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def update_index_metadata(band_file, name_index, index_array):\n",
+    "    \"\"\"\n",
+    "    Update metada from the computed index array\n",
+    "    \"\"\"\n",
+    "    \n",
+    "   # Reading metadata from 'tiff' file\n",
+    "    with rasterio.open(band_file) as dataset:\n",
+    "        tiff_metadata = dataset.profile\n",
+    "\n",
+    "    # Updating metadata from computed index array\n",
+    "    tiff_metadata.update(count=1, dtype=str(index_array.dtype))\n",
+    "\n",
+    "    # Saving computed index array to a 'tiff' file\n",
+    "    output_index_tiff = f'./outputs/output_{name_index}.tif'\n",
+    "    write_index_to_tiff(index_array, output_index_tiff, tiff_metadata)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 26,
+   "id": "6a1e0f4f",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Reading green band (band 3), red band (band 4) and near infrared band (band 8) from 'tiff' files\n",
+    "band3_file = './Files/sentinel_2/banda_3/T17PNK20230427T155529B03_10m.tif'\n",
+    "band4_file = './Files/sentinel_2/banda_4/T17PNK20230427T155529B04_10m.tif'\n",
+    "band8_file = './Files/sentinel_2/banda_8/T17PNK20230427T155529B08_10m.tif'\n",
+    "\n",
+    "band_green = readTiffBand(band3_file, 1).astype('float64')\n",
+    "band_red = readTiffBand(band4_file, 1).astype('float64')\n",
+    "band_nir = readTiffBand(band8_file, 1).astype('float64')\n",
+    "\n",
+    "\n",
+    "# Calculating NDVI\n",
+    "ndvi = calculateNDVI(band_red, band_nir)\n",
+    "update_index_metadata(band8_file, \"ndvi\", ndvi)\n",
+    "\n",
+    "\n",
+    "# Calculating NDWI\n",
+    "ndwi = calculateNDWI(band_green, band_nir)\n",
+    "update_index_metadata(band8_file, \"ndwi\", ndwi)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 27,
+   "id": "75bcf2dd",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "#Dataset for the calculated ndvi index\n",
+    "df_ndvi = pd.DataFrame(ndvi)\n",
+    "df_ndvi.to_csv(\"ndvi_index.csv\", index=False)\n",
+    "#df_ndvi"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 28,
+   "id": "3d50f7f7",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "#Dataset for the calculated ndwi index\n",
+    "df_ndwi = pd.DataFrame(ndwi)\n",
+    "df_ndwi.to_csv(\"ndwi_index.csv\", index=False)\n",
+    "#df_ndwi"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "889a6819",
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "836a614b-9dcb-44c6-8114-dd96b52fd513",
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3 (ipykernel)",
+   "language": "python",
+   "name": "python3"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.10.6"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}