TodoMV* - Angular + Redux (ngrx)
MyDayApp es una aplicación para gestionar tareas de forma sencilla, fácil y en donde pondrás a pruebas tus conocimientos en Angular.
npm install
ng serve
npm run e2e:install
npm run e2e
El proyecto ya viene con una configuración inicial, la cual es la tipica usanda en projectos de Angular, esta lista para empezar a incorporar las funcionalidades.
├── README.md
├── angular.json
├── dist
├── e2e
├── karma.conf.js
├── node_modules
├── package-lock.json
├── package.json
├── playwright.config.ts
├── src
├── tsconfig.app.json
├── tsconfig.json
└── tsconfig.spec.json
Debes mantener el HTML con el mismo nombre de clases que se está empleando, el cual hace referencia a src/styles.css
. El archivo styles.css
NO debe editar.
Si cambias el nombre de clases o estructura HTML probablemente las pruebas e2e van a fallar, ya que hace referencia específica a esos elementos con esas clases.
Inicialmente, hay un componente con el layout inicial en src/app/pages/home/home.component.html
y tiene un ejemplo de como mostrar las tareas usando varios estilos de acuerdo a los estados:
<ul class="todo-list">
<li class="completed">
<div class="view">
<input class="toggle" type="checkbox" checked />
<label>Learn JavaScript</label>
<button class="destroy"></button>
</div>
<input class="edit" value="Learn JavaScript" />
</li>
<li>
<div class="view">
<input class="toggle" type="checkbox" />
<label>Buy a unicorn</label>
<button class="destroy"></button>
</div>
<input class="edit" value="Buy a unicorn" />
</li>
<li class="editing">
<div class="view">
<input class="toggle" type="checkbox" />
<label>Make dishes</label>
<button class="destroy"></button>
</div>
<input class="edit" value="Make dishes" />
</li>
</ul>
Se verían de la siguiente manera:
Realmente podrías resolver toda la lógica de la aplicación en un solo componente con su lógica en
src/app/pages/home/home.component.ts
, pero se espera dividas varias responsabilidades en componentes.
npm run build
corre webpack en modo producción y deja los archivos de producción en la carpeta /dis/app
.npm run e2e
corre las pruebas e2e usando playwright.npm run start
genera un servidor en modo desarrollo el cual tiene livereload.npm run start:prod
inicia un servidor usando http-server
con la carpeta de /dist/myapp
que es la carpeta en donde quedan los archivos para producción, recuerda antes de correr este comando asegurarte de correr npm run build
.El modelo de datos recomendado para una tarea es:
Para crear una aplicación de tareas consistente y útil para los usuarios, la aplicación debe cumplir con la siguiente lista de 9 funcionalidades.
#main
y #footer
deberían estar ocultos.autofocus
en el input..trim()
para limpiar espacios al inicio o al final y verifica que la tarea no sea un string
vacío.Una tarea debería tener 3 posibles interacciones:
<label>
se activa el modo edición.:hover
en una tarea se debería mostrar el botón para eliminar (.destroy
)..focus()
)..trim()
limpiar espacios al inicio o al final.<strong>
.item
correctamente, por ejemplo: 0 items
, 1 item
, 2 items
.mydayapp-angular
, esto es importante ya que las pruebas e2e van a verificar el LocalStorage con esta la key mydayapp-angular
.Deben existir tres filtros que funcione desde la URL y funcionan como links en el footer:
/all
: Muestra todas las tareas tanto las que están en estado de completed y pending./pending
: Muestra todas las tareas en estado pending./completed
: Muestra todas las tareas en estado completed.Desplegar la aplicación en alguno de los siguientes servicios: GitHub Pages, Netlify, Vercel, Firebase Hosting.
Las pruebas e2e corren bajo playwright con el comando npm run e2e
y ya esta incluido como parte de las dependencias del proyecto, sin embargo, antes de correr el comando, asegúrate de correr npm run e2e:install
para instalar los requerimientos de playwright para correr pruebas.
Cuando corras el comando npm run e2e
por primera vez y antes de crear todas las funcionalidades, las pruebas van a fallar y se verán así:
Una vez desarrolles todas las funcionalidades deberías pasar todas las pruebas y se verán así:
Puedes ir corriendo el comando
npm run e2e
de las funcionalidades que vayas creando para ir evaluando que vas por buen camino.
Este proyecto se lanza bajo la licencia MIT.