A modern workout tracking application consisting of:
- Frontend (Angular 20): A responsive web app for managing workouts, tracking progress, and visualizing exercise stats.
- Backend (.NET 9 Microservices): An event-driven system handling authentication, workouts, and exercise statistics.
A modern, event-driven microservices backend for a workout tracking application built with .NET 9, using Entity Framework Core, MassTransit, RabbitMQ, PostgreSQL, Serilog and Docker Compose.
This system is split into 3 independent, containerized microservices:
- Handles user registration, login, and user deletion
- Uses asymmetric JWT for authentication
- Manages workout plans and exercises
- Shares exercise definitions and user plans
- Stores and provides statistics for exercises
All services communicate asynchronously via MassTransit using RabbitMQ.
- .NET 9
- MassTransit
- RabbitMQ
- Entity Framework Core
- PostgreSQL
- asymmetric JWT
- Docker & Docker Compose
- xUnit & Moq
To run the entire system locally:
docker compose -f 'dev-docker-compose.yml' up --build Unit tests are written using xUnit and Moq.
Each service has its own test project under /tests.
Run tests with:
dotnet testAll services publish and subscribe to domain events via RabbitMQ. For example:
UserDeletedpublished by Auth service- Subscribed by ExerciseStat and Workout services to clean up unnecessary user data
Logging across all services is handled using Serilog, a structured logging library that integrates seamlessly with the .NET ecosystem. Logs are written to the console and forwarded to Seq
The frontend is built with Angular 20 and provides a modern, responsive user interface for the workout tracking application.
- User authentication (login, signup, asymmetric JWT-based session handling)
- Workout and exercise plan management
- Real-time updates and data synchronization with backend services
- Visualization of exercise statistics
- Responsive UI with Angular Material
- Angular 20
- TypeScript
- RxJS
- Angular Material
- Jest for unit testing
- Docker for containerized deployments
Navigate into the frontend project folder:
cd Frontend/WorkifyApp
npm install
npm start







