- Descripción de la Aplicación
- Tecnologías
- Estructura del Proyecto
- Instalación del Proyecto
- Uso
- Vista Previa del Proyecto
- Tests
- Contribución
- GH-Pages
- Autor
Este proyecto consiste en una aplicación Angular diseñada para calcular presupuestos web de forma dinámica. El usuario puede seleccionar servicios, ajustar parámetros específicos, generar varios presupuestos, ordenarlos y filtrarlos, e incluso compartirlos mediante una URL personalizada.
La aplicación está dividida en componentes independientes (standalone) que se comunican entre sí mediante Eventos, Services y Signals, e incorpora formularios reactivos, validaciones, gestión y filtrado de datos, y un modal generado con ayuda de Bootstrap 5.
La funcionalidad se ha construido por niveles:
- Cálculo reactivo del presupuesto
- Popup de ayuda con Bootstrap Modal
- Gestión de múltiples presupuestos
- Ordenación y filtrado
- Compartición de presupuestos vía URL generada dinámicamente
HTMLCSS/Bootstrap 5TypeScriptAngular 20- Testing con
Jasmine/Karma
src/
└─ app/
├─ components/
│ ├─ budget/
│ │ ├─ budgets-list/
│ │ ├─ budget-list-toolbar/
│ │ └─ budget-item/
│ ├─ form/
│ │ ├─ form-main/
│ │ ├─ option-form/
│ │ ├─ contact-form/
│ │ ├─ panel/
│ │ └─ modal/
│ ├─ home/
│ └─ welcome/
├─ header/
├─ models/
│ └─ budget-item.model.ts
└─ services/
└─ budget.ts- Antes de instalar el proyecto asegúrate de tener:
- Navegador web
- node > 22
- npm > 10
- Angular CLI (instalado globalmente)
- Clona el repositorio:
git clone https://github.com/JordiMiravet/Bootcamp-S6.git- Instala dependencias:
npm install- Ejecuta el servidor:
ng serve- Abrir en el navegador:
http://localhost:4200Tras iniciar la aplicación, el usuario puede:
- Seleccionar servicios y configurar parámetros para calcular el presupuesto en tiempo real.
- Abrir el modal de ayuda para ver información sobre cada opción disponible.
- Rellenar sus datos personales mediante formularios reactivos con validación.
- Generar y guardar varios presupuestos desde la lista.
- Ordenar y filtrar la lista por nombre, fecha o importe total.
- Compartir un presupuesto mediante una URL generada automáticamente.
- Selección de servicios y cálculo
- Modal de ayuda
- Datos del usuario
- Listado ordenable
- Mediante input :
- Para filtrar por nombre
- Mediante botones:
- 'Data' : Para ordenar por calendario,
- 'Import' : Para ordenar por importe total (€)
- 'Nombre' : Para ordenar por nombre
- URL compartible
La aplicación incluye pruebas unitarias con Jasmine y se ejecutan mediante Karma.
40 specsejecutadas0 fallos- Componentes principales testeados:
BudgetItemComponentBudgetListToolbarComponentPanelComponentFormMainComponentOptionFormHomeComponentBudgetsListContactFormComponentModalComponent
Se verifica que el cálculo del presupuesto se actualice de forma reactiva al seleccionar opciones en FormMainComponent:
it('should calculate total price reactive to selected options', () => {
component.seoControl.setValue(true);
component.adsControl.setValue(true);
component.webControl.setValue(true);
const expectedTotal =
component.budgetService.seoBasePrice +
component.budgetService.adsBasePrice +
component.budgetService.calculateTotalWeb(component.pages(), component.languages())
expect(component.result()).toEqual(expectedTotal);
});- Para correr todos los tests locales:
ng testPara colaborar en este proyecto, sigue estos pasos:
- Haz un fork del repositorio.
https://github.com/JordiMiravet/Bootcamp-S6.git- Crea una nueva rama para tu funcionalidad o corrección:
git checkout -b feature/nueva-funcionalidad
-
Realiza los cambios y asegúrate de que los test pasan correctamente.
-
Haz un commit siguiendo las Conventional Commits:
feat: añade nuevo cálculo de presupuesto
fix: corrige error en el formulario de usuario
docs: actualiza documentación del modal de ayuda- Envía un Pull Request describiendo tus cambios.
Jordi Miravet – Bootcamp S6 : WebBudget App



