@angelitosystems/rapidfast
v1.0.7
Published
Framework web rápido y moderno para Node.js
Downloads
112
Maintainers
Readme
RapidFAST Framework
⚡ Framework para desarrollo rápido de APIs con TypeScript y Express
RapidFAST es un framework de Node.js inspirado en NestJS que permite crear aplicaciones backend con una estructura clara y limpia, utilizando decoradores, inyección de dependencias y una arquitectura modular.
🚀 Características
- Arquitectura Modular: Estructura tu código en módulos reutilizables
- Decoradores TypeScript: Define rutas, controladores y servicios con sintaxis declarativa
- Inyección de Dependencias: Sistema avanzado de DI para una mejor organización del código
- Middleware: Soporte para middleware global y por ruta
- CLI Integrado: Herramientas para crear proyectos y generar código rápidamente
- Compatible con Express: Construido sobre Express para máxima compatibilidad
- RapidWatch™: Sistema propietario integrado de recarga automática sin dependencias externas
- Configurable: Configuración flexible para diferentes entornos
- Swagger Integrado: Documentación automática de API con interfaz visual
📋 Requisitos
- Node.js 14.0 o superior
- TypeScript 4.0 o superior
- npm, yarn o pnpm
🔧 Instalación
Instalación global (recomendada para usar el CLI)
npm install -g @angelitosystems/rapidfastInstalación en un proyecto
npm install @angelitosystems/rapidfastInstalación de la versión beta
npm install @angelitosystems/[email protected] -g🏗️ Creación de un nuevo proyecto
# Usando la herramienta CLI instalada globalmente
rapidfast new mi-proyecto
# Especificar un directorio diferente para crear el proyecto
rapidfast new mi-proyecto --directory C:/mis-proyectos
# Usar un gestor de paquetes específico
rapidfast new mi-proyecto --package-manager pnpm
# Omitir la instalación de dependencias
rapidfast new mi-proyecto --skip-installOpciones para el comando new
| Opción | Descripción |
| --------------------------------- | ---------------------------------------------------------- |
| -d, --directory <dir> | Directorio donde crear el proyecto |
| -s, --skip-install | Omitir instalación de dependencias |
| -p, --package-manager <manager> | Gestor de paquetes a utilizar (npm, yarn, pnpm) |
Nota importante sobre nombres y rutas:
- El nombre del proyecto no debe contener barras (
/o\) ni caracteres especiales (*?:"<>|) - Para proyectos en rutas que contienen espacios, usa la opción
--directorypara evitar problemas - Ejemplos:
rapidfast new mi-api --directory "C:/Mi Carpeta/Proyectos"✅rapidfast new "mi api"❌ (no usar espacios en el nombre)rapidfast new mi/api❌ (no usar barras en el nombre)
🚀 Iniciar el servidor de desarrollo
Navega a tu proyecto y ejecuta:
# Usando el CLI con RapidWatch™ (recarga automática propietaria)
rapidfast serve
# Con opciones personalizadas
rapidfast serve --port 4000 --host 0.0.0.0
# Omitir la recarga automática
rapidfast serve --no-watch
# O usando scripts del package.json
npm run serve📁 Estructura de un proyecto
mi-proyecto/
├── src/
│ ├── app/
│ │ ├── app.module.ts # Módulo principal
│ │ ├── app.controller.ts # Controlador principal
│ │ └── test/ # Módulo de prueba
│ │ ├── test.module.ts
│ │ └── test.controller.ts
│ ├── main.ts # Punto de entrada de la aplicación
│ └── config/ # Configuraciones
├── .env # Variables de entorno
├── .env.example # Ejemplo de variables de entorno
├── package.json
└── tsconfig.json📝 Uso básico
Crear un controlador
// usuario.controller.ts
import {
Controller,
Get,
Post,
Put,
Delete,
Req,
Res,
} from "@angelitosystems/rapidfast";
import { Request, Response } from "express";
@Controller("/usuarios")
export class UsuarioController {
@Get()
async getAll(@Res() res: Response) {
return res.json({ message: "Lista de usuarios" });
}
@Get(":id")
async getOne(@Req() req: Request, @Res() res: Response) {
return res.json({ message: `Usuario con ID: ${req.params.id}` });
}
@Post()
async create(@Req() req: Request, @Res() res: Response) {
return res.status(201).json({ message: "Usuario creado" });
}
}Crear un servicio
// usuario.service.ts
import { Injectable } from "@angelitosystems/rapidfast";
@Injectable()
export class UsuarioService {
private usuarios = [];
findAll() {
return this.usuarios;
}
findOne(id: string) {
return this.usuarios.find((user) => user.id === id);
}
create(data: any) {
const newUser = { id: Date.now().toString(), ...data };
this.usuarios.push(newUser);
return newUser;
}
}Crear un módulo
// usuario.module.ts
import { Module } from "@angelitosystems/rapidfast";
import { UsuarioController } from "./usuario.controller";
import { UsuarioService } from "./usuario.service";
@Module({
controllers: [UsuarioController],
providers: [UsuarioService],
})
export class UsuarioModule {}🛠️ CLI de RapidFAST
RapidFAST incluye una CLI potente para facilitar la creación de proyectos y recursos:
Comandos disponibles
| Comando | Descripción |
| ------------------------------------ | -------------------------------- |
| rapidfast new <nombre> | Crea un nuevo proyecto |
| rapidfast serve | Inicia el servidor de desarrollo |
| rapidfast generate <tipo> <nombre> | Genera un nuevo recurso |
Opciones para el comando serve
| Opción | Descripción |
| --------------------- | -------------------------------------------------------------------- |
| -p, --port <puerto> | Puerto donde se ejecutará el servidor (por defecto: 3000) |
| -h, --host <host> | Dirección en la que se escucharán conexiones (por defecto: localhost)|
| -w, --watch | Activa RapidWatch para recarga automática (por defecto: true) |
| --no-watch | Desactiva RapidWatch y la recarga automática |
| -d, --dev | Modo desarrollo (por defecto: true) |
| --prod | Modo producción |
Generación de recursos
# Generar un controlador
rapidfast generate controller usuario
# Generar un servicio
rapidfast generate service usuario
# Generar un middleware
rapidfast generate middleware auth
# Generar un módulo
rapidfast generate module usuario
# Generar un recurso completo (controlador, servicio y módulo)
rapidfast generate resource usuarioTambién puedes usar alias más cortos:
rapidfast g controller usuario
rapidfast g:controller usuario⚡ RapidWatch™: Tecnología propietaria de recarga automática
RapidFAST incluye RapidWatch™, una tecnología propietaria exclusiva para recarga automática, desarrollada específicamente para este framework y sin dependencia de herramientas externas como nodemon. Esta tecnología es propiedad registrada de Angelito Systems y está disponible exclusivamente como parte del framework RapidFAST.
Características exclusivas de RapidWatch™:
- Tecnología propietaria: Desarrollada exclusivamente para RapidFAST, no disponible en otros frameworks
- Rendimiento superior: Optimizado específicamente para aplicaciones RapidFAST con hasta un 30% menos de consumo de memoria
- Detección inteligente: Algoritmo avanzado para detectar cambios relevantes en tiempo real
- Compatibilidad amplia: Soporte garantizado para sistemas Windows, macOS y Linux
- Manejo de rutas complejas: Solución robusta para directorios con espacios y caracteres especiales
- Arranque rápido: Inicio optimizado sin dependencias adicionales
- Integración nativa: Funciona perfectamente con la arquitectura de módulos de RapidFAST
- Interfaz visual moderna: Logo y mensajes informativos con gradientes de color
- Notificaciones en tiempo real: Información detallada sobre cambios detectados
Funcionamiento interno de RapidWatch™
RapidWatch™ utiliza una arquitectura de 3 capas para ofrecer la mejor experiencia de desarrollo:
- Capa de monitoreo: Vigila constantemente el sistema de archivos buscando cambios en archivos
.ts,.js, y.json - Capa de análisis: Determina qué cambios son relevantes y requieren reinicio
- Capa de gestión de procesos: Detiene y reinicia la aplicación de forma óptima
Uso de RapidWatch™
RapidWatch™ se activa automáticamente al usar rapidfast serve y puede configurarse con las siguientes opciones:
| Opción | Descripción |
| --------------- | ------------------------------------------------ |
| --watch | Activar RapidWatch™ (activado por defecto) |
| --no-watch | Desactivar RapidWatch™ |
# Activar RapidWatch™ (comportamiento predeterminado)
rapidfast serve
# Desactivar RapidWatch™
rapidfast serve --no-watch
# Configurar puerto y host con RapidWatch™
rapidfast serve --port 5000 --host 0.0.0.0Diagrama de funcionamiento de RapidWatch™
[Cambio en archivo] → [Detección] → [Análisis] → [Gestión de proceso]
↓ ↓ ↓ ↓
src/file.ts Notificación Evaluación Reinicio optimizado
visual de relevancia de la aplicaciónComparativa con otras soluciones
| Característica | RapidWatch™ (RapidFAST) | nodemon | ts-node-dev | |--------------------------------------|------------------------|---------------|---------------| | Integración nativa con RapidFAST | ✅ Completa | ❌ Ninguna | ❌ Ninguna | | Optimizado para TypeScript | ✅ Sí | ⚠️ Parcial | ✅ Sí | | Soporte para rutas con espacios | ✅ Mejorado | ⚠️ Problemático| ⚠️ Problemático| | Manejo de caracteres especiales | ✅ Completo | ⚠️ Parcial | ⚠️ Parcial | | Banner visual personalizado | ✅ Sí | ❌ No | ❌ No | | Notificaciones con gradientes | ✅ Sí | ❌ No | ❌ No | | Dependencia externa | ✅ Ninguna | ❌ Requiere instalación | ❌ Requiere instalación | | Arranque rápido | ✅ Optimizado | ⚠️ Estándar | ⚠️ Estándar | | Documentación específica RapidFAST | ✅ Completa | ❌ Genérica | ❌ Genérica |
Solución de problemas con RapidWatch™
Error al iniciar el servidor
Si RapidWatch™ muestra error al iniciar el servidor:
Verificar estructura del proyecto: Asegúrate de que tu proyecto sigue la estructura requerida:
src/ ├── app/ │ └── app.module.ts └── main.tsDependencias faltantes: RapidWatch™ intentará instalar automáticamente las dependencias necesarias, pero si falla, ejecuta:
npm install typescript ts-node chokidarPermisos de sistema: En Windows, asegúrate de tener permisos adecuados para ejecutar procesos.
RapidWatch™ no detecta cambios
Si los cambios en archivos no son detectados:
- Verifique la extensión del archivo: Solo se monitorizan archivos
.ts,.jsy.json. - Ubicación de archivos: Los archivos deben estar dentro de la carpeta
src/. - Sistemas de archivos remotos: En sistemas NFS o volúmenes montados remotamente, use la opción
--no-watchy reinicie manualmente. - Problemas con rutas largas en Windows: Si la ruta del proyecto es muy larga, considere moverlo a una ruta más corta.
Trabajando con rutas que contienen espacios
RapidWatch™ ha sido especialmente optimizado para manejar rutas con espacios, sin embargo:
- En Windows, si experimentas problemas, actualiza a la última versión de RapidFAST.
- Si persisten los problemas, considera usar rutas sin espacios para máxima compatibilidad.
🧩 Estructura de directorios recomendada
Para aprovechar al máximo RapidFAST, recomendamos la siguiente estructura de directorios:
mi-proyecto/
├── src/ # Código fuente
│ ├── app/ # Módulos de la aplicación
│ │ ├── app.module.ts # Módulo principal
│ │ ├── app.controller.ts # Controlador principal
│ │ ├── modules/ # Módulos adicionales
│ │ │ ├── users/ # Módulo de usuarios
│ │ │ │ ├── users.module.ts
│ │ │ │ ├── users.controller.ts
│ │ │ │ ├── users.service.ts
│ │ │ │ └── dto/ # Objetos de transferencia de datos
│ │ │ └── auth/ # Módulo de autenticación
│ │ └── shared/ # Recursos compartidos
│ ├── config/ # Configuraciones
│ │ ├── environment.ts
│ │ └── database.ts
│ ├── middleware/ # Middleware personalizado
│ ├── models/ # Modelos de datos
│ ├── guards/ # Guardias de rutas
│ └── main.ts # Punto de entrada
├── public/ # Archivos estáticos
├── test/ # Pruebas
├── .env # Variables de entorno
├── .env.example # Ejemplo de variables
├── package.json
└── tsconfig.json📋 Convenciones recomendadas
Para mantener la consistencia en proyectos RapidFAST:
- Módulos: Nombrar en singular, camelCase (
userModule.ts) - Controladores: Sufijo "Controller" (
userController.ts) - Servicios: Sufijo "Service" (
userService.ts) - Rutas REST: Plural, kebab-case (
/api/users) - Variables de entorno: UPPERCASE_WITH_UNDERSCORE
- Archivos: kebab-case (
user-profile.service.ts) - Interfaces: CamelCase con prefijo I (
IUserData) - DTOs: Sufijo "Dto" (
CreateUserDto)
🆕 Novedades en la versión 1.0.6-beta.8
Mejoras en Swagger y agrupación de endpoints
Nuevo decorador de controlador mejorado:
@Controller({ prefix: 'todos', tags: ['Tareas'], description: 'API para gestionar tareas' })Agrupación directa en controladores:
- Tags definidos en el decorador
@Controllerse aplican a todos los endpoints - Descripción detallada para cada grupo de endpoints
- Organización visual mejorada en la interfaz Swagger
- Tags definidos en el decorador
Sistema de procesamiento de rutas optimizado:
- Mejor manejo de middleware y parámetros
- Respuestas consistentes y tipado mejorado
- Detección automática de errores
Compatibilidad con versiones anteriores:
- Mantiene soporte para el decorador
@ApiDoc - Migración gradual a la nueva sintaxis
- No requiere cambios inmediatos en el código existente
- Mantiene soporte para el decorador
Correcciones en la configuración:
- Solución a errores de tipos en interfaces Swagger
- Mayor robustez en la carga de configuración
- Valores por defecto para propiedades obligatorias
Plantillas actualizadas:
- Ejemplos de controladores con la nueva sintaxis
- Configuración Swagger optimizada
- Mejor estructura para aplicaciones nuevas
RapidWatch™ Ultra
- Monitoreo Universal:
- Detección de cambios en cualquier tipo de archivo (no solo TypeScript)
- Soporte para múltiples patrones:
.env,config/,public/,templates/ - Filtrado inteligente para ignorar archivos no relevantes
🆕 Novedades en la versión 1.0.6-beta.7
Sistema de Configuración Mejorado
Configuración TypeScript para Swagger:
- Soporte para archivos
swagger.config.tscon autocompletado - Sistema de prioridad: valores por defecto → archivo de configuración → variables de entorno
- Carga dinámica de configuraciones según el entorno actual
- Soporte para archivos
Variables de Entorno Inteligentes:
- Recarga automática de variables de entorno sin reinicio del servidor
- Detección de cambios en archivos
.envy variantes (.env.development, etc.) - Endpoint interno
/_rapidfast/reload-envpara actualizaciones en caliente
RapidWatch™ Ultra
Monitoreo Universal:
- Detección de cambios en cualquier tipo de archivo (no solo TypeScript)
- Soporte para múltiples patrones:
.env,config/,public/,templates/ - Filtrado inteligente para ignorar archivos no relevantes
Interfaz de Consola Moderna:
- Tablas perfectamente alineadas con bordes uniformes
- Clasificación automática de tipos de archivos modificados
- Sistema de colores mejorado para mejor legibilidad
Optimizaciones de Rendimiento:
- Debounce configurable para prevenir múltiples reinicios innecesarios
- Estrategia
awaitWriteFinishpara esperar a que los archivos se guarden completamente - Recarga selectiva: sólo cuando es necesario reiniciar la aplicación completa
Mejoras Generales
Reemplazo de
switch/casepor objetos de mapeo:- Código más limpio y mantenible en todo el framework
- Mejor rendimiento al procesar rutas y eventos
- Facilita la extensión para nuevos tipos de eventos
Actualizaciones en Plantillas:
- Nueva estructura de directorio
config/en proyectos generados - Archivos
.env.templatecon ejemplos completos - Documentación integrada en forma de archivos README
- Nueva estructura de directorio
Múltiples Correcciones:
- Solución a problemas de alineación en la consola
- Mejor manejo de errores en la carga de archivos de configuración
- Tipado mejorado y reducción de advertencias TS
🆕 Novedades en la versión 1.0.6-beta.6
Soporte completo para Swagger
Decoradores para documentación API:
@ApiDoc- Documenta controladores completos@ApiParam- Documenta parámetros de ruta@ApiBody- Documenta cuerpos de petición@ApiResponse- Documenta respuestas de endpoints@ApiTags- Agrupa operaciones bajo etiquetas
Documentación automática:
- Interfaz Swagger UI lista para usar en
/api-docs - Generación automática de esquema OpenAPI 3.0
- Endpoint JSON en
/swagger.json
- Interfaz Swagger UI lista para usar en
Arquitectura modular mejorada
Sistema de módulos completo:
- Módulos separados por funcionalidad (
TodoModule, etc.) - Importación en módulo raíz con
imports: [OtroModulo] - Exportación de servicios entre módulos con
exports: [MiServicio]
- Módulos separados por funcionalidad (
Plantilla modular en proyectos generados:
- Estructura predefinida lista para escalar
- Ejemplo completo de CRUD implementado
- Separación clara de responsabilidades
Sistema de inyección de dependencias robusto
Resolución automática de dependencias:
- Detección y advertencia de clases no decoradas
- Inyección automática en constructores
- Soporte para providers con múltiples estrategias
Mejor gestión de instancias:
- Ciclo de vida de componentes optimizado
- Integración completa con el sistema de módulos
Experiencia de desarrollo mejorada
Interfaz de consola enriquecida:
- Banner mejorado con colores e iconos
- Mejor visualización de rutas registradas
- Información detallada de la aplicación
RapidWatch™ optimizado:
- Mejor rendimiento en detección de cambios
- Recarga más rápida del servidor
- Banner completo solo en el primer inicio
Correcciones y optimizaciones:
- Mejor compatibilidad con paquetes recientes
- Corrección de errores de tipos en TypeScript
- Optimizaciones en la estructura de archivos de proyecto
Para más detalles sobre las nuevas características, consulta nuestra documentación beta.
🆕 Novedades en la versión 1.0.6-beta.2
Mejoras en el proceso de publicación beta
Scripts robustos para publicación:
- Nuevo sistema de publicación beta que funciona correctamente en Windows
- Scripts para ignorar errores de linting durante la publicación
- Herramientas para incrementar automáticamente la versión beta
Herramientas de desarrollo mejoradas:
- Script para corregir automáticamente errores de linting
- Utilidad para actualizar TypeScript a una versión compatible con ESLint
- Configuración de ESLint optimizada para reducir advertencias
Documentación específica para beta:
- Nuevo archivo BETA.md con información detallada sobre la versión beta
- Documentación de las mejoras realizadas en el proceso de publicación
- Instrucciones claras para reportar problemas
Correcciones de bugs:
- Solución al problema con el operador
|| trueen Windows - Mejor manejo de errores durante el proceso de publicación
- Compatibilidad mejorada con TypeScript 5.3+
- Solución al problema con el operador
Cambios internos
- Proceso de publicación beta más robusto y resistente a errores
- Mayor facilidad de uso con scripts simplificados
- Mejor experiencia de desarrollo con herramientas de linting mejoradas
- Documentación más completa para usuarios de la versión beta
Para más detalles sobre las mejoras en la versión beta, consulta el archivo BETA.md.
🆕 Novedades en la versión 1.0.4
Mejoras principales
RapidWatch™ Mejorado:
- Solución avanzada para rutas con espacios en Windows
- Detección más rápida de cambios en archivos
- Banner visual mejorado con gradientes de color
- Menor huella de memoria
CLI robusto:
- Validación de nombres de proyecto y rutas
- Mejor manejo de errores con mensajes claros
- Soporte para caracteres especiales en rutas
Generación de proyectos mejorada:
- Nueva estructura de directorios optimizada
- Plantillas actualizadas con buenas prácticas
- Configuraciones de TypeScript optimizadas
- Eliminación de dependencias innecesarias
Correcciones de bugs:
- Solución a problemas EPERM en Windows
- Mejor manejo de permisos de directorios
- Correcciones en la inicialización de MongoDB
Cambios internos
- Eliminadas dependencias obsoletas
- Optimizaciones de rendimiento
- Mejora en la compatibilidad con Node.js 18+
- Actualización de todas las dependencias a versiones estables
Cambios que rompen la compatibilidad
- Eliminada dependencia de nodemon (sustituida por RapidWatch™)
- La estructura de carpetas generada ahora usa
/testen lugar de/api - Las configuraciones avanzadas de servidor ahora requieren usar serve.config.js
📄 Licencia y propiedad intelectual
Este proyecto está licenciado bajo la Licencia MIT - ver el archivo LICENSE para más detalles.
RapidFAST Framework y RapidWatch™ son marcas registradas y propiedad intelectual de Angelito Systems. El uso del nombre "RapidWatch" o su logotipo en otros proyectos está prohibido sin autorización expresa.
Desarrollado con ❤️ por Angelito Systems
Copyright © 2025 Angelito Systems
