← Todas las utilidades

NSRAD

Versión 26.1 (build 376) Prueba 30 días
NSRAD
Índice

Qué es NSRAD

nsrad es el framework de desarrollo rápido de aplicaciones web de Nacarsoft, escrito en Go y orientado a entornos con base de datos (ADABAS, Oracle, PostgreSQL, SQLite, DB2). Las aplicaciones se definen con ficheros YAML —formularios, listados, menús dinámicos y servicios REST-API— más tareas programadas (crontab), sin escribir código repetitivo. El control de acceso es por roles (RBAC: usuarios, grupos, roles y permisos).

Los nombres de aplicaciones, ficheros y datos de los ejemplos son ficticios.

Casos de uso

1. Aplicación de gestión sobre ADABAS con formularios y listados

Crear una app de mantenimiento (p. ej. gestion-polizas ficticia) sobre el fichero ADABAS configurado.

./build/nsrad init /tmp/miproyecto
./build/nsrad start /tmp/miproyecto
# → listening on http://127.0.0.1:9090

Flujo web (http://localhost:9090, admin / admin123): crear la aplicación bajo apps/, definir sus pantallas (formularios, listados) en YAML, apuntar a la base configurada o a una entidad Natural, y navegar por los menús dinámicos en el navegador.

2. Exponer datos de negocio como REST-API JSON

Exponer una entidad (p. ej. clientes ficticia) como endpoint con autenticación y control de roles.

curl -s -X POST http://localhost:9090/api/auth/login \
  -H 'Content-Type: application/json' \
  -d '{"username":"admin","password":"admin123"}'

Flujo web: definir la entidad en el YAML de la aplicación; consumir GET /api/<app>/<entidad> con el token JWT obtenido en el login; cada rol autoriza acciones concretas sobre aplicaciones y datos.

3. Automatizar un informe nocturno con tareas programadas

Generar cada noche un informe o sincronización (p. ej. resumen de pólizas ficticio) vía crontab de la aplicación.

./build/nsrad status /tmp/miproyecto
# → nsrad is running (PID 12345) — listening on http://127.0.0.1:9090

Flujo web: declarar la tarea (informe, sincronización) en el YAML de la aplicación; verificar en logs/ del entorno que la ejecución programada se completó.

4. Prototipo multidioma con varios entornos

Levantar entornos de desarrollo y producción con el mismo binario y servir la UI en español e inglés.

./build/nsrad init /tmp/dev && ./build/nsrad start /tmp/dev
./build/nsrad init /tmp/prod && ./build/nsrad start /tmp/prod
./build/nsrad status /tmp/prod

Flujo web: ajustar i18n.supported_languages y ui.default_theme en cada config.yaml; comprobar idioma y tema en el navegador; parar con ./build/nsrad stop /tmp/dev.

Interfaz

Menú principal

Entorno de desarrollo

Referencia

Comandos CLI (verificados con --help, v1.0.0 build 679)

Comando / flagDescripción
init [dir]Inicializa un entorno nuevo (config.yaml + db/ + logs/, además de themes/, apps/, certs/, i18n/)
start [dir]Arranca el servidor en segundo plano
stop [dir]Detiene el servidor en segundo plano
status [dir]Estado: running/not running, PID, uptime, memoria, URL y config usada
licenseMuestra el estado de la licencia y sale
--config <dir>Alias de [dir] (directorio del entorno, no fichero)
--version, -vMuestra versión y build
--help, -hMuestra la ayuda

Nota: el manual de referencia lista flags --direnv, --port, --host, --start/--stop/--restart; el binario real usa subcomandos init/start/stop/status con [dir] posicional. Guíese por esta tabla.

Principales opciones de config.yaml (ver config.example.yaml)

OpciónDescripción
server.portPuerto HTTP (por defecto 9090)
server.read_timeout / write_timeout / shutdown_timeoutTiempos de espera del servidor
server.logo_path, app_name, copyrightPersonalización de la cabecera
security_db.pathSQLite de seguridad (db/security.db): usuarios, grupos, roles
auth.jwt_secretSecreto JWT — cámbielo en producción (o variable AUTH__JWT_SECRET)
auth.jwt_expiry / refresh_expiryCaducidad del token (15m) y del refresh (24h)
auth.ldap_enabled, ldap_host, ldap_port, ldap_base_dnAutenticación LDAP opcional
smtp.*Correo para reseteo de contraseña y notificaciones (host, port, username, password, from, security)
logging.log_dir, level, keep_daysDirectorio y retención de logs
mdi.max_open_tabs, tab_state_cookiePestañas simultáneas del escritorio MDI
maps.source, yaml_path, keyboard.*Origen de mapas y atajos (F3 cerrar, F5 refrescar, F6 nuevo, F8 siguiente)
i18n.default_language, supported_languagesIdiomas (en, es, fr, de, it, pt) y cookie de idioma
menu.max_depthProfundidad máxima de menús
ui.default_theme, theme_cookieTema por defecto y cookie de tema
pagination.default_page_size, max_page_sizePaginación (20 / 100)
ai.enabled, provider, model, api_key, base_urlAsistente IA integrado
license.trial_daysDías del periodo trial (30)

Estructura del entorno (mydata/): config.yaml (puerto, temas, base de datos), apps/ (aplicaciones de la plataforma), repositories/ (objetos Natural/ADABAS).

Áreas de la interfaz web

ÁreaQué hace
LoginAutenticación (admin/admin123 iniciales); emite JWT usado por la API (POST /api/auth/login)
Escritorio MDIPestañas simultáneas de trabajo (límite mdi.max_open_tabs), con estado persistido en cookie
Menús dinámicosNavegación por aplicaciones y pantallas definidas en apps/ (profundidad menu.max_depth)
Formularios y listadosAlta, edición y consulta de registros de la base configurada o de entidades Natural
REST-APIEntidades expuestas como GET /api/<app>/<entidad> en JSON, con autenticación y roles
Tareas programadasInformes y sincronizaciones definidos en el YAML (crontab de la aplicación)
Administración RBACGestión de usuarios, grupos, roles y permisos sobre aplicaciones y datos
Temas e idiomasSelector de tema (ui) e idioma (i18n: en, es, fr, de, it, pt)

Ejemplos comentados

# 1. Entorno nuevo y arranque (usa ./mydata si existe y no se pasa [dir])
./build/nsrad init /tmp/miproyecto
./build/nsrad start /tmp/miproyecto
./build/nsrad status /tmp/miproyecto

# 2. Comprobación de salud y login API
curl -s http://localhost:9090/api/health
curl -s -X POST http://localhost:9090/api/auth/login \
  -H 'Content-Type: application/json' \
  -d '{"username":"admin","password":"admin123"}'

# 3. Estado de licencia y versión
./build/nsrad license
./build/nsrad --version

# 4. Dos entornos con el mismo binario
./build/nsrad init /tmp/prod && ./build/nsrad start /tmp/prod
./build/nsrad status /tmp/prod
./build/nsrad stop /tmp/miproyecto

Preguntas frecuentes

¿En qué puerto escucha y cómo lo cambio? Por defecto en 9090 (server.port en [dir]/config.yaml); tras editarlo, reinicie con stop + start.

¿Dónde va la licencia y qué pasa sin ella? En /opt/ns/licenses/nsrad.key; sin licencia funciona en trial de 30 días (license muestra el estado).

¿Cuáles son las credenciales iniciales? admin / admin123 en http://localhost:9090; el usuario admin se crea por migración y no se puede eliminar.

¿No conecta a ADABAS o la aplicación no aparece? Verifique la sección de base de datos del config.yaml (DBID/FNR reales, valores del manual ficticios) y que la estructura apps/ del entorno sea correcta; si el puerto está ocupado, cambie server.port.

También disponible en: en