/Api-Henry-Bank

Este es el backend del proyecto final.

Primary LanguageJavaScript

Henry Bank

Nace como proyecto grupal integrador para poner en practica todas las habilidades adquiridas en el bootcamp de Soy Henry.
Es una billetera virtual en formato Mobile (apk) desarrollada en React Native.
Aplicación Mobile, que simula un banco para teléfonos celulares donde el usuario tiene la posibilidad de trasferir dinero como recibir dinero desde su cuenta, comprar venta de divisas como también de criptomonedas.


Tecnologias usadas en el Backend:


javascript logo express logo nodejs logo sequelize logo postgresql logo

Para Instalación de Dependencias:

•	npm install

Variables de Entorno

En Api-Henry-Bank crear un archivo llamado: .env que tenga la siguiente forma:

DB_USER = usuariodepostgres
DB_PASSWORD = passwordDePostgres
DB_HOST = localhost
SECRET = secretkey

Reemplazar usuariodepostgres y passwordDePostgres con tus propias credenciales para conectarte a postgres. Este archivo va ser ignorado en la subida a github, ya que contiene información sensible (las credenciales). También remplace secretkey por otra clave para el JWT (Json Web Tokens).
Adicionalmente será necesario que creen desde psql una base de datos
El contenido de client fue creado usando: Create React App.


--- Endpoints sin Token ---

REGISTER

POST - /register

    • Recibe los datos recolectados desde el formulario controlado de la ruta de registro por body.
    • Crea un registro de la persona en la base de datos relacionado con un número de cuenta y un cbu, generados una vez finalizado el registro.


    Ejemplo:
    BODY: {    
      "identity": 40123123,
      "name": "Coco",
      "lastName": "perez",
      "dateOfBirth": "123123",
      "gender": "Indefinido",
      "email": "coco.perez@gmail.com",
      "password": "coco123perez",
      "city": "caba",
      "address": "calle false 121",
      "nationality": "Argentina"
          }
    

    LOGIN

    POST - /login

      • Recibe por body los datos recolectados desde el formulario controlado de la ruta.
      • Una vez logueado recibe un token de sesión para su navegación por la app.


    Ejemplo:
    BODY:{
      "email" = "prueba@henrry.com",
      "password" = "prueba123456",
          }
    

    RESTABLECER LA CONTRASEÑA

    PUT- /forgetPassword
      • Recibe por body los datos recolectados desde el formulario controlado de la ruta para el cambio de contraseña.

    Ejemplo:
    BODY:{
      “email”: “(email del usuario)”,
      “identity”: “(identity del usuario)”,
      “password”: “(password nueva)”
          }
    

    --- Endpoints Con Token ---


    GET - /user:

      • Obtiene una lista de todos los usuarios registrados

    GET - /user/profile:

      • Obtiene detalle de un usuario.

    PUT - /user/profileImage:

      • Editar foto de perfil
    Ejemplo:
    BODY:{
      “image”: (URL de la imagen)
          }
    

    POST - /user/recharge:

      • Para el ingreso de dinero recibe por body los datos recolectados del formulario controlador de la ruta.
      • Monto mínimo para el ingreso de dinero es 100

    Ejemplo:
    BODY:{
      “amount”: 1000
          }
    

    TRANSFERENCIAS

    POST - /search
      • Recibe información por body a través de un formulario controlado para la búsqueda del usuario sea por cbu o por alias en caso de existir.

    Ejemplo con cbu:
    BODY:{
      "cbu": "2054603125568144168069"
        }
    
    Ejemplo con alias:
    BODY:{
      "alias": "coco.perez.henrybank"
        }
    

    PUT- /search/transfer

      • Una obtenida la información se efectúa la transferencia a la persona seleccionado ya sea con cbu o alias.
    Ejemplo:
    BODY:{
      "amount": "2000"
        }
    

    CRYPTOS - TODAS LAS CRIPTOMONEDAS

    GET - /crypto

      • Ingresa al apartado de criptomonedas

    GET - /crypto/balance

      • Obtiene información del saldo de las criptomonedas del usuario.

    GET - /crypto/prices/{id}

      • Devuelve un array de 30 valores (los precios en los últimos 30 días)

    POST - /crypto/buy

      • Recibe por body la información a trevés de un formulario controlado para la compra de criptomonedas.
    Ejemplo:
    BODY:{
      “amount”: 100000 (cantidad de pesos para comprar),
      “crypto”: bitcoin (nombre de la crypto),
      “price”: 150 (precio de la crypto, en dolares),
       }
    

    POST - /crypto/sell

      • Recibe por body la información a trevés de un formulario controlado para la venta de criptomonedas.
    Ejemplo:
    BODY:{
      “amount”: 0.35 (cantidad de la crypto a vender, 0.35 bitcoins por ejemplo),
      “crypto”: bitcoin (nombre de la crypto),
      “price”: 2000 (precio de la crypto, en dolares),
        }
    

    CONTACTOS

      • Crea un contacto con la información recibida por body a través de un formulario controlado.

    Ejemplo:
    BODY:{
      “id”:
      “image”:
      “name”:
      "lastName":
      "email":
      "cbu":
      "alias”
        }
    

    GET - /contacts

      • Obtiene información de los contactos

    DELETE - /contacts/{id}

      • Elimina contacto con el id seleccionado

    ADMIN

    GET - /admin/lockedStake

      • Devuelve los registros de los plazos fijos

    GET - /admin/transactions

      • Devuelve el registro de las transacciones

    GET - /admin/cryptos

      • Devuelve el registro de las criptomonedas

    PUT - /admin/enableUser

      • Bloquea al usuario que se le envía por body.
    Ejemplo:
    BODY:{
      “email”: coco@gmail.com
          }
    

    PUT - /admin/disabledUser

      • Desbloquea el usuario que le envia por body.
    Ejemplo:
    BODY:{
      “email”: coco@gmail.com
        }
    

    PUT - /admin/AdminToUser

      • Convierte en usuario al Admin que sea enviado por body.
    Ejemplo:
    BODY:
    {“email”: coco@gmail.com
      }
    

    CONTRIBUCIÓN