Como construir una extensión de cero en Auravant con React y Vite
Imagino que pediste ser desarrollador en Auravant y arrancaste tu proyecto con alguna idea brillante. Luego estuviste un ratito dando vueltas para saber cómo encarar la extensión. ¿De dónde tengo que sacar la información que quiero? ¿Qué tengo que usar para interactuar con la plataforma?
En esta guía te cuento cuál puede ser tu punto de partida.
¿Cómo leer la información de Auravant?
Auravant ofrece a los desarrolladores de extensiones interactuar con la plataforma. Podemos crear lotes, mapear labores, dibujar en el mapa polígonos, y una lista un poco larga.
Pero, ¿cómo accedo a todas estas funciones?
Antes de adentrarnos en el cómo, entendamos de qué manera está organizada la información en Auravant.
Si ya conoces Auravant, y ya sabes cómo funciona el SDK, la API y su modelo de datos, ve directo a cómo construir una extensión
Modelo de datos
La información que un usuario carga y maneja, se distribuye de la siguiente manera:
Lo simplifico, en Auravant tenemos lotes, estos se agrupan en campos.
Por otro lado, tenemos campañas, las cuales nuclean labores para cada conjunto Lote/Yeargroup. El yeargroup es simplemente el año del que se está hablando.
Finalmente, tenemos las labores, las cuales tienen un tipo
, un estado
, insumos
asociados y datos extra propios de cada labor.
¡Ahora sí vamos al cómo! No te vayas...
SDK
La principal herramienta que ofrece Auravant para la interacción con la plataforma desde una extensión, es el SDK. Para los que no saben que es un SDK (Kit de Desarrollo de Software), acá les dejo un poco de información.
El SDK de Auravant está dividido en módulos.
Cada módulo agrupa herramientas que trabajan en la misma área de aplicación. Por ejemplo, el módulo map se utiliza para interactuar con el mapa principal.
Actualmente, estos son los módulos que están disponibles en nuestro SDK:
Además, el SDK tiene algunas variables globales que te servirán para ciertas aplicaciones. Estas son, platform y token.
La primera te indica en que plataforma se está corriendo la extensión. Puede ser web, android o ios. La segunda variable es el token único perteneciente a la extensión que es necesario para acceder a la API de Auravant.
Es necesario tenerlas en cuenta por dos razones. La primera es que no deben ser usadas en la extensión si el SDK está cargado porque se podrían pisar. Y, por otro lado, el token no debe estar hardcodeado.
API
Existen funciones específicas de la plataforma que no se pueden acceder desde el SDK. Para esto, Auravant tiene disponible una API con una serie de endpoints que permiten obtener cierta información y realizar operaciones en la plataforma.
Sin embargo, hay dos cosas que se deben tener en cuenta para utilizar estos endpoints desde una extensión. La primera es utilizar el token provisto por el SDK para realizar las consultas a la API. La segunda, es habilitar las funciones en el claimset.
El claimset es una lista de permisos, correspondientes a cada funcionalidad, que debes habilitar desde el espacio del desarrollador. Cada extensión tiene su propio claimset. El usuario que utilizará la extensión será avisado de las funcionalidades que la extensión solicita utilizar, y este debe autorizar estas opoeraciones al instalar la extensión.
Sin más que agregar, se puede acceder a la referencia de la API desde aquí
Set-up en React y Vite
Pasemos a construir una extensión desde cero.
Si bien en este artículo usaremos React + Vite, una extensión puede estar hecha en la tecnología que quieras.
Lo primero que haremos será crear nuestro proyecto en Vite:
foo > npm create vite@latest ext-example -- --template react
foo > cd ext-example
foo > npm install
Una vez creado el proyecto en Vite, vamos a abrirlo con nuestro editor de código preferido, y nos dirigimos al archivo vite.config.js. Aquí le vamos a agregar la configuración base: ""
que servirá para luego subir nuestra extensión a Auravant y que funcione correctamente.
import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';
// https://vitejs.dev/config/
export default defineConfig({
plugins: [react()],
base: ""
});
Para terminar con las configuraciones, ahora vamos al index.html y cargamos el SDK copiando al final del body
el siguiente script:
<script src="https://auraview.auravant.com/sdk/v1.0/aura-package_v1.0.js"></script>
Muy bien, hagamos algo simple y subamos el primer commit a la plataforma.
Voy a eliminar todo lo que Vite me genera como boilerplate, y me quedarán los siguientes archivos.
En main.jsx pegamos este código:
import React from "react";
import ReactDOM from "react-dom";
import App from "./App";
if(avt.platform === "web"){
window.addEventListener("readySDK", loadExt);
} else {
loadExt();
};
function loadExt() {
ReactDOM.render(
<React.StrictMode>
<App />
</React.StrictMode>,
document.getElementById("root")
);
};