Skip to content

elmalba/la-tienda

Repository files navigation

Este es un proyecto en Next.js con el fin de explicar cómo desplegar una tienda con su respectiva base de datos desde vercel y poder hacer la reportería desde Grafana.

Requerimientos:

  • Tener instalado Node.js versión 18 o superior.
  • Tener cuenta en GitHub 1
  • Tener cuenta en Vercel.com
  • Tener cuenta en Grafana

Pasos:

  1. Forkear este repositorio en GitHub a tu propio repo de GitHub 2 3

  2. Crear una cuenta en Vercel.com 4 5 6 7

  3. Conectar tu cuenta de Github a Vercel.com 8 9

  4. Importar el Proyecto la-tienda a tu cuenta de Vercel 10

  5. No te preocupes, te va a dar un error cuando se te esté desplegando la aplicación. :) 11 13

  6. Ir a STORAGE y conectar una base de datos en POSTGRES 14 15 16 17 18

  7. Conectar el proyecto la-tienda a la base de datos de POSTGRES 19 20

  8. Clonar el proyecto a tu computador local 21 instalar git no es necesario si se usa linux 22

git clone $URL
cd la-tienda
npm install
export POSTGRES_URL= $DATABASE
npx prisma migrate dev
npx prisma db seed

n-25 n-24 n-23 n-22

  1. Volver a Vercel, a DEPLOYMENTS y re-deployar la aplicación n-21 n-20 n-18
  2. Ahora en la aplicación se puede utilizar, tocando el boton VISIT. n-17
  3. FELICITACIONES! Puedes probar la aplicación.

Reportería con Grafana

  1. Ir a Grafana y crearse una cuenta conectando tu cuenta de GitHub.
  2. Instanciar un Grafana
  3. Crear un datasource
  4. Agregar la configuración que venga desde el storage de Vercel
  5. Crear Gráficos.

Consultas de SQL

Usuarios que han comprado en la tienda y sus monto total.

select sum,social_name FROM (select  sum(price), sale_id from sales_details group by sale_id) as t1
JOIN sales on sales.id=t1.sale_id JOIN users on sales.user_id=users.id 

Nombre del usuario que más ha comprado.

select social_name FROM (select max(sum) 
FROM (select SUM(price*quantity) 
FROM sales_details JOIN sales on sales.id=sales_details.sale_id GROUP BY user_id) as t1) as t2 JOIN (select user_id,  SUM(price*quantity) 
FROM sales_details JOIN sales on sales.id=sales_details.sale_id GROUP BY user_id) as t3 on t3.sum=t2.max 
JOIN users on users.id=t3.user_id

Authors:


License

CC0

Nuestros proyectos se construyen con la mentalidad de las aplicaciones de código abierto, utilizando la licencia MIT.