Skip to content
Roger08GPublic

About

Nexora unifica APIs y bases de datos para desarrollo en un workspace rápido y local.

Resources

Security policy

Stars

2 stars

Watchers

1 watching

Forks

Repository files navigation

Logo de Nexora

Nexora

🪐 Desarrollo backend local, privado y preparado para trabajar con Git 🌟

CI Versión Estrellas Forks Rust React Tauri Windows Licencia

Nexora es una aplicación de desarrollo backend local-first que reúne un cliente de APIs REST, un workspace MongoDB y un workbench PostgreSQL. Cada proyecto mantiene sus definiciones de peticiones en archivos revisables con Git, mientras los datos, credenciales y runtimes permanecen exclusivamente en local.

Vista previa de Nexora

Descarga para Windows

La distribución está disponible en Releases:

  • Portable: extrae el ZIP completo y abre Nexora.exe. Incluye MongoDB, PostgreSQL y sus bibliotecas; conserva la carpeta runtimes/ junto al ejecutable.
  • Instalador .exe: instala Nexora y los mismos motores para la cuenta de Windows actual. Prepara WebView2 si falta; ese primer paso puede necesitar conexión a Internet.
  • Código fuente: GitHub genera los archivos ZIP y TAR.GZ desde el tag de cada versión.

Para utilizar todos los motores incluidos, utiliza Windows 11 x64 y Microsoft Edge WebView2. Windows 10 no figura en las plataformas soportadas de MongoDB; no se garantiza el paquete completo en ese sistema. Compara las descargas con SHA256SUMS.txt antes de utilizarlas. La versión 2.2.1 se distribuye sin firma Authenticode.

Puedes elegir cualquier carpeta para tus proyectos. El programa no instala servicios de bases de datos ni necesita una cuenta o un servidor en la nube. Los ajustes de interfaz y las credenciales pertenecen a la cuenta de Windows; el ZIP portable no convierte las credenciales existentes en transferibles entre equipos. Para mover una base a otra cuenta, exporta/restaura sus datos.

Arquitectura

Nexora separa la interfaz React del núcleo nativo. Toda operación con red, archivos, credenciales o bases de datos atraviesa comandos Tauri validados y limitados mediante capabilities.

flowchart LR
    subgraph Frontend["Interfaz de escritorio"]
        Shell["React + TypeScript"]
        Workspaces["API · MongoDB · PostgreSQL<br/>Historial · Monitores"]
        Shell --> Workspaces
    end

    Bridge["IPC de Tauri<br/>capabilities limitadas"]

    subgraph Core["Núcleo Rust"]
        Commands["Comandos y validación"]
        Http["Motor HTTP"]
        Runtimes["Supervisores de runtimes"]
        Storage["Persistencia y migraciones"]
        Commands --> Http
        Commands --> Runtimes
        Commands --> Storage
    end

    Workspaces --> Bridge --> Commands
    Http --> APIs["APIs locales o remotas"]
    Runtimes --> MongoDB["MongoDB local o externo"]
    Runtimes --> PostgreSQL["PostgreSQL local"]
    Runtimes --> Keychain["Windows Credential Manager"]
    Storage --> Versionable["requests/ · folders/ · monitors/<br/>Contenido versionable con Git"]
    Storage --> Private[".nexora/runtime/<br/>Estado privado local"]
Loading

Funciones

  • Shell de escritorio modular con navegación entre espacios de trabajo.
  • Selector inicial para abrir la carpeta raíz de un proyecto Nexora o crear uno nuevo.
  • Cliente REST con ejecución HTTP real, status, headers, body, duración y tamaño de respuesta.
  • Rutas, carpetas y monitores visibles en la raíz, con un JSON por recurso para obtener diffs claros en Git.
  • Carpetas persistentes, menú contextual para renombrar o eliminar rutas y guardado automático.
  • Detección de conflictos con cambios externos de peticiones y recarga confirmada desde el archivo.
  • Cierre y cambio de proyecto coordinados con las escrituras pendientes.
  • Pestañas de ruta cerrables con Ctrl+W sin permitir cerrar la última petición abierta.
  • Historial HTTP local con búsqueda, repetición y limpieza controlada.
  • Monitores locales configurables, ejecución manual o periódica y registro en el historial.
  • MongoDB local administrado por proyecto y conexión opcional a servidores externos.
  • Consulta de MongoDB, creación de colecciones e inserción, edición y borrado de documentos.
  • Inspección de esquemas e índices MongoDB.
  • PostgreSQL 18.6 local administrado por proyecto, con esquemas, tablas, editor SQL y exportación CSV.
  • Variables de sesión para resolver {{referencias}} sin guardar secretos en el proyecto.
  • Búsqueda global con Ctrl+K para módulos, peticiones, colecciones y tablas cargadas.
  • Ajustes locales persistentes y notificaciones Sonner para las operaciones principales.
  • Transición SilkWave durante la carga del proyecto, ajustada al tamaño de sus datos locales.
  • Diseño adaptable, navegación accesible y soporte para movimiento reducido.

