Git Product home page Git Product logo

shopping-cart-api's Introduction

README

Índice

  1. Proceso
  2. Puntos Flojos
  3. Mejora del Sistema
  4. Problemas
  5. API Endpoints
  6. Despliegue
  7. Tutorial

Proceso

Crear modelos  
Crear controllers
Crear rutas
Crear postman para documentar y facilitar las pruebas los endpoints
Dockerizar el proyecto 😳 
Describir cada endpoint
Pequeño tutorial de como utilizar el programa

Puntos flojos

Rendimiento en endpoints como add/remove produc
Falta de seguridad
Mal planteamiento de modelos
Mal manejo de errores

Mejora del sistema

Mal planteamiento de modelos
    * Concurrencia de dato en Productos y Eventos
    * Poniendo un campo stock me ahorraría esta concurrencia de datos.

Inheritance
    * Hacer que Productos y Eventos hereden de un modelo padre los campos
      que se repiten (precio, nombre, thumbnail y descripción).
      Mejor escalado y mejor manejo del de tipo de producto (producto o evento en este caso)

Falta de seguridad
    * Añadiría una capa de usuarios para poder mejorar la seguridad de cada carrito.
      Una capa de usuarios y tokens para más seguridad (standard jwt por ejemplo)  

Mejora de rendimiento
    * En algunos endpoints como add/remove product/event recorro un array, 
      pudiendo dar problemas de rendimiento

Errores y validaciones 
    * Me he  centrado en lo esencial del ejercicio que es un carrito de compra,
      por ende me falta muchas validaciones y errores, aquí dejo ejemplos:
		* Validar si está fuera de stock
		* Validar si existe x modelo

Problemas

* Install rails
    Instalar ruby on rails xd
* Ruby version  2.6 to > 2.7
    Mi ordenador tenía una versión de ruby antigua; visitando 3423423 foros
    pude cambiar de versión y proseguir.
* Problems with M1 :)
    Movida con el procesador de mi ordenador teniendo que volver a visitar 4534579 foros.
* Aprender ruby y rails
	Aprender este bonito lenguaje parecido a si amigo python
	y documentarme de las clases más importantes de rails
* Manejo de errores
    rails genera errores por default y no he descubierto todavía como
 	generar mis errores con mis messages personalizados	·
* Variables de entorno
    rails no cargaba bien las variables del archivo .env
    stack overflow me ayudo a quitar este simple if.
* Error al hacer migrate en docker
    Configure docker-compose y Dockerfile.
    Fui a la terminal del contendor y puse este comando: rake db:migrate.
	Hizo la migración y todo funcionaba 🙂
* Tests
    Aun no estoy familiarizado con los unit tests o cualquier otro patrón de tests
    Estoy formándome en este campo gracias!

API Endpoints

Endpoint HTTP Method Description Body
/events GET Obtain a list of all events. N/A
/events/:id GET Retrieve details of a specific event by ID. N/A
/events POST Create a new event.
{
    "name":string,
    "price":integer,
    "thumbnail":string,
    "description":string
}
/products GET Fetch a list of all products. N/A
/products/:id GET Retrieve details of a specific product by ID. N/A
/products POST Create a new product.
{
    "name":string,
    "price":integer,
    "thumbnail":string,
    "description":string
}
/carts GET Get a list of all carts. N/A
/carts/:id GET Retrieve details of a specific cart by ID. N/A
/carts POST Create a new cart. N/A
/carts/:id/products POST Add a product to a cart by ID.
{
    "products_ids":integer[]
}
/carts/:id/products DELETE Remove a product from a cart by ID.
{
    "products_ids":integer[]
}
/carts/:id/events POST Add an event to a cart by ID.
{
    "event_ids":integer[]
}
/carts/:id/events DELETE Remove an event from a cart by ID.
{
    "event_ids":integer[]
}
/tickets GET Retrieve a list of all tickets. N/A
/tickets/:id GET Fetch details of a specific ticket by ID. N/A
/tickets POST Create a new ticket.
{
    "cart_id":integer
}

DESPLIEGUE

1 Crear un archivo .env

#root dir

cp env.example .env

2 Añadir variables de entorno

#/.env
# Elige el nombre de usuario de la base de datos
export DB_USER=user
# La contraseña de la base de datos que tiene que poner la aplicación 
export DB_PASSWORD=password
# Elige el nombre de la base de datos
export DB_DATABASE=database
# Elige la contraseña para la base de datos
export DB_ROOT_PASSWORD=password

3 Build

#root dir

docker-compose up --build

4 Arrancar la base de batos

# Ir a la terminal de la aplicación en el contenedor de docker

rake db:migrate
image

Tutorial

Adjunto postman en le proyecto /shopping-cart.postman_collection.json

Crear productos y eventos

image

Repetir el proceso con sus respectivos endpoints

Crear un carrito

Cuando se crea un carrito no tiene productos y eventos por default
image

Añadir producto y eventos al carrito

Ver aquí como funciona los endpoint de añadir productos/eventos

image

Crear un ticket

Por último crear nuestro tiquet
image

Y esto sería todo muchas gracias. :)

shopping-cart-api's People

Contributors

joelforworks avatar joelnexia avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.