Aplicación fullstack integrada que permite gestionar clientes, productos y compras utilizando TypeScript, MikroORM y SQLite, todo dentro del mismo proyecto sin usar API REST.
- ✅ TypeScript - Tipado estático y código robusto
- ✅ MikroORM - ORM moderno para TypeScript/JavaScript
- ✅ SQLite - Base de datos embebida y liviana
- ✅ Arquitectura integrada - Backend y frontend en el mismo proceso
- ✅ Sin API REST - Comunicación directa interna entre capas
- ✅ CRUD completo - Crear, Leer, Actualizar y Eliminar
- ✅ Relaciones - Entidades relacionadas con decoradores MikroORM
- ✅ Separación de responsabilidades - HTML, CSS y JS en archivos separados
orm-test/
├── src/
│ ├── entities/ # Entidades de MikroORM
│ │ ├── Cliente.ts
│ │ ├── Producto.ts
│ │ └── Compra.ts
│ ├── services/ # Servicios CRUD
│ │ ├── ClienteService.ts
│ │ ├── ProductoService.ts
│ │ └── CompraService.ts
│ ├── mikro-orm.config.ts
│ ├── app.ts # Instancia de la aplicación
│ ├── server.ts # Servidor integrado
│ ├── index.ts # Script de demostración
│ └── init.ts # Script de inicialización
├── public/
│ ├── index.html # Interfaz de usuario
│ ├── styles.css # Estilos
│ └── app.js # Lógica del frontend
├── dist/ # Código compilado
├── database.sqlite # Base de datos SQLite
├── package.json
└── tsconfig.json
- Clonar el repositorio
- Instalar dependencias:
npm installnpm start- Compila y levanta el servidor (⭐ recomendado)npm run server- Solo levanta el servidor (ya compilado)npm run init- Compila e inicializa la BD con datos de ejemplonpm run init:db- Solo inicializa BD (ya compilado)
npm run dev- Compila y arranca servidornpm run build- Solo compila TypeScriptnpm run clean- Limpia carpeta distnpm run rebuild- Limpia y compilanpm run full-start- Limpia, compila, inicializa BD y arranca servidor
npm run demo- Ejecuta el script de demostración en consola
Primero, crea las tablas y carga datos de ejemplo:
npm run initnpm startEl servidor estará disponible en:
Una vez en el navegador podrás:
- ✅ Agregar clientes y productos
- ✅ Editar información existente
- ✅ Eliminar registros
- ✅ Registrar compras relacionando clientes con productos
- ✅ Ver todas las operaciones reflejadas en SQLite en tiempo real
id- Identificador único (autoincremental)nombre- Nombre del clienteemail- Email del clientecompras- Relación OneToMany con Compra
id- Identificador único (autoincremental)nombre- Nombre del productoprecio- Precio del productocompras- Relación OneToMany con Compra
id- Identificador único (autoincremental)cliente- Relación ManyToOne con Clienteproducto- Relación ManyToOne con Productocantidad- Cantidad de productos compradosfecha- Fecha de la compra
- TypeScript v5.3.3 - Lenguaje de programación
- MikroORM v5.9.0 - ORM para TypeScript/JavaScript
- SQLite - Base de datos embebida
- Node.js - Entorno de ejecución
- HTML5 - Estructura del frontend
- CSS3 - Estilos
- JavaScript - Lógica del cliente
Este proyecto implementa una arquitectura integrada donde:
- El servidor Node.js genera HTML dinámicamente
- Los servicios son invocados directamente en el servidor
- MikroORM maneja todas las operaciones de base de datos
- No hay API REST - toda la comunicación es interna
- El frontend envía acciones al servidor que ejecuta los servicios directamente
Usuario → Frontend (HTML/JS) → Servidor (Node.js) → Servicios → MikroORM → SQLite
Todas las capas se ejecutan en el mismo proceso, garantizando:
- Mayor rendimiento
- Menor latencia
- Simplicidad en el código
- Facilidad de debugging
Sergie Code
Software Engineer especializado en Frontend y Tech Lead con experiencia en empresas americanas. Creador de contenido educativo en múltiples plataformas, compartiendo conocimientos sobre programación, desarrollo web e Inteligencia Artificial.
- 💼 Tech Lead en importante empresa americana de seguros
- 👨🏫 Instructor en UTN, Codo a Codo y Argentina Programa 4.0
- 🎓 Docente en Digital House (Certified Tech Developer)
- 📚 Creador de cursos de HTML, CSS, JavaScript, React y Python
- 🎤 Speaker en eventos tecnológicos (ADA13, Fingurú, SAIA)
- Ingeniería Electrónica - UNC (Universidad Nacional de Córdoba)
- Java Developer Engineer - Educación IT
- Múltiples especializaciones en Frameworks y tecnologías
📸 Instagram - Tips y contenido diario 🧑🏼💻 LinkedIn - Networking profesional 📽️ YouTube - Cursos gratuitos y tutoriales 😺 GitHub - Proyectos y código 👤 Facebook - Comunidad 🎞️ TikTok - Contenido rápido 🕊️ Twitter - Actualizaciones 🧵 Threads - Conversaciones
Este proyecto es de código abierto y las contribuciones son bienvenidas. Si encuentras algún bug o tienes sugerencias de mejora, no dudes en abrir un issue o enviar un pull request.
⭐ Si este proyecto te fue útil, no olvides darle una estrella en GitHub y seguir a @sergiecode para más contenido educativo sobre programación.