Las escrituras PostgreSQL requieren confirmación y las lecturas se ejecutan dentro de una transacción de solo lectura. El workbench utiliza el rol limitado nexora_app, separado del rol administrativo interno. MongoDB exige filtros no vacíos para editar o borrar, y las URI externas solo viven durante la sesión. El núcleo limita tiempos, respuestas HTTP, filas SQL, documentos MongoDB y conexiones simultáneas para mantener estable la aplicación.

Las peticiones permiten realizar pruebas manuales y los monitores repetirlas mientras Nexora está abierto. No constituyen una suite de assertions ejecutable desde CI. Todavía no forman parte de esta versión los workflows API → diff de base de datos, la importación de cURL/OpenAPI/Postman ni la ejecución de monitores cuando Nexora está cerrado.

Los enteros MongoDB de 64 bits que exceden el rango exacto de JavaScript se representan mediante $numberLong. Los valores PostgreSQL BIGINT fuera de ese rango llegan como texto a la tabla y al CSV, evitando redondear identificadores. Esto no supone precisión arbitraria para números dentro de columnas JSON/JSONB.

Tecnologías

  • Tauri 2 y Rust.
  • React 19 y TypeScript.
  • Vite y Bun.
  • WebGL nativo para la animación SilkWave de inicio.

Estructura

src/
├── app/       # arranque, providers, configuración y shell
├── modules/   # páginas, componentes, servicios y tipos por dominio
└── shared/    # componentes, servicios, hooks, estilos y tipos reutilizables

src-tauri/src/
├── commands/ # proyectos, HTTP, MongoDB y PostgreSQL
├── error.rs  # errores serializables para IPC
└── state.rs  # clientes, conexiones y supervisores de runtimes en memoria

Las importaciones internas utilizan el alias @/.

Desarrollo

Requisitos: Bun 1.3.14, Node.js 24 para las pruebas WebDriver, Rust 1.98.0 y las herramientas C++ de Visual Studio para Windows. rust-toolchain.toml fija el compilador utilizado en CI.

bun ci
bun run dev

bun run dev solo previsualiza la interfaz. Para usar diálogos, proyectos y motores nativos debe ejecutarse bun run tauri dev.

Formato de proyecto

mi-proyecto/
├── .nexora/              # integración interna con la aplicación
│   ├── .gitignore        # excluye runtime/
│   ├── project.json      # identidad y versión del proyecto
│   └── runtime/          # datos de motores e historial local
├── folders/              # metadatos versionables de las carpetas
│   └── general.json
├── monitors/             # definiciones versionables, sin variables de sesión
│   └── monitor-<uuid>.json
└── requests/             # definiciones de peticiones versionables
    └── general/
        └── request-<uuid>.json

Versiona .nexora/project.json, .nexora/.gitignore y el contenido de folders/, monitors/ y requests/. No ignores .nexora/ por completo: el manifiesto permite abrir el proyecto después de clonarlo. Su subcarpeta runtime/ sí debe permanecer fuera de Git. La guía del formato de proyecto incluye ejemplos JSON y el flujo de clonación.

Al abrir un proyecto creado con la versión 0.1, Nexora migra las definiciones ocultas al nuevo formato; si ya existe un archivo distinto en el destino, cancela la migración para evitar sobrescribir datos.

El guardado compara la petición con la versión cargada desde disco. Si Git u otro editor la ha modificado o eliminado, Nexora señala el conflicto y conserva el borrador, sin reemplazar el archivo detectado ni recrearlo. Recargar pide confirmación antes de sustituir el borrador por el contenido actual del archivo; si la lectura falla, el borrador se conserva. No hay resolución automática de conflictos ni vigilancia continua de cambios de Git.

Guardar una petición o un monitor sin cambios no reformatea su archivo ni genera diferencias innecesarias. Al cerrar Nexora o cambiar de proyecto, la aplicación espera las escrituras pendientes; si el guardado automático encuentra un error o conflicto, no completa la salida. Con guardado automático desactivado, pregunta antes de descartar cambios. Estas protecciones no sustituyen las copias de seguridad ni coordinan escrituras simultáneas de otros programas.

