martes, 1 de septiembre de 2026

[NextJS] Fenix Forge

Fenix Forge es una aplicación web de uso local diseñada para unir archivos MP3 y generar videos MP4 personalizados. Está desarrollada con Next.js 16 y Tailwind CSS, y realiza todo el procesamiento multimedia utilizando FFmpeg nativo de forma directa en tu computadora.

## Funcionalidades principales

* Combinador de audio: Permite seleccionar múltiples MP3, reordenarlos mediante drag & drop, preescuchar cualquier track antes de procesar, seguir la lectura con barras de progreso individuales y visualizar la línea de tiempo con tiempos acumulados. Incluye detección automática de compatibilidad para concatenar audio en segundos sin reencodear (con fallback seguro si los formatos difieren).
* Generador de video: Permite asignar una imagen de fondo por canción o utilizar una global para todo el proyecto. Incluye texto centrado personalizable (con color de fuente y borde configurables, o bien la opción de exportar sin texto) y vista previa en vivo antes del render.
* Tema Gruvbox: Soporte nativo para modo claro y oscuro.
* Notificaciones: Feedback sonoro y toast emergente al completar el renderizado, junto con el tiempo total de conversión en formato legible.
* Diseño responsive: Adaptable a móviles, tablets y escritorio, con un panel de vista previa fijo en pantallas grandes.

## Capturas de pantalla


 
 

## Desarrollo local

### 1. Requisitos previos


* Node.js 18 o superior.
* FFmpeg instalado y disponible en el PATH del sistema (ffmpeg -version).
* Una fuente TrueType (.ttf) disponible para superponer texto en los videos (ej. fonts-dejavu-core).

En sistemas Debian/Ubuntu podés instalar las dependencias con:

sudo apt install ffmpeg fonts-dejavu-core

### 2. Instalación

Cloná el repositorio e instalá las dependencias:

git clone https://github.com/IsmaelHeredia/fenix-forge-nextjs.git
cd fenix-forge-nextjs
npm install


### 3. Configuración

Creá el archivo de variables de entorno:

cp .env.example .env.local

Si ffmpeg no está en el PATH global o tu fuente se encuentra en una ruta personalizada, definí las variables en .env.local:

FFMPEG_PATH=/usr/bin/ffmpeg
FFMPEG_FONT_PATH=/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf


### 4. Ejecución

Iniciá el servidor de desarrollo:

npm run dev

Accedé a la aplicación en http://localhost:3000.

 

 Link del proyecto 

sábado, 15 de agosto de 2026

[Angular] Light Pomodoro

Light Pomodoro es una aplicación de temporizador Pomodoro con gestión de tareas, cuyo diseño y experiencia de usuario están inspirados en Pomofocus, construida en Angular y estilizada con TailwindCSS bajo la paleta Gruvbox Light. Todo el estado (tareas, configuración y progreso del temporizador) persiste localmente en el navegador, sin necesidad de backend ni base de datos.

## Funcionalidades principales

### Temporizador Pomodoro


- Tres modos de trabajo: Pomodoro, Descanso Corto y Descanso Largo, con cambio instantáneo entre ellos.
- Theming dinámico: Toda la interfaz se adapta automáticamente según el modo activo.
- Conteo real: El temporizador calcula el tiempo restante contra un timestamp real, por lo que no se desincroniza si se cierra o recarga la pestaña mientras corre.
- Transición automática: Al completar un pomodoro, la app avanza sola a Descanso Corto o Descanso Largo según el intervalo configurado, y viceversa.
- Notificaciones: Sonido y notificación del sistema operativo al finalizar cada ciclo, incluso con la pestaña en segundo plano.

### Gestión de tareas

- Control total: Creación, edición inline, marcado como completada y eliminación de tareas.
- Reordenamiento: Organización de tareas mediante Drag & Drop.
- Persistencia: Las tareas y su orden se mantienen guardadas en el navegador aunque se cierre la aplicación.

### Configuración

- Modal de ajustes: Duración personalizada (en minutos) de Pomodoro, Descanso Corto y Descanso Largo.
- Auto Inicio: Activación opcional de inicio automático para breaks y pomodoros.
- Intervalo de Descanso Largo: Configuración de cada cuántos pomodoros corresponde un descanso largo.
- Validación: Los campos numéricos solo aceptan enteros positivos.

## Capturas de pantalla

A continuación, se muestran algunas imágenes de la aplicación en funcionamiento:

 

### Instalación del proyecto 

1. Clonar el repositorio

git clone https://github.com/IsmaelHeredia/light-pomodoro-angular.git
cd light-pomodoro-angular

 
2. Instalación de dependencias

npm install

 
3. Ejecución del proyecto en modo desarrollo

ng serve

Una vez iniciado, se podrá acceder desde la siguiente URL:

http://localhost:4200

 
4. Build de producción

ng build

### Pruebas E2E

El proyecto incluye tests end-to-end reales sobre la interfaz, cubriendo navegación entre modos, conteo del temporizador, CRUD de tareas, drag & drop, persistencia en `localStorage` y validación de configuración.

Para ejecutar los tests:

npm run test:e2e

También están disponibles los siguientes modos:

npm run test:e2e:ui
npm run test:e2e:headed

Link del proyecto  

miércoles, 22 de julio de 2026

[NextJS] Fenix Music

Fenix Music es una aplicación web full-stack pensada para gestionar tu biblioteca multimedia local. Está construida con Next.js 14 y estructurada bajo una arquitectura Domain-Driven Design (DDD), lo que permite mantener el código ordenado y escalable a medida que el proyecto crece.

Funcionalidades principales

Reproductor multimedia avanzado: Barra de control persistente para audio. Incluye visualización de ondas (waveform) para canciones, soporte para reproducción de videos locales, estaciones de radio, videos de YouTube y transmisiones de YouTube en vivo.

Listas personalizadas: Creación, edición y gestión completa de tus propias listas de reproducción.

Escaner inteligente: Sistema integrado para indexar automáticamente tu biblioteca local de música y videos, manteniendo todo organizado.

Biblioteca centralizada: Acceso rápido a todo tu contenido, con búsqueda ágil por artista o título.

Estructura del proyecto

Para mantener todo bajo control, se dividió la lógica en módulos dentro de `src/modules/`. Es una estructura clara donde cada pieza tiene su lugar:

src/modules/[modulo]/
├── application/     # Casos de uso (la lógica de la app)
├── domain/          # Entidades y reglas de negocio
└── infrastructure/  # Implementación técnica (Drizzle + SQLite)

 

Capturas de pantalla

 







Desarrollo local
 

1. Requisitos

* Node.js 18+
 

2. Instalación

Clona el repositorio, instala las dependencias y prepara las variables de entorno:

git clone https://github.com/IsmaelHeredia/fenix-music-nextjs.git
cd fenix-music-nextjs
npm install
cp .env.example .env.local

 
3. Configuración de la base de datos

Prepara la base de datos SQLite y ejecuta las migraciones necesarias:

npm run db:setup

 
4. Ejecución

Ejecuta la aplicación en modo desarrollo:

npm run dev

El proyecto va a estar disponible en http://localhost:3000.

 

 Link del proyecto 

miércoles, 20 de mayo de 2026

[NodeJS + VueJS] StreamCat

StreamCat es una aplicación SaaS full-stack dedicada al streaming de audio. El proyecto está estructurado de forma independiente en tres repositorios: documentación general, API backend y cliente frontend.

Stack Tecnológico

  • Backend: Node.js, Express, Prisma ORM.

  • Base de datos: PostgreSQL.

  • Frontend: Vue 3, Vite, Tailwind CSS, Pinia.

  • Servicios externos: Cloudinary (gestión de imágenes) y Resend (correos transaccionales).

Funcionalidades Principales

  • Autenticación y Roles: Registro, login con JWT, verificación por correo y recuperación de contraseña. Roles diferenciados para usuarios (USER) y administradores (ADMIN).

  • Reproductor de Audio: Navegación entre tracks, control de volumen, modos shuffle y repeat, junto con un visualizador de audio.

  • Gestión de Contenido (CRUD): Control de streams (creación, edición y borrado), administración global de géneros y subida de portadas mediante Cloudinary.

  • Filtros y Paginación: Buscador por nombre y filtrado por género musical con paginación procesada en el servidor.

  • Perfil: Modificación de datos de usuario, avatar y cambio de contraseña con cierre de sesión automático por seguridad.

  • Interfaz: Soporte nativo para modo claro y modo oscuro con persistencia.

Capturas de pantalla

 









 

Repositorios y Código Fuente

sábado, 31 de enero de 2026

[NextJS] Light Board

Light Board es una plataforma de gestión visual basada en metodologías Kanban, diseñada para organizar flujos de trabajo mediante una estructura jerárquica de espacios de trabajo, tableros y tarjetas interactivas.

## Funcionalidades principales

### Gestión de workspaces

- Espacios independientes: Creación, edición y eliminación de áreas de trabajo personalizadas.

- Personalización visual: Asignación de wallpapers únicos por workspace mediante una galería integrada.

- Organización dinámica: Reordenamiento global de workspaces mediante Drag & Drop.

### Tablero kanban dinámico

- Flujos de trabajo: Gestión de columnas con soporte para edición de títulos y eliminación en cascada de contenidos.

- Tarjetas: Control total sobre tareas (creación, edición de descripción y gestión de estados).

- Etiquetas: Sistema integrado directamente en la tarjeta que permite asignar etiquetas únicas por workspace, garantizando una organización coherente y aislada.

- Interactividad avanzada: Sistema de arrastre suave para reordenar columnas y desplazar tarjetas entre ellas de forma intuitiva.

## Capturas de pantalla

A continuación, se muestran algunas imágenes de la aplicación en funcionamiento: 







### Instalación del proyecto
 
1. Clonar el repositorio

git clone https://github.com/IsmaelHeredia/nextjs-light-board.git
cd nextjs-light-board


2. Instalación de dependencias
 
npm install

3. Variables de entorno

Crea un archivo .env en la raíz del proyecto:

NODE_ENV=development
 
4. Inicializar la base de datos

Para crear la bd:
 
npm run generate
npm run migrate


5. Para ejecutar los seeds de prueba:

npm run seed

6. Ejecución del proyecto en modo desarrollo
 
npm run dev

7. Build de producción
 
npm run build
npm start


### Pruebas de integración

El proyecto incluye tests de integración reales sobre las rutas API.

Para ejecutar los tests:
 
npm test

### Uso con Docker

Para poner en marcha el servicio de NextJS usando Docker, se debe ejecutar el siguiente comando:
 
docker compose up -d --build

Una vez que el servicio esté activo, se podra acceder desde las siguiente URL:
 
http://localhost:3000

 Link del proyecto 

viernes, 2 de enero de 2026

[NextJS] Light Notes

Light Notes es una aplicación web minimalista para la gestión de workspaces y notas, construida con Next.js, persistencia local con SQLite, Drizzle ORM, y pruebas de integración usando Vitest.

El proyecto está pensado para ser simple, rápido, sin depender de servicios externos.

Funcionalidades principales

Gestión de Workspaces

- Crear workspaces

- Listar todos los workspaces

- Actualizar el nombre de un workspace

- Eliminar workspaces
 

Gestión de Notas

- Crear notas asociadas a un workspace

- Listar notas por workspace

- Actualizar el contenido de una nota

- Eliminar notas
 

Buscador

El buscador permite filtrar las notas dentro del workspace activo, combinando distintos criterios de texto y fecha.

Los filtros disponibles son:


Búsqueda por texto

- Filtra las notas cuyo contenido incluya el texto ingresado.
 

Filtros rápidos por fecha

- Hoy: muestra notas creadas en el día actual.

- Ayer: muestra notas creadas el día anterior.

- Esta semana: muestra notas desde el inicio de la semana hasta hoy.

- Este mes: muestra notas del mes y año actuales.

- Los filtros rápidos son excluyentes entre sí.
 

Filtro por año

- Permite mostrar solo notas creadas en un año específico.

- Puede combinarse con otros filtros.
 

Rango de fechas personalizado

- Desde: fecha mínima de creación de la nota.

- Hasta: fecha máxima de creación de la nota.
 

Combinación de filtros

- Los filtros pueden combinarse (por ejemplo: texto + mes, o texto + rango de fechas).

Capturas de pantalla

A continuación, se muestran algunas imágenes de la aplicación en funcionamiento:



Instalación del proyecto

1. Clonar el repositorio

git clone https://github.com/IsmaelHeredia/nextjs-light-notes.git
cd light-notes

 
2. Instalación de dependencias

npm install
 

3. Variables de entorno

Crea un archivo .env en la raíz del proyecto:

NODE_ENV=development

 
4. Inicializar la base de datos

Para crear la bd:

npm run generate
npm run migrate

 
5. Para ejecutar los seeds de prueba:

npm run seed

 
6. Ejecución del proyecto en modo desarrollo

npm run dev

 
7. Build de producción

npm run build
npm start

 

Pruebas de integración

El proyecto incluye tests de integración reales sobre las rutas API.

Para ejecutar los tests:

npm test

Uso con Docker

Para poner en marcha el servicio de NextJS usando Docker, se debe ejecutar el siguiente comando:

docker compose up -d --build

Una vez que el servicio esté activo, se podra acceder desde las siguiente URL:

http://localhost:3000


viernes, 7 de noviembre de 2025

[NestJS + Angular] Game Library

Este proyecto es un sistema de gestión de juegos, construido con NestJS para el backend, Angular (integrado con Material Design) para el frontend, y una base de datos PostgreSQL.

