Skip to content

Fast Order API una API Rest robusta y segura diseñada para la gestión integral de pedidos, productos y usuarios. Permite a los desarrolladores optimizar el flujo de compra, desde el registro de nuevos usuarios y la administración detallada del catálogo de productos (creación, consulta, actualización) hasta la realización y seguimiento de pedidos.

Notifications You must be signed in to change notification settings

puriihuaman/fast-order

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

55 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📦 Sistema de Gestión de Pedidos - Fast Order

Fast Order es una API Rest que permite gestionar pedidos de productos de manera eficiente y segura.
Está pensada para facilitar operaciones como registrar usuarios, gestionar productos y realizar pedidos, todo en tipo real y de forma asincrónica.


🎯 Objetivos del proyecto

  • Desarrollar un sistema de gestión de pedidos con operaciones CRUD (Crear, Leer, Actualizar y Eliminar).
  • Organizar el código utilizando la arquitectura MVC para lograr una organización clara del código.
  • Proteger los datos y endpoints, integrando un mecanismo de seguridad con JWT y Spring Security.
  • Asincronía y comunicación eficiente mediante Apache Kafka.

🧩 Requisitos funcionales

  • Gestión de usuarios: registro, login y autenticación con JWT.
  • Gestión de productos: operaciones CRUD para productos.
  • Gestión de pedidos: creación, modificación y consulta de pedidos.
  • Notificaciones asincrónicas de cambios en los pedidos mediante Kafka.

🛠 Tecnologías utilizadas

  • Spring Boot: Framework principal para el desarrollo del backend.
  • JPA (Hibernate): Mapeo objeto-relacional para la persistencia de datos.
  • Apache Kafka: Comunicación asincrónica y notificaciones.
  • Spring Security y JWT: Autenticación y autorización seguras.
  • PostgreSQL: Motor de base de datos.
  • Postman: Testing y documentación de endpoints.
  • Swagger / Open API: Documentación de endpoints.

🧱 Arquitectura del proyecto

El proyecto sigue una estructura organizada por capas:

  • Controladores: Manejan la lógica de las peticiones HTTP.
  • Servicios: Contienen la lógica de negocio.
  • Repositorios: Administran la persistencia de datos.

📂 Estructura de carpetas

fast-order/
├── src/
│   ├── main/
│   │   ├── java
│   │   │   └── fast_order/
│   │   │       ├── controller/
│   │   │       ├── repository/
│   │   │       └── service/
│   │   └── resources/
│   └── test/
├── README.md
├── .env.demo
├── .gitignore
└── pom.xml

🏷 Tablas o entidades

Entidad role.

Campo Tipo Descripción
id UUID Identificador único
role_name Enum (RoleType) Nombre del rol
description String Descripción del rol

Entidad user.

Campo Tipo Descripción
id UUID Identificador único
name String Nombre completo
email String Correo electrónico
password String Contraseña de usuario
sign_up_date Date Fecha de registro
total_spent Double Total de gastos
role Role (RoleEntity) Rol del usuario

Entidad product.

Campo Tipo Descripción
id UUID Identificador único
name String Nombre del producto
stock String Número de existencias
price Double Precio del producto
description String Detalles del producto

Entidad order.

Campo Tipo Descripción
id UUID Identificador único
amount Integer Cantidad de productos
user User(UserEntity) Identificador del usuario
product Product(ProductEntity) Identificador del producto
status Enum(OrderStatus) Estado del pedido
created_at Date Fecha de creación

Entidad notification.

Campo Tipo Descripción
id UUID Identificador único
message String Mensaje de notificación
order Order(OrderEntity) Identificador de la orden
created_at Date Fecha de creación

⚙ Instalación y Configuración

  1. Clonar repositorio

    git clone https://github.com/puriihuaman/fast-order.git
    cd fast-order
  2. Crear base de datos y esquema en PostgreSQL

    • Crear la base de datos en local:
      CREATE DATABASE db_name WITH OWNER = postgres ENCODING = 'UTF8';
    • Crear el esquema:
      CREATE SCHEMA schema_name;
  3. Tener instalado Apache Kafka

    Descargar Apache Kafka
    Abrir una terminal y ejecutar los siguientes comandos en ventas distintas.

    • Iniciar el servidor de Zookeeper:
      .\bin\windows\zookeeper-server-start.bat .\config\zookeeper.properties
    • Iniciar el servidor de Kafka:
      .\bin\windows\kafka-server-start.bat .\config\server.properties
  4. Configurar variables de entorno

    📄 Crear archivo .env con las siguientes variables de entorno (revisar el archivo .env.demo):

    # Configuración de la base de datos
    SPRING_DATASOURCE_URL=jdbc:postgresql://localhost:5432/db_name?currentSchema=schema_name
    SPRING_DATASOURCE_USERNAME=your_user
    SPRING_DATASOURCE_PASSWORD=your_password
    
    # Seguridad
    SECURITY_USER_NAME=admin
    SECURITY_USER_PASSWORD=admin
    
    # JWT
    SECRET_KEY=62d84588dd8e4b359...
    TIME_EXPIRATION=86400000
    
    # KAFKA
    KAFKA_TOPIC_NAME=fast-order-topic
    KAFKA_TOPIC_GROUP=kafka-fast-order-group
  5. Ejecutar la aplicación.

    mvn spring-boot:run
  6. Probar la API


📃Manual de usuario

Note

Para más información de como consumir la API, ver el siguiente archivo Manual de usuario.


🤝 Contribución

Este es un proyecto de la comunidad Bytes Colaborativos. Si deseas aportar:


🌐 Comunidad

¿Quieres unirte o seguir las iniciativas de Bytes Colaborativos?

Desarrollado

Autor: Pedro Purihuaman

About

Fast Order API una API Rest robusta y segura diseñada para la gestión integral de pedidos, productos y usuarios. Permite a los desarrolladores optimizar el flujo de compra, desde el registro de nuevos usuarios y la administración detallada del catálogo de productos (creación, consulta, actualización) hasta la realización y seguimiento de pedidos.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages