This template should help get you started developing with Tauri, React and Typescript in Vite.
Aplicación de escritorio (Windows) construida con Tauri 2, React 19, TypeScript y TailwindCSS, para gestionar y automatizar un punto de acceso (Hosted Network) Wi‑Fi en Windows mediante los comandos netsh.
Simplificar el inicio, configuración y monitoreo de un Hosted Network en Windows, mostrando estado, SSID, clientes máximos, autenticación, cifrado y contraseña; además de permitir autostart y notificaciones del sistema.
- Inicio / detención del Hosted Network (elevado con
ShellExecuteW runas). - Configuración de SSID y contraseña persistente.
- Almacenamiento local usando
tauri-plugin-store(app_data.json). - Autenticación básica (login / logout en memoria con bandera global atómica).
- Auto Start opcional del hotspot al abrir la aplicación.
- Notificaciones nativas (plugin notification).
- Modal personalizado para mensajes en lugar de
alert. - Sanitización y migración de valores (ej.
autoStartde string -> boolean). - Arquitectura segura de mutabilidad usando
Arc<Mutex<...>>para el estado del hotspot.
Frontend:
- React 19 + TypeScript
- Vite 7
- TailwindCSS 4 (a través de
@tailwindcss/vite)
Backend (Tauri / Rust):
- Tauri 2 (runtime WRY)
- Plugins: store, notification, dialog, opener, autostart
- Acceso Win32 (
windowscrate) para elevar comandosnetsh.
root
├─ src/ (React UI)
│ ├─ pages/Home.tsx # Pantalla principal (estado y controles)
│ ├─ contexts/AuthContext.tsx
│ └─ middleware/Guard.tsx
├─ src-tauri/
│ ├─ src/lib.rs # Comandos Tauri y lógica Hosted Network
│ ├─ src/main.rs # Entrada binaria
│ ├─ tauri.conf.json # Configuración Tauri
│ └─ Cargo.toml # Dependencias Rust
└─ public/
Se maneja un usuario único almacenado en el Store bajo la clave usuario con estructura { name, password }. El estado de sesión se mantiene con una AtomicBool. (No apto aún para producción: faltan hashing y múltiples usuarios.)
| Comando | Descripción |
|---|---|
login |
Valida credenciales y activa sesión |
logout |
Cierra sesión |
is_authenticated |
Retorna booleano de sesión |
get_hosted_network_settings_to_fronted |
Devuelve estado actual del Hosted Network |
config_hosted_network |
Configura SSID y clave persistente |
start_hosted_network / stop_hosted_network |
Controla el hotspot |
is_alive |
Verifica si está iniciado |
get_auto_start / set_auto_start |
Gestión de inicio automático |
- Windows 10/11 con soporte Hosted Network (algunos adaptadores nuevos lo desactivan).
- Rust (toolchain estable) -> https://www.rust-lang.org
- Node.js / Bun (estás usando Bun para scripts; también funciona npm/pnpm si se adapta).
Instala dependencias JS y ejecuta el modo dev (Tauri compila el lado Rust automáticamente):
# Instalar dependencias (ej: bun)
bun install
# Modo desarrollo (frontend + backend)
Si prefieres npm:
npm install
npm run tauri dev# Generar ejecutable
bun run tauri buildEl binario y artefactos quedarán en src-tauri/target/release/ y el bundle según el configurador (NSIS / MSI / etc.).
- El store
app_data.jsonpuede contener:usuario,autoStart,password. - Migraciones simples: si
autoStartera string, se convierte automáticamente a boolean. - La contraseña por defecto se fuerza a
"12345678"si no existe.
- No gestiona múltiples interfaces de red.
- No reintenta elevación fallida.
- No hay hashing de contraseña (solo desarrollo / demo).
- Posible incompatibilidad si Microsoft deshabilita Hosted Network en el adaptador.
- Hash + sal para credenciales.
- UI para regenerar / mostrar clave parcialmente enmascarada.
- Logs persistentes de eventos (inicio/detención/error).
- Internacionalización (i18n) multi-idioma.
- Test unitarios en Rust (parsing salida de
netsh). - Integración con bandeja del sistema (icono dinámico según estado).
Actualmente orientado a entorno cerrado/desarrollo. Para producción considera:
- Evitar exponer comandos peligrosos sin validación.
- Encriptar (o al menos ofuscar) valores sensibles en el store.
- Añadir sandboxing y hardening (Tauri ya reduce superficie, pero hay más por hacer).
- Haz fork / rama.
- Crea cambios pequeños y descriptivos.
- Ejecuta
bun run tauri devpara validar. - Envía PR con contexto claro.
Si la app se cierra con panic por datos corruptos en el store:
- Cierra la app.
- Localiza el archivo
app_data.json(normalmente en la carpeta de datos de la app /%APPDATA%). - Elimínalo o corrígelo manualmente.
MIT. Si usas este código para algo productivo, añade mención y endurece seguridad.