Logo, una animación de memoji sonriendo

Proyecto: Sarajevo Tours, App con React y Firebase

Introducción

Proyecto 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 statefull forms. Query parameters para filtrar los productos.

Tipo:

  • Web App
  • Optimisada para móviles
  • Compañia ficticia

Herramientas:

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

En vivo:

Propósito del proyecto

En el proyecto hemos trabajado dos. Mi pareja y yo, ambos alumnos del bootcamp y con parecido nivel de conocimientos.

Después de terminar el bootcamp quísimos crear un proyecto lo mas parecido a una web del mundo real. Hemos decidido crear una tienda online de venta de guías turísticas alrededor de 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 mas sobre VSC, Vite, EsLint, Prettier, GitHub y Netlify.

Aprender a trabajar en equipo y sin guía.

Mi papel en el proyecto

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

Posteriormente, fue analizar el diseño para traducirlo en HTML y CSS, estructurar el proyecto en VSC, investigar en la web como conectar con Firestore. Leer la documentación, aprender y escribir el código.

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

Tres tarjetas de ofertas

Web stack y la 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 API modernas de CSS. Para Layout he usado flexbox y grid y también query container que fue realmente divertida aprender y usar. Alguna experimentación con clip-path y CSS variables.

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

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

Firebase: Conexión con Firestore. Iniciar aplicación, obtener datos colección de formularios. Dado que el conjunto de datos es muy pequeño, he cargando 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 á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 continúa a través de GitHub.

Extras: reactMarkdown, vite-plugin-svgr

Git: Git: commits, Branches, Merge, Restore, push