Una plantilla de aplicación de escritorio moderna y lista para producción que combina las mejores tecnologías web. Construye aplicaciones de escritorio multiplataforma con la experiencia de desarrollo web.
- Electron 40 - Última versión estable para aplicaciones de escritorio multiplataforma
- React 18 - Último React con características concurrentes
- TypeScript 5 - Modo estricto habilitado para seguridad de tipos
- Vite 6 - HMR ultrarrápido y builds de producción optimizados
- HeroUI v2 - Biblioteca de componentes React hermosos y accesibles
- Tailwind CSS v4 - CSS utility-first con las últimas características
- Reemplazo de Módulos en Caliente (HMR) - Actualizaciones instantáneas durante el desarrollo
- Seguridad de Tipos - Soporte completo de TypeScript con modo estricto
- Herramientas Modernas - ESLint, Prettier configurados de fábrica
- Alias de Rutas - Importaciones limpias con prefijo
@/ - Límites de Error - Manejo elegante de errores
- Modo Oscuro - Soporte integrado para cambio de temas
- Diseño Responsivo - Funciona en todos los tamaños de pantalla
- Animaciones Suaves - Integración de Framer Motion
- Accesible - Componentes compatibles con WCAG
- Personalizable - Tematización fácil con Tailwind CSS
- Generación de Instaladores - Construye para Windows, macOS y Linux
- Multiplataforma - Base de código única para todas las principales plataformas de escritorio
Antes de comenzar, asegúrate de cumplir con los siguientes requisitos:
- Node.js >= 18.0.0
- Yarn >= 1.22.0 (recomendado) o npm/pnpm
- Git
Nota: Si necesitas construir dependencias nativas (opcional), es posible que necesites herramientas de compilación específicas de la plataforma (Visual Studio Build Tools para Windows, o Xcode Command Line Tools para macOS).
git clone https://github.com/LingChen-tsjmdlc/electron-vite-heroui-template.git my-electron-app
cd my-electron-appyarn install# Ejecutar en Electron con recarga en caliente
yarn dev
# O solo vista previa en navegador
yarn dev:web# Compilar para la plataforma actual
yarn build
# Compilar para plataformas específicas
yarn build:win # Windows
yarn build:mac # macOS
yarn build:linux # Linux
yarn build:all # Todas las plataformasmy-electron-app/
├── electron/ # Proceso principal de Electron
│ ├── main.ts # Entrada del proceso principal
│ └── preload.ts # Script de precarga para IPC
├── src/
│ ├── components/ # Componentes React reutilizables
│ ├── config/ # Archivos de configuración
│ ├── layouts/ # Diseños de página
│ ├── pages/ # Páginas de la aplicación
│ ├── styles/ # Estilos globales
│ └── types/ # Tipos TypeScript
├── docs/ # Documentación
├── package.json
├── vite.config.ts
├── tsconfig.json
└── tailwind.config.js
Edita la sección build en package.json:
{
"build": {
"appId": "com.yourcompany.yourapp",
"productName": "Nombre de tu App",
"directories": {
"output": "release"
}
}
}- Crea un nuevo archivo en
src/pages/:
// src/pages/my-page.tsx
export default function MyPage() {
return <div>Mi Nueva Página</div>;
}- Agrega la ruta en
src/App.tsx:
import MyPage from "./pages/my-page";
<Route path="/my-page" element={<MyPage />} />Usa clases de utilidad de Tailwind directamente:
<div className="flex flex-col items-center justify-center min-h-screen bg-gradient-to-br from-primary-500 to-secondary-500">
<h1 className="text-4xl font-bold text-white">Hola Mundo</h1>
</div>import { Button, Card, CardBody } from "@heroui/react";
<Card>
<CardBody>
<Button color="primary" size="lg">
Haz Clic
</Button>
</CardBody>
</Card>;Al usar enlaces en esta plantilla, debes distinguir entre navegación interna y enlaces externos:
Para navegación interna (React Router):
import { Link } from "react-router-dom";
// ✅ Correcto - Sin actualización de página
<Link to="/docs">Documentación</Link>
<Link to="/about">Acerca de</Link>Para sitios web externos:
import { Link } from "@heroui/link";
// ✅ Correcto - Se abre en el navegador
<Link href="https://github.com" isExternal>GitHub</Link>❌ Error Común:
import { Link } from "@heroui/link";
// ¡Incorrecto! Esto causa actualización de página y rompe el enrutamiento
<Link href="/docs">Documentación</Link>Script de Precarga (electron/preload.ts):
contextBridge.exposeInMainWorld("electronAPI", {
sendMessage: (channel: string, data: any) => {
ipcRenderer.send(channel, data);
},
onMessage: (channel: string, callback: Function) => {
ipcRenderer.on(channel, (event, ...args) => callback(...args));
},
});Uso en React:
window.electronAPI.sendMessage("custom-event", { data: "value" });¿Pantalla en blanco después de la compilación?
- Asegúrate de usar
HashRouterpara Electron (ya configurado) - Verifica que todos los activos estén incluidos en la matriz
filesdepackage.json
¿La recarga en caliente no funciona?
- Asegúrate de ejecutar
yarn devy noyarn build - Verifica que HMR esté habilitado en vite.config.ts
¡Las contribuciones son bienvenidas! Siéntete libre de enviar un Pull Request.
Este proyecto está licenciado bajo la Licencia MIT - consulta el archivo LICENSE para más detalles.
- Electron - Framework multiplataforma
- HeroUI - Biblioteca de componentes hermosos
- Vite - Herramienta de compilación ultrarrápida
- Tailwind CSS - CSS utility-first
- React - Biblioteca UI
Si encontraste útil esta plantilla, ¡considera darle una ⭐ en GitHub!
Para preguntas o problemas:
- Abre un Issue
- Inicia una Discussion
Construido con ❤️ usando Electron, React, Vite y HeroUI
