¡Bienvenido a mi implementación del ejercicio de seguimiento de tiempo! 🎉
Esta solución está dividida en dos proyectos:
- 🖥️ Backend: Implementado con Symfony.
- 🌐 Frontend: Construido con Angular.
El objetivo de este proyecto es ofrecer una aplicación simple para que los usuarios puedan:
- Crear tareas, iniciar y detener su seguimiento de tiempo.
- Visualizar un resumen del tiempo dedicado a cada tarea.
El backend se ha implementado en Symfony y se organiza en los siguientes módulos:
- App: Módulo principal para la configuración inicial y las dependencias principales.
- Auth: Módulo encargado de la autenticación y gestión de usuarios (JWT incluido 🚀).
- Core: Contiene la lógica compartida y componentes reutilizables del sistema.
- TimeRecording: Maneja la lógica específica del seguimiento de tiempo y las tareas.
- Bundles Symfony: Cada módulo es un bundle autocontenido, siguiendo una estructura modular.
- DDD y CQS:
- Contextos delimitados claramente definidos en cada módulo.
- Aplicación de consultas y comandos separados para mejorar la mantenibilidad.
Cada módulo incluye sus propias pruebas:
- 🧪 Unitarias: Validan funcionalidades individuales.
- 🔄 Integración: Comprueban la comunicación entre los módulos.
- 🌐 End-to-End (E2E): Validan flujos completos de la aplicación.
El frontend utiliza Angular con las siguientes características:
- Responsividad: Diseño adaptado a dispositivos móviles y de escritorio.
- Integración con el Backend: Uso de servicios HTTP para interactuar con los endpoints del backend.
- Flujo de Usuario:
- Registro / Inicio de Sesión.
- Gestión de tareas (crear, iniciar, detener).
- Resumen de tareas y tiempo.
- Clona el repositorio del backend:
git clone --recurse-submodules https://github.com/alexperegrina/time-tracker-all.git cd time-tracker-all
- Actualizar los submódulos:
git submodule update --remote
En este punto tendremos que tener dos ventanas de la terminal. Por motivos de rendimiento se deja para el final todo el tema relacionado con Docker.
- Nos movemos al backend:
cd time-tracker-backend
- Inicia el entorno Docker:
make docker-db-start
- Instala las dependencias:
make first-env
- Aplica las migraciones:
make restore-env
- Levanta el servidor de desarrollo:
symfony server:start --no-tls
- Nos movemos al frontend:
cd time-tracker-frontend
- Instala las dependencias:
npm install
- Levanta el servidor de desarrollo:
npm start
- Accede a la aplicación:
Abre tu navegador y dirígete a http://localhost:4200.
Se ha añadido por cada proyecto los servicios que necesita. En el root del proyecto hay otra configuracion para poder inicializar todo de golpe. Por motivos que desconozco el rendimiento de la aplicacion se ve muy afectado si se utiliza el docker antes de encender los servicios a mano.
Encontraras información mas amplia en el README de cada proyecto