## Funcionalidades principales

- Autenticación segura: Autenticación obligatoria basada en JWT con opciones para actualizar el perfil del usuario (nombre de usuario, contraseña y foto de perfil).

- Gestión integral de géneros: Operaciones CRUD completas (Crear, Leer, Actualizar, Eliminar) para géneros.

- Gestión avanzada de juegos:

    - Operaciones CRUD completas para juegos.

    - Motor de Búsqueda y Paginación: Búsqueda eficiente por nombre y géneros.

    - Filtros Persistentes: Utilización de Angular Signals para mantener los filtros de búsqueda activos (incluyendo la opción de favoritos) mientras el usuario navega por la aplicación, mejorando la coherencia y la usabilidad.

    - Gráficos Interactivos: Visualización clara de la distribución de juegos, mostrando de forma gráfica cuántos juegos hay por cada género.

## Capturas de pantalla

A continuación, se muestran algunas imágenes del sistema en funcionamiento:

 
 
 
 
 
 

## Instalación del proyecto

### Backend (NestJS)


Sigue estos pasos para configurar el backend de NestJS:

1. Configuración del entorno:

- Renombra el archivo .env.example a .env.

- Configura los parámetros de conexión a tu base de datos PostgreSQL dentro del archivo .env.

2. Instalación de dependencias:

- Ejecuta el siguiente comando para instalar todas las dependencias del proyecto:

npm install --legacy-peer-deps

3. Configuración de JWT:

Dentro del archivo .env, añade o verifica las siguientes variables necesarias para la autenticación:

JWT_SECRET=supersecret
JWT_EXPIRES_IN=1d


4. Configuración de la base de datos:

- Ejecuta las migraciones para crear las tablas en tu base de datos :

npm run migration:run:dev

- Carga los datos iniciales en la base de datos :

npm run seed:dev

5. Ejecución del Servidor

Una vez instaladas las dependencias, inicia la aplicación en modo desarrollo ejecutando:

npm run start:dev

### Frontend (Angular)

1. Instalación de Dependencias

- Abre tu terminal en el directorio raíz del proyecto frontend.

- Ejecuta el siguiente comando para instalar todas las dependencias de Angular:

npm install

2. Ejecución del Servidor

Una vez instaladas las dependencias, inicia la aplicación en modo desarrollo ejecutando:

ng serve

## Pruebas unitarias

#### Backend (NestJS)


Para ejecutar las pruebas unitarias de NestJS (usando Jest), ejecuta el siguiente comando:

npm run test:e2e --verbose

#### Frontend (Angular)

Para ejecutar las pruebas unitarias de Angular (usando Karma y Jasmine):

Configuración de Headless Browser

Si ejecutas las pruebas en un entorno sin interfaz gráfica, es posible que necesites configurar la ruta del navegador. 

Por ejemplo, para Chromium:

export CHROME_BIN=$(which chromium)
 

Ejecución

Ejecuta todas las pruebas de los componentes y servicios de Angular:

ng test

### Uso con Docker

Para poner en marcha los servicios de NestJS y Angular usando Docker, se deben seguir los siguientes pasos:

Configuración del entorno:

1. Renombra el archivo .env.example ubicado en la raíz del proyecto a .env.

2. Dentro del archivo .env que acabas de crear, establece la variable de entorno DOCKER_OP a 1. Esto es fundamental para que la aplicación se adapte a los servicios definidos en Docker Compose.

3. Iniciar servicios: Ejecuta el siguiente comando en tu terminal desde la raíz del proyecto para construir y levantar todos los servicios configurados:

docker compose up -d --build

Una vez que los servicios estén activos, se podran acceder desde las siguientes URLs:

Backend NestJS: http://localhost:7777

Frontend Angular: http://localhost:9991 

 Github 

viernes, 10 de octubre de 2025

[.Net Core + Next.Js] Examenes NET

Este proyecto es una aplicación web desarrollada con .NET Core 8 como backend y Next.js como frontend, diseñada para gestionar cursos, exámenes y usuarios de manera eficiente y dinámica.

## Funcionalidades principales

### Gestión de Usuarios

- Alumnos y Profesores: CRUD completo (Crear, Leer, Actualizar, Eliminar) con filtros por nombre utilizando Redux.

- El administrador pueden modificar sus propios datos: nombre, contraseña e imagen de perfil.

### Gestión de Cursos

- CRUD completo para cursos con asignación de profesor al momento de la creación.

- Se pueden inscribir alumnos a múltiples cursos.

- Gestión de documentos relacionados a los cursos, almacenados en el backend.

### Gestión de Exámenes

