Logo, una animación de memoji sonriendo

Proyecto: Sarajevo Tours, App con React y Firebase

Introducción

Proyecto de página web de una tienda (ficticia) online de guías GPS para turistas. Prácticas de: React 18, React Router 6, Firebase Auth. y Firestore Database como backend. Rutas protegidas para la administración. Carrito de compra interactivo. Formulario de contacto con forms con estado. Parámetros de consulta para filtrar los productos.

Tipo:

  • Web App
  • Optimizada para móviles
  • Compañía ficticia

Herramientas:

  • CSS & HTML
  • React 18
  • React Router 6
  • Firebase backend
  • Git & GitHub
  • Netlify

En vivo:

Propósito del proyecto

En el proyecto trabajamos dos personas: mi pareja y yo, ambos alumnos del bootcamp y con un nivel de conocimientos parecido.

Después de terminar el bootcamp quisimos crear un proyecto lo más parecido posible a una web del mundo real. Decidimos crear una tienda online de venta de guías turísticas sobre la ciudad de Sarajevo. El contenido es real, las guías no.

Los requisitos eran: React, React Router y Firebase como backend de datos y Auth. y en el proceso, utilizar y aprender más sobre VSC, Vite, EsLint, Prettier, GitHub y Netlify.

Aprender a trabajar en equipo y sin guía.

Mi papel en el proyecto

Utilizando la app Figma he creado el diseño y la UI.

Posteriormente, analicé el diseño para traducirlo en HTML y CSS, estructuré el proyecto en VSC, investigué en la web cómo conectar con Firestore. Leí la documentación, aprendí y escribí el código.

Excepto en la parte de CSS reset, todo el código ha sido escrito por mí. Era una promesa no copiar el código de nadie, sino leer la documentación en MDN y buscarme la vida. Seguramente por eso hay errores de principiante, pero la web funciona bien y he aprendido muchísimo.

Tres tarjetas de ofertas

Web stack y explicación

Lugar de trabajo: Visual Studio Code. Vite con complementos EsLint y Prettier.

Figma: diseño, UI y UX.

CSS: La transformación del diseño en una app real se realizó utilizando APIs modernas de CSS. Para el layout he usado flexbox y grid y también container query, que fue realmente divertido aprender y usar. Alguna experimentación con clip-path y variables CSS.

React Router: Rutas relativas, rutas anidadas. Carga de rutas anidadas por defecto en outlet usando index. Parámetros de consulta para filtrado de datos, useLocation para capturar la ruta. Link, NavLink para enlaces. isActive en NavLinks. useNavigate para redirección si el usuario no está autenticado, etc...

React: Componentes reutilizables, props. Uso de renderizado condicional. Control de formulario con estado a través de value y onChange. useEffect para consulta de red y algunas otras oportunidades. useState, useRef. React context en dos lugares, uno para almacenar datos y otro para el carrito de compras.

Firebase: Conexión con Firestore. Iniciar aplicación, obtener datos de la colección de formularios. Dado que el conjunto de datos es muy pequeño, he cargado todo a la vez y en un react context. Seguro que en una aplicación más seria, los datos se descargarán de firebase según sea necesario por filtrado en getDocs(). Autenticación, iniciar sesión con correo electrónico y contraseña y onAuthStateChanged listener para permitir que el usuario registrado ingrese en el área protegida (rutas). Iniciar y cerrar sesión.

Netlify: Conexión de mi formulario de React, reglas de redirección para pushState en React. Implementación continua a través de GitHub.

Extras: reactMarkdown, vite-plugin-svgr

Git: commits, branches, merge, restore, push