Tradewise es una aplicación Angular 20+ standalone que muestra una serie de gráficos financieros de alto volumen basados en Apache ECharts.
Se sigue Clean Code, SOLID, la guía de estilo oficial de Angular y las reglas internas del proyecto (OnPush, Signals, etc.).
✔️ Tooling:
- TypeScript strict mode
- ESLint + Prettier (husky + lint-staged en pre-commit)
- Karma para tests unitarios (≥ 90 % cobertura)
✔️ Funcionalidad implementada hasta la fecha:
- Gráficos time-series: Candlestick, Line, Stacked Area, Bump
- Gráficos distribution: Boxplot, Violin
- Gráficos composition: Donut, Treemap, Sunburst
- Widgets: PriceCard, CandleWidget
- Facade de mercado (MarketFacade) y mocks de datos
# Clonar repo
$ git clone https://github.com/tu-org/tradewise.git
$ cd tradewise
# Instalar dependencias
$ npm ci
# Configurar husky
$ npm run prepare| Comando | Descripción |
|---|---|
npm start |
Arranca ng serve en modo desarrollo |
npm run build |
Compila para producción |
npm run test |
Ejecuta pruebas con Karma |
npm run test:ci |
Pruebas headless + cobertura |
npm run lint |
ESLint (solo informe) |
npm run lint:fix |
ESLint + auto-fix |
npm run format |
Prettier sobre todo el workspace |
src/
app/
core/ # servicios, facades, providers
shared/
components/ # gráficos + ui genérica
widgets/ # composiciones de alto nivel
features/ # páginas de la app
Los componentes usan standalone: true y se importan directamente en los contenedores.
npm run test:ciGenera un reporte HTML en coverage/. Todas las specs siguen el patrón Arrange-Act-Assert.
Se realizan:
- Snapshot DOM + serie ECharts en cada componente de gráfico.
- Tests de builders en
ChartFacadeService.
- ChangeDetectionStrategy.OnPush – Siempre.
- Signals Inputs –
input.required<T>()para sustituir@Input(). - sin ngOnChanges, se usan
computed+effect. - Import order definido en ESLint.
- Commits ➜ Conventional Commits.
- Crear rama
feature/<nombre>ofix/<nombre>. - Asegurarse de que
npm run lintynpm run test:cipasan. - Enviar pull request con descripción y checklist.
- Se requiere cobertura ≥ 90 % y aprobación de al menos un revisor.
Gracias por contribuir 🚀