- Creación de exámenes personalizados por curso.

- Permite asignar preguntas y respuestas, y utilizar un simulador de examen para visualizar cómo lo vería el estudiante.

### Funcionalidades avanzadas

- Búsqueda y filtrado: Todos los CRUD permiten filtrar por nombre usando Redux.

- Paginación: Todos los listados están paginados para un mejor manejo de la información.

- Estadísticas: Se incluyen dos gráficos principales: Top 5 Cursos por alumnos inscritos y Top 5 Profesores por cursos impartidos.

## Capturas de pantalla

A continuación, se muestran algunas imágenes del sistema en funcionamiento: 

 
 
 


 



## Instalación del proyecto

### Backend (.NET Core)


Sigue estos pasos para configurar la API de .NET Core ubicada en la carpeta SistemaAPI.

1 - Configuración inicial

* Copia y configura el archivo de entorno:

* Renombra el archivo appsettings.json.example a appsettings.json y ábrelo para editarlo.

* Ajusta los valores necesarios dentro del archivo. Los campos principales que debes revisar son los siguientes:

"ConnectionStrings": {
  "SqlServer": "",
  "MySQL": "Server=localhost;Database=db;User Id=root;Password=root;"
},
"Jwt": {
  "Key": "",
  "Issuer": "",
  "Audience": ""
}

 
Conexiones a base de datos:

* El proyecto permite utilizar SQL Server o MySQL.
* Configura una de las dos cadenas de conexión según la base de datos que vayas a usar.

Por ejemplo:

* Para MySQL:

"MySQL": "Server=localhost;Database=db;User Id=root;Password=root;"

* Para SQL Server:

"SqlServer": "Server=localhost;Database=db;User Id=sa;Password=TuPassword;"
 

Configuración de JWT:

* Estos valores se utilizan para la autenticación basada en tokens.

* Debes completar los campos Key, Issuer y Audience.

Para generar una clave segura (Key) en .NET, puedes ejecutar el siguiente comando en tu terminal de PowerShell o Bash:

openssl rand -base64 32

Copia el valor generado y pégalo en el campo "Key" dentro del archivo appsettings.json.
 

2 - Ejecución de comandos

Abre la terminal en la carpeta SistemaAPI y ejecuta los siguientes comandos en orden:

dotnet tool install --global dotnet-ef --version 8.*
dotnet ef migrations add MigracionInicial
dotnet ef database update


Estos comandos instalan la herramienta de Entity Framework, crean la primera migración y actualizan la base de datos con el esquema inicial.

### Frontend (Next.js)

Sigue estos pasos para configurar el frontend de Next.js ubicado en la carpeta SistemaFrontend:

- Renombra el archivo .env.example a .env en el directorio raíz del proyecto frontend.

- Edita el archivo .env y configura las siguientes variables de entorno según tu configuración:

NEXT_PUBLIC_BACKEND_URL=http://localhost:7777 # URL de tu backend de Net Core
NEXTAUTH_SECRET=supersecreto123 # Una cadena secreta larga y aleatoria para NextAuth
NEXT_PUBLIC_TIMEOUT_TOAST=4000
NEXT_PUBLIC_TIMEOUT_REDIRECT=5000


- Cambia NEXTAUTH_SECRET por una cadena de caracteres larga, compleja y aleatoria para la seguridad de la autenticación.

Instalación de dependencias:

- Abre tu terminal en el directorio raíz del proyecto frontend.

- Ejecuta el siguiente comando para instalar todas las dependencias de Node.js:

npm install

---

### Iniciar la aplicación

Para poner en marcha la aplicación completa, asegúrate de que tanto el backend de .NET Core como el frontend de Next.js estén configurados correctamente siguiendo las instrucciones de instalación respectivas.

1. Iniciar el backend (.NET Core):

- Abre una nueva terminal.

- Navega hasta el directorio raíz de tu proyecto .NET Core.

- Ejecuta el siguiente comando para iniciar el servidor de desarrollo de .NET Core:

dotnet run

2. Iniciar el frontend (Next.js):

- Abre otra nueva terminal (manteniendo la del backend abierta).

- Navega hasta el directorio raíz de tu proyecto Next.js.

Ejecuta el siguiente comando para iniciar el servidor de desarrollo de Next.js:

npm run dev

Una vez que ambos servidores estén en funcionamiento, la aplicación completa estará accesible a través de la URL del frontend (http://localhost:3000).

 

Github

 

[NextJS] Fenix Forge

Fenix Forge es una aplicación web de uso local diseñada para unir archivos MP3 y generar videos MP4 personalizados. Está desarrollada con Ne...