Los archivos de petición guardan referencias como Bearer {{token}}, no el valor de token. Al ejecutar, Nexora resuelve variables en URL, nombres y valores de query y headers, y body. Las referencias incompletas o sin valor producen un error antes de enviar tráfico. Nexora bloquea credenciales directas o parcialmente ocultas en URLs, headers —también desactivados—, parámetros y campos sensibles de bodies JSON o formularios.

El historial conserva un máximo de 500 ejecuciones en .nexora/runtime/, que está ignorado por Git. Solo registra método, ruta sin query ni credenciales, estado y métricas; no persiste variables de sesión, headers, cuerpos de petición ni cuerpos de respuesta. Los monitores ejecutan peticiones guardadas mientras Nexora permanece abierto y utilizan los valores de sesión que existan en ese momento. La programación comienza pausada en cada apertura: revisa las peticiones y pulsa Iniciar programación para autorizarla en esa sesión. Un monitor habilitado en Git no inicia tráfico por sí solo. Ejecutar ahora permite una ejecución manual sin activar la programación.

MongoDB local administrado

La distribución Windows incluye MongoDB Community Server 8.3.11. Nexora busca primero el motor en runtimes/mongodb/8.3.11/ junto al ejecutable y, para desarrollo, en:

%LOCALAPPDATA%\Nexora\runtimes\mongodb\8.3.11\mongod.exe

El proceso se inicia oculto en 127.0.0.1 con un puerto libre, autenticación habilitada y datos aislados en .nexora/runtime/mongodb. Nexora crea una credencial distinta por proyecto y guarda la contraseña en Windows Credential Manager; no la escribe en Git ni la expone en la interfaz. Al desconectar o cerrar Nexora, el proceso administrado se detiene.

Antes de recuperar un proceso MongoDB ya activo, Nexora comprueba que su carpeta de datos coincide con la del proyecto seleccionado; no adopta una instancia que utiliza otra carpeta.

La variable NEXORA_MONGOD_PATH permite utilizar otro ejecutable durante desarrollo. Se conserva la detección del directorio legado 8.3.8 para instalaciones anteriores, pero los paquetes nuevos incluyen 8.3.11. No se debe versionar mongod.exe dentro del repositorio.

PostgreSQL local administrado

Nexora utiliza el ZIP de binarios para Windows publicado por EDB y enlazado desde PostgreSQL.org. La distribución incluye PostgreSQL 18.6 (paquete EDB revisión 3) en runtimes/postgresql/18.6/pgsql/ junto al ejecutable. Para desarrollo también busca en:

%LOCALAPPDATA%\Nexora\runtimes\postgresql\18.6\pgsql\

No se importan archivos SQL ni bases SQLite. Al iniciar el espacio PostgreSQL, Nexora crea un clúster real en .nexora/runtime/postgresql, lo enlaza exclusivamente a 127.0.0.1 en un puerto libre y prepara la base nexora. Cada proyecto tiene una contraseña aleatoria almacenada en Windows Credential Manager. Los datos, logs y credenciales quedan fuera de Git.

En Windows, el arranque utiliza pg_ctl para crear un proceso con privilegios reducidos, incluso si Nexora se ha abierto como administrador. Se comprueban el PID y el puerto local del servidor; no se desactiva UAC ni se registra un servicio de Windows.

Para recuperar una instancia PostgreSQL existente, Nexora también contrasta data_directory con la carpeta de datos del proyecto. Coincidir en PID, puerto o credenciales no basta para adoptarla.

El rol nexora_admin queda reservado para la inicialización y el mantenimiento interno. Las consultas de la interfaz utilizan nexora_app, sin privilegios de superusuario, creación de roles o bases de datos ni pertenencia al rol administrativo. Los clústeres creados por versiones alpha anteriores se migran al abrirse: Nexora crea el rol limitado y reasigna los objetos del proyecto sin eliminar sus datos. En esos clústeres, nexora_local puede conservarse como bootstrap interno de PostgreSQL, pero nunca se utiliza ni se expone como conexión del workbench.

La variable NEXORA_POSTGRESQL_HOME permite indicar otra distribución completa durante desarrollo; debe apuntar a la carpeta que contiene bin, lib y share.

Verificación

