El proyecto se basa en una aplicación de gestión de inventario de indumentaria. La aplicación permite al personal de la cadena administrar el stock de productos, realizar ventas y tener una página pública (storefront) que permite a los clientes ver los productos que la tienda tiene en stock.
- Ruby 3.3.6
- Rails 8.0.0
- Database: SQLite3
$ git clone https://github.com/agosrubbini/TTPS-Ruby.git$ bundle install$ rails db:reset$ rails server$ rails db:seed- Rolify para manejar los tres roles (admin, manager, employee).
- CanCanCan para manejar las autorizaciones que tiene cada rol.
- Devise para implementar el inicio y cierre de session.
- ActiveStorage para el almacenamiento de las imagenes de los productos.
- Ransack para implementar la busqueda de productos por nombre y el filtrado por categoria.
- Kaminari para implementar la paginacion de tablas y del storefront.
-
products: para modelar los productos. Los atributos color, size son de tipo string, y tiene una relacion con la tabla categories a traves del atributo category_id, el cual solo toma un valor, por lo tanto un producto puede tener una unica categoria
-
sails: para modelar las ventas. Se relaciona con el usuario que creo la venta a traves de user_id. El campo client_dni hace referencia al DNI del cliente que se registra en la compra. El atributo is_deleted es booleano y sirve para cancelar la compra, lo que devuelve el stock al producto.
-
products_sails: es la tabla intermedia que conecta la relacion muchos a muchos entre products y sails, se relaciona con ambas tablas a traves de product_id y sail_id. El campo amount_sold es la cantidad vendida del producto y total_amount el precio total del producto para la cantidad determinada.
-
categories: representa las categorias a las que pueden pertenecer los productos. Su contenido esta cargado previamente en la base de datos.
Se pre-cargaron datos para que sea facil el uso de la aplicacion.
Usuario administrador:
- Email:
[email protected] - Contraseña:
123456
Usuario Empleado:
- Emails:
[email protected] - Contraseña:
123456