Importante
? ¿El cliente de gestión de redes de Meshtastic necesita un nuevo propietario / mantenedor de la plataforma?
Hay más detalles disponibles en el número 473.
Esta aplicación es un cliente de escritorio para el proyecto Meshtastic, diseñado para permitir a los usuarios administrar de manera confiable redes de malla descentralizadas grandes. Actualmente, el ecosistema de cliente Meshtastic tiene un fuerte soporte para administrar nodos individuales, pero un soporte mínimo para la gestión y el análisis a nivel de red. El objetivo de este proyecto es brindar a los usuarios la confianza en sus redes de maldad como una infraestructura de comunicaciones confiable a través de nuevos análisis algorítmicos y ideas a nivel de conexión.

Esta aplicación se crea utilizando el marco Tauri, un sucesor moderno y seguro del marco de electrones. Esto nos permite admitir de forma nativa Linux, MacOS y Windows dentro de la misma base de código sin la sobrecarga de rendimiento o memoria de un navegador de Chromium. Nuestra infraestructura de aplicación central está escrita en óxido debido a su rendimiento y seguridad, y nuestra funcionalidad de interfaz de usuario y cliente está escrita en React TypeScript usando VITE. Este proyecto se encuentra en las primeras etapas de desarrollo y, como tal, aún no es adecuado para el uso de producción .
Al momento de escribir, este proyecto es actualmente mantenido por un solo desarrollador. Como tal, el proyecto está buscando desarrolladores dispuestos a contribuir o tomar liderazgo en las siguientes iniciativas importantes:
Este proyecto todavía se encuentra en las primeras etapas de desarrollo, pero aquí hay una hoja de ruta de funcionalidad en la que estamos trabajando. Estamos poniendo una alta prioridad para obtener nuestra infraestructura central correcta, ya que este es el núcleo de cualquier capa de UI robusta y efectiva.
Este proyecto se basa en el ecosistema de hardware Meshtastic, y como tal, este cliente requiere que tenga acceso a una radio Meshtastic. Esto puede cambiar en el futuro, pero por el momento se requiere una radio física para usar este cliente.
He escrito algunas recomendaciones de hardware personales aquí.
Este proyecto está integrado en Rust and React TypeScript, y se administra utilizando el Administrador de paquetes PNPM. Como tal, este proyecto requiere que se instalen los siguientes programas en su máquina de desarrollo:
Para ejecutar este proyecto localmente, siga los pasos a continuación:
git clone https://github.com/meshtastic/network-management-client.gitgit submodule update --initpnpm ipnpm run rust:dev . La aplicación debe compilarse con éxito, y debe ver la aplicación abierta con éxito. Si este proceso falla para usted, ¡háganoslo saber!Si bien este proyecto se puede desarrollar dentro de cualquier editor de texto, recomendamos el editor de código de Visual Studio. Si usa VScode, le recomendamos que instale las siguientes extensiones de código de Visual Studio. Estas extensiones hacen cumplir el estilo de código y habilitan el soporte de lenguaje y marco para nuestra pila tecnológica.
Algunas extensiones opcionales que no son necesarias, pero encontramos muy útiles:
Para estandarizar nuestro flujo de desarrollo, utilizamos comandos PNPM, definidos en package.json . Estos comandos se pueden ejecutar con el pnpm run NAME ...ARGS . Nuestros comandos se dividen en dos categorías principales, rust:* Comandos y ui:* Comandos. Los comandos rust:* ejecutan toda la aplicación de escritorio, donde los comandos ui:* solo ejecutan la capa UI.
Nota: Recomendamos encarecidamente que no use los comandos
ui:devyui:buildManual. Estos comandos son invocados internamente porrust:devyrust:buildCommands, respectivamente. No podrá conectarse a un Devce en serie al ejecutar el comandoui:dev, ya que esta lógica no se maneja en la capa de UI.
Actualmente estamos trabajando para agregar soporte para el marco del libro de cuentos, que permitirá a los contribuyentes desarrollar componentes de la interfaz de usuario sin ejecutar toda la aplicación de escritorio.
pnpm run rust:dev - inicia la aplicación de escritorio en modo de desarrollo, lo que permite la recarga en caliente de la interfaz de usuario y el código de óxido
pnpm run rust:build - Construye la aplicación de escritorio en modo de producción para la arquitectura de su sistema. Actualmente solo usamos este comando para probar el analizador de argumentos CLI de nuestra aplicación.
pnpm run rust:test : ejecuta pruebas de backend en el directorio de base de código Rust ( /src-tauri ). Este comando también genera enlaces de cliente TypeScript en el directorio /src-tauri/bindings . ¡Agregue -- --show-output para mostrar Rust println! Las llamadas macro dentro de las suites de prueba.
pnpm run ui:dev - inicia el servidor de desarrollo de la interfaz de usuario, lo que permite el desarrollo de la interfaz de usuario en un entorno de navegador. Tenga en cuenta que cualquier código que interactúe con el backend de óxido no funcionará dentro de este entorno del navegador, lo que significa que no podrá conectarse a dispositivos seriales en este contexto
pnpm run ui:build : - Ejecuta una construcción de producción en el código UI en el directorio dist
pnpm run ui:lint - Utiliza Eslint para verificar los errores de estilo de código. Tenga en cuenta que nuestra tubería CI requiere que este comando tenga éxito antes de que se puedan fusionar cualquier cambio
pnpm run ui:format : formatea la base de código UI usando Prettier y Eslint. ¡Recomendamos encarecidamente que ejecute esto antes de crear un PR!
pnpm run ui:test - Ejecuta la suite de prueba UI usando broma. Actualmente, el proyecto no tiene una suite de pruebas de interfaz de usuario, ¡pero estamos muy abiertos a las contribuciones!
(Deprecido)pnpm run ui:preview - Ejecuta la UI construida desde el directorio dist . Este comando debe ejecutarse después de ui:build
Nota: En Linux, es posible que su usuario no tenga permiso para acceder a un puerto serie determinado. Si esto sucede, es probable que necesite agregar a su usuario al grupo que controla el puerto serie al que desea acceder. Puede encontrar el grupo que controla un puerto serie a través del comando
ls -ld PATH_TO_PORT_HERE. Puede agregar su usuario a este grupo a través del comandousermod -a -G GROUP_NAME_HERE $USER.
Como todavía estamos muy temprano en el desarrollo, aún no tenemos un marco estandarizado para aceptar contribuciones. Dicho esto, ¡estamos muy abiertos a sugerencias y/o cambios en el código! Si está interesado en contribuir a este repositorio, le pediríamos que primero verifique nuestro tablero de problemas para que su trabajo no esté duplicar el trabajo de los demás. Luego, haga un problema en nuestro tablero para que sepamos en qué está interesado en trabajar. Si tiene alguna pregunta sobre el proyecto, ¡nos encantaría saber de usted!