✅ Fast MVP

👇 Índice

  1. Equipo
  2. Propósito del Proyecto
  3. Tecnologías
  4. Jenkins pipeline
  5. Pruebas unitarias con Jest
  6. Postman Pruebas funcionales
  7. Escaneo con ZAP
  8. Configuración Inicial
  9. FastMVP View
  10. FastMVP API

🧑‍💻 Equipo

Nombre del equipo: 2 Semi Seniors y medio

🎸 Propósito del Proyecto

Objetivo

Fast MVP es un proyecto desarrollado en JavaScript que funciona sobreExpress.js.Su objetivo es facilitar la creación de MVPs (Minimum Viable Products) para emprendimientos y startups que necesitan construir prototipos funcionales de manera rápida y económica.

Este proyecto ofrece un backend funcional que actúa como un ORM, permitiendo que puedas interactuar con él desde el frontend de tu aplicación mediante llamadas API y el envío de parámetros en formato JSON para realizar consultas.

Fast MVP no busca reemplazar un backend completo. Su propósito es servir como una herramienta ágil para la construcción de MVPs y la validación de ideas de negocio en sus etapas iniciales.

👷 Arquitectura de Software

Fast MVP utiliza una arquitectura basada en Frontend-Backend diseñada para facilitar la creación de prototipos funcionales (MVPs) de manera ágil y económica. La estructura del proyecto incluye las siguientes capas:

  1. Backend (Express.js con Arquitectura MVC):
    • Desarrollado en JavaScript, el backend está construido sobre Express.js, empleando el patrón Modelo-Vista-Controlador (MVC) para una organización clara y eficiente del código.
    • Ofrece un backend funcional que actúa como un ORM, permitiendo realizar consultas mediante API REST y gestionar la lógica de negocio, autenticación, y operaciones de datos.
  2. Frontend:
    • Diseñado para interactuar con el backend a través de llamadas API y enviar parámetros en formato JSON.
    • Flexible en su integración con tecnologías como React, Angular, o cualquier framework que permita desarrollar interfaces dinámicas y modernas.

Nota: Fast MVP está pensado como una herramienta ágil para validar ideas de negocio en sus primeras etapas y no pretende reemplazar un backend completo.

Funcionalidades principales

🛠️ Tecnologías

Lenguajes de Programación

Frameworks

Bibliotecas

Herramientas de Construcción y Pruebas

🗿 CI/CD Pipeline

pipeline {
    agent any
    environment {
        REPO_DIR = '/home/proyects/dock-fastmvp' // Ruta completa a tu proyecto
    }
    stages {
        stage('Prepare Repository') {
            steps {
                script {
                    sh """
                        if [ ! -d "${REPO_DIR}" ]; then
                            echo "Directorio no encontrado, creando ${REPO_DIR}..."
                            mkdir -p ${REPO_DIR}
                        fi
                    """
                    if (fileExists("${REPO_DIR}/.git")) {
                        dir(REPO_DIR) {
                            sh 'git pull origin main'
                        }
                    } else {
                        dir(REPO_DIR) {
                            git credentialsId: 'github_credentials', branch: 'main', url: 'https://github.com/andritowmega/fastmvp.git'
                        }
                    }
                }
            }
        }
        // Other stages here
    }
}

FastMVP API

Las llamadas de la API para cada proyecto son dinámicas, puedes obtener datos de tus tablas, insertar datos, hacer joins y usar módulos de login y registro para manejar usuarios.

Get Data

POST http://localhost:3000/fm/api/:project/:table/get
GetData with limit
GetData with where

Insert Data

POST http://localhost:3000/fm/api/:project/:table/create

Register Module

Puedes registrar datos en las tablas creadas con los siguientes parámetros:

Se puede usar la función orderedlist para registrar un usuario con los siguientes parámetros:

POST http://localhost:3000/fm/api/:project/:table/orderedlist

Automáticamente hasheará el password en forma segura y guardará los datos en las tablas login y profile.

Login Module

Para poder usar el módulo login, que ya está listo para trabajar con middlewares y manejar las sesiones en nuestro proyecto, se debe tener las tablas del módulo Register:

POST http://localhost:3000/fm/api/:project/auth/login/token/check

Inner Join

POST http://localhost:3000/fm/api/:project/:table1/innerj/:table2
{
  "keys": {
    "id_profile": "id_profile"
  }
}

Para variantes de inner join right o left:

POST http://localhost:3000/fm/api/:project/:table1/innerj/:table2/rightPOST http://localhost:3000/fm/api/:project/:table1/innerj/:table2/left