bun run fmt:check
bun run verify:version
bun run test:version
bun run audit:frontend
bun run verify:glib
bun run test:glib-guard
bun run typecheck
bun run typecheck:tests
bun run test:unit
bun run build
cargo fmt --manifest-path src-tauri/Cargo.toml -p nexora --check
cargo clippy --manifest-path src-tauri/Cargo.toml --locked -p nexora --all-targets --all-features --no-deps -- -D warnings
cargo test --manifest-path src-tauri/Cargo.toml --locked --all-targets
cargo build --manifest-path src-tauri/Cargo.toml --locked --release
cargo audit --file src-tauri/Cargo.lock

La suite E2E abre el binario de depuración en el WebView real de Tauri mediante WebdriverIO. Crea un proyecto Nexora y una API Bun temporales, comprueba la interfaz y ejecuta operaciones reales contra los runtimes locales de MongoDB y PostgreSQL. Al terminar detiene los procesos y elimina el proyecto de prueba.

bun run test:e2e

Para repetir solo la suite sobre un binario E2E ya compilado:

bun run test:e2e:run

En Windows, estas pruebas requieren WebView2 y los binarios locales de MongoDB y PostgreSQL descritos arriba. La característica Rust e2e y los permisos WebDriver están aislados en la configuración src-tauri/tauri.e2e.conf.json; no se incluyen en el binario normal de producción.

Las pruebas reales de los runtimes son opcionales porque requieren sus binarios y Windows Credential Manager:

cargo test --manifest-path src-tauri/Cargo.toml runs_an_authenticated_project_database_end_to_end -- --ignored
cargo test --manifest-path src-tauri/Cargo.toml runs_managed_postgresql_end_to_end -- --ignored
cargo test --manifest-path src-tauri/Cargo.toml migrates_the_legacy_superuser_to_the_limited_application_role -- --ignored

GitHub Actions ejecuta en Windows las comprobaciones de formato, TypeScript, build frontend, auditorías de Bun y RustSec, Clippy, tests Rust, compilación con la característica WebView y build de Tauri. También descarga motores oficiales con SHA-256 fijado y ejecuta pruebas reales de MongoDB, PostgreSQL y WebView. Las regresiones frontend y del extractor ZIP se ejecutan en Windows y Linux. Dependabot agrupa las actualizaciones menores y parches para facilitar su revisión.

En Linux, CI comprueba además el backport oficial de seguridad de glib 0.18.5, la integridad de su código y que Nexora y las regresiones resuelven exactamente esa misma copia local. Ejecuta los iteradores afectados en modo optimizado con GLib real. No equivale a certificar la aplicación de escritorio completa en Linux. Consulta la revisión de seguridad de 2.2.1.

node scripts/security/verify-glib-patch.mjs --metadata
cargo test --manifest-path scripts/security/glib-variant-iter/Cargo.toml --locked --release

La prueba nativa requiere pkg-config y libglib2.0-dev en Linux. No reformatees las dependencias vendorizadas: usa los comandos de formato por paquete indicados arriba, no cargo fmt --all.

La comprobación de versión contrasta package.json, los manifiestos Tauri y Cargo, la entrada Nexora del lockfile y la inyección utilizada por la pantalla inicial. Se ejecuta también antes de iniciar Vite o compilar el frontend.

La auditoría frontend verifica primero el parche local de extract-zip contra archivos ZIP con enlaces y entradas duplicadas, además de una extracción válida. Solo después acepta las dos excepciones correspondientes a ese paquete, cuyo upstream no ofrece una versión corregida. Los demás avisos de seguridad hacen fallar el control.

Aplicación de escritorio

bun run tauri dev
bun run tauri build

Nexora funciona sin cuentas, nube ni telemetría. Los proyectos y sus rutas de API permanecen en local y se pueden versionar con Git sin incluir los valores de las variables de sesión.

Para generar el instalador completo y el ZIP portable, consulta scripts/release/README.md. El empaquetado comprueba versiones, arquitectura y hashes, e incluye las licencias de los motores. Los binarios y el staging de distribución quedan en artifacts/, excluido de Git.

Seguridad

Consulta SECURITY.md para conocer las versiones soportadas, el alcance y el proceso de reporte coordinado. No publiques vulnerabilidades, pruebas de concepto ni datos sensibles en un issue o pull request.

Licencia

Nexora se distribuye bajo la licencia MIT.

Créditos

Desarrollado con IA (GPT-5.6 Sol).

About

Nexora unifica APIs y bases de datos para desarrollo en un workspace rápido y local.

Resources

Security policy

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages