La libreria de Software GenericSuite

La libreria de Software GenericSuite

La librería de software GenericSuite

GenericSuite es una librería de software diseñada para el desarrollo de aplicaciones backend y frontend en Python y React.js, incluyendo funcionalidades de IA.

https://genericsuite.carlosjramirez.com/

 

¿Para qué sirve GenericSuite?

GenericSuite es un conjunto de utilidades frontend y backend creadas con ReactJS y Python para ayudar a desarrollar aplicaciones ágilmente.

Funciones:

  • Editor CRUD genérico: al tener un código central de creación-lectura-actualización-eliminación que se puede parametrizar y extender, no hay necesidad de reescribir el código para cada editor de tablas.
  • Menú genérico y generador de Endpoints.
  • Abstractor de base de datos: el backend puede utilizar DynamoDB o MongoDB como almacenamiento persistente. El acceso a DynamoDB se puede hacer mediante una sintaxis de estilo MongoDB.
  • Abstractor de Framework: para desarrollar Apps con FastAPI, Chalice o Flask indistintamente.

Click aqui para ver los Repositorios

 

GenericSuite para desarrollos de Inteligencia Artificial

GenericSuite AI es un conjunto de utilidades frontend y backend creadas con ReactJS y Python para ayudar a desarrollar aplicaciones que implementan AI.

Funciones:

  • Endpoint ai_chatbot para implementar conversaciones de NLP (Procesamiento de Lenguaje Natural) basadas en las API de OpenAI o Langchain.
  • Manejo de modelos OpenAI, Google Gemini, Anthropic, Ollama y Hugging Face.
  • Manipulación de modelos e incrustaciones Clarifai.
  • Visión artificial (OpenAI GPT4 Vision, Google Gemini Vision, Clarifai Vision).
  • Procesamiento de voz a texto (OpenAI Whisper, Clarifai Audio Models).
  • Procesamiento de texto a voz (OpenAI TTS-1, Clarifai Audio Models).
  • Generador de imágenes (OpenAI DALL-E 3, Google Gemini Image, Clarifai Image Models).
  • Indexadores vectoriales (FAISS, Chroma, Clarifai, Vectara, Weaviate, MongoDBAtlasVectorSearch)
  • Incrustadores (embeddings  de OpenAI, Hugging Face, Clarifai, Bedrock, Cohere y Ollama)
  • Herramienta de búsqueda web para los agentes de AI.
  • Herramienta de Web Scrapping y análisis de páginas web para los agentes de AI.
  • Lectores JSON, PDF, Git y YouTube.
  • Herramientas de traducción de idiomas para los agentes de AI.
  • Chats almacenados en la Base de Datos.
  • Atributos del plan de usuario, la clave API de OpenAI y el nombre del modelo en el perfil de usuario, para permitir que los usuarios del plan gratuito utilicen sus propios créditos de OpenAI.

Click aqui para ver los Repositorios

 

Un poco de Historia

Esta idea del editor CRUD genérico y los demás elementos generados con programación genérica a partir de configuraciones estructuradas lo aprendí a mediados de los años 80, trabajando para una empresa que ya manejaba esa idea utilizando los lenguajes y bases de datos de moda de la época (Clipper y dBase III), con las configuraciones generadas por un sistema llamado System Maker y almacenadas en la base de datos. Un concepto que -en mi opinión- estaba muy adelantado para su época.

En los años 1999 y 2000 hice mi propia versión del editor CRUD genérico en Microsoft ASP (Active Server Pages) para un CMS (Content Management System), algo como lo que se hace WordPress.

Durante la pandemia del año 2020, se me ocurrió crear una nueva App (FynApp) y comencé el desarrollo del editor genérico para frontend en React.js basado en Componentes de Clases, (más información aquí) y el backend en Python (más información aquí), con las configuraciones en estructuras especificadas en el mismo código.

A principio de 2023 comencé a convertir el editor genérico a React.js basado en Componentes Funcionales y Hooks, y las configuraciones en archivos JSON.

Durante la PyCon Colombia en junio de 2023, se me ocurrió la idea de llevar la programación genérica al backend, y desde ese momento comencé el desarrollo de los Helpers para manejar los CRUD y la generación automática de Endpoints y Menús desde las mismas configuraciones utilizadas por el editor CRUD genérico del frontend, en archivos JSON almacenadas en un repositorio común al frontend y backend.

La aparición de ChatGPT a finales de 2022 y todo el boom de la AI (Artificial Intelligence / Inteligencia Artificial) que eso desencadenó, me provocó mucha curiosidad y  ganas de incluir algo de eso en FynApp.

En julio de 2023 participé en el Google Vertex AI Hackathon de lablab.ai y eso me dio las ideas para crear FynBot: el asistente de inteligencia artificial para FynApp, basado en las API de OpenAI y posteriormente usando GPT Functions.

Entre agosto y noviembre de 2023 exploré e incluí la generación de imágenes y audio en el App.

En diciembre de 2023 decidí implementar la programación genérica utilizando las librerías de Langchain para Python, abrir la posibilidad de utilizar cualquier modelo LLM / NLP / Embeddings en mis desarrollos y no estar atado a un solo proveedor.

En febrero de 2024 comencé a extraer toda la programación genérica de FynApp y allí nació The GenericSuite. La primera versión se publicó a principio de marzo de 2024 y las librerías ya funcionales se publicaron en NPMJS y Pypi a principios de abril de 2024.

Click aqui para ver las Librerías

Esta es mi primera contribución a la comunidad Open Source.

FynApp: un App para lograr Deficit Calorico

FynApp: un App para lograr Deficit Calorico

FynApp: un App para lograr Deficit Calorico

FynApp es tener la nutrición en su bolsillo. Es un App para lograr Deficit Calorico, alcanzar los objetivos de pérdida de peso y mantener un mejor estilo de vida, basado en una nutrición adecuada y la toma de consciencia sobre los hábitos alimenticios.

Especificaciones Técnicas

En el Frontend destaca el Editor CRUD Genérico [GCE] es un componente de React para ayudar a desarrollar aplicaciones de back-office más rápido.

Al tener un código básico Create-Read-Update-Delete que se puede parametrizar y ampliar, no hay necesidad de reescribir el código para cada editor de tablas.

Lo hice antes en otros lenguajes de programación a lo largo de los años, como Microsoft ASP a principios de 2000.

La intención es transformarlo en un paquete NPM y Pypi.

El Backend puede usar DynamoDB o MongoDB como almacenamiento persistente.

Se utilizan algunos patrones de diseño de software, tales como método de fábrica, fachada, iterador, método de plantilla y decorador.

Lo más notable fue implementar el acceso a DynamoDB mediante una sintaxis de estilo MongoDB.

En la parte de Gitops/Devops, se hicieron Scripts y configuraciones para realizar despliegues en diferentes plataformas (servidores de desarrollo local, VPS, entre otros), con tecnologías de orquestación como Kubernetes, artefactos y gestión de repositorios con Jfrog, Docker, Gitlab y Gitlab Runners

Herramientas Utilizadas

 Esta aplicación fue construida usando:

Frontend

  • Python 3, Chalice, JWT
  • MongoDB Atlas, AWS DynamoDB
  • GenericSuite

GitOps / DevOps

  • AWS
  • Kubernetes, Docker
  • Gitlab CI/CD, Github
  • Jfrog
  • Linux, Bash

Mobile (próximamente)

  • Flutter

Live Demo

🔗 Enlace a la demo en vivo:

https://app-demo.fynapp.com/

 

Dapp de NFT Dinámico con Chainlink Keeper e IPFS

Dapp de NFT Dinámico con Chainlink Keeper e IPFS

Dapp de Ethereum NFT Dinámico con Chainlink Keeper e IPFS 

    NFT Dinámico con Chainlink Keeper e IPFS: Aplicación tipo Dapp para crear un NFT dinámico, que cambia su metadata dependiendo de ciertas condiciones que definamos, en este caso un lapso de tiempo. Utiliza servicio Keeper de Chainlink, IPFS, Hardhat, React, Faucet Goerli y Solidity.

    Este proyecto está basado en la clase de NFT Dinámicos dictado por Camilo Molano en el ámbito del Ethereum Developer Program de Plazi, versión 2022.

    https://platzi.com/clases/3235-ethereum-dev-program/52575-08_220712_eth/

    Forma parte de mi Development Portfolio.

    ¿Qué es Solidity?

    Solidity es un lenguaje de alto nivel orientado a contratos.

    Su sintaxis es similar a la de JavaScript y está enfocado específicamente a la Máquina Virtual de Ethereum (EVM).

    Solidity está tipado de manera estática y acepta, entre otras cosas, herencias, librerías y tipos complejos definidos por el usuario.

    Que es el Automation de Chainlink

    Chainlink Automation (previamente llamado Keeper de Chainlink) es una capa de computación off-chain descentralizada para automatizar las funciones de los contratos inteligentes e introducir nuevas prestaciones a las dApp.

    Los desarrolladores ya no tienen que llevar a cabo procesos de forma manual, ni confiar en servidores centralizados, ni llevar a cabo cambios en su protocolo para poder automatizar funciones on-chain cuando se cumplan ciertas condiciones: en vez de eso pueden delegar esa tarea a los Keepers de Chainlink.

    Enlace al producto Chainlink Automation: https://chain.link/automation 

    Que es IPFS

    IPFS o InterPlanetary File System, es un sistema de archivo descentralizado que busca garantizar la seguridad, privacidad y resistencia a la censura de tus datos.

    Es el mecanismo que se usa en la Web3 y Blockchain para hacer persistencia de archivos sin tener que utilizar servicios centralizados como AWS S3 Buckets.

    Github

    En enlace para el código fuente es:

    https://github.com/tomkat-cr/platziretoDNFT

     

     

     

      Pokémon Factory: contrato inteligente para generar Pokemones

      Pokémon Factory: contrato inteligente para generar Pokemones

      Pokémon Factory: contrato inteligente para generar Pokemones

      Pokémon Factory: contrato inteligente de Ethereum para generar Pokemones, con sus habilidades, tipos y debilidades. Desarrollado mediante el lenguaje Solidity.

      Fue el primer Smart Contract que desplegué, como parte del Ethereum Developer Program de Platzi.

      Forma parte de mi Portafolio de Desarrollo.

      ¿Qué es Solidity?

      Solidity es un lenguaje de alto nivel orientado a contratos.

      Su sintaxis es similar a la de JavaScript y está enfocado específicamente a la Máquina Virtual de Ethereum (EVM).

      Solidity está tipado de manera estática y acepta, entre otras cosas, herencias, librerías y tipos complejos definidos por el usuario.

      Pantalla de Login para Flutter con JWT

      Pantalla de Login para Flutter con JWT

      Pantalla de Login para Flutter con JWT

      Práctica con una Pantalla de Login para Flutter, utilizando JWT y una API desarrollada en Python, Flask y la base de datos MongoDB.

      Al utilizar Flutter como Framework de desarrollo, se generan automáticamente los códigos fuentes para Xcode (iOS) y Java (Android), con lo cual se obtiene un App de excelente rendimiento para cada plataforma.