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.
autoStart
de 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 (
windows
crate) 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 build
El binario y artefactos quedarán en src-tauri/target/release/
y el bundle según el configurador (NSIS / MSI / etc.).
- El store
app_data.json
puede contener:usuario
,autoStart
,password
. - Migraciones simples: si
autoStart
era 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 dev
para 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.