Skip to content

Latest commit

 

History

271 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DevPulse — Distributed Engineering Productivity Platform

DevPulse is a cloud‑hosted engineering productivity platform built on .NET 8, Azure, and event‑driven microservices. It demonstrates real‑world distributed systems design, secure authentication, containerized deployments, and production‑grade CI/CD automation.


Code Quality (SonarCloud)

Quality Gate SonarCloud

DevPulse is continuously scanned using SonarCloud to ensure high standards of reliability, maintainability, and security across all microservices.

Metric Status
Bugs Bugs
Code Smells Code Smells
Vulnerabilities Vulnerabilities
Maintainability Maintainability
Reliability Reliability
Security Security
Technical Debt Technical Debt

🔗 View full analysis:
https://sonarcloud.io/summary/new_code?id=buddhika85_DevPulse


1. Architecture Overview

DevPulse follows a distributed microservices architecture with strict service boundaries, database‑per‑service design, and asynchronous communication via Azure Service Bus. Each service is independently deployable, containerized, and versioned.

Microservices

  • User API — identity, roles, user lifecycle
  • Task API — task creation, updates, assignments
  • Mood API — mood entries, soft deletes
  • Journal API — journal entries, feedback visibility
  • Journal Link API — task ↔ journal linking (Cosmos DB)
  • Orchestrator API — workflow coordination and cross‑service operations

Architectural Patterns

  • CQRS with MediatR
  • Repository + Unit of Work
  • Event‑Driven Messaging (Azure Service Bus)
  • API Gateway via Azure API Management
  • Zero‑trust authentication with Microsoft Entra External ID
  • Distributed tracing with Serilog + Application Insights

2. Authentication & Authorization

DevPulse uses OAuth 2.0 Authorization Code Flow with PKCE via Microsoft Entra External ID.

Frontend

  • MSAL.js for login, token caching, and silent refresh
  • Angular interceptors for secure API calls

Backend

  • Validates Entra tokens
  • Exchanges frontend token for backend‑issued JWT with role claims
  • Enforces authorization via policy‑based checks

3. Data Storage

Each microservice owns its own database.

Service Storage Type
User API Azure SQL
Task API Azure SQL
Mood API Azure SQL
Journal API Azure SQL
Journal Link API Azure Cosmos DB
Orchestrator Stateless

Cosmos DB is used for high‑volume, flexible linking between journals and tasks.


4. Messaging & Workflows

Azure Service Bus enables asynchronous, reliable communication.

Examples:

  • Task updates → notify Journal Link service
  • Journal creation → trigger Orchestrator workflows
  • Daily summary → Azure Functions (Timer Trigger)

Messages follow a contract‑first schema with versioning.


5. CI/CD Pipeline

Azure DevOps pipelines implement full automation.

Build Stage

  • Restore, build, and test (.NET 8)
  • Run xUnit tests with Moq + FluentAssertions
  • Publish test results

Containerization

  • Docker build per microservice
  • Push images to Azure Container Registry

Deployment

  • Deploy to Azure App Service / Azure Container Apps
  • Multi‑stage YAML pipelines

6. Frontend

Angular 20 SPA with:

  • MSAL.js authentication
  • Angular Material UI
  • Role‑based navigation
  • Secure API calls with PKCE tokens

Hosted on Azure Static Web Apps.


7. Local Development

Prerequisites

  • .NET 8 SDK
  • Node 20+
  • Docker Desktop
  • Azure CLI

Running Services

docker-compose up --build


### Running Frontend
cd frontend
npm install
ng serve

---

## 8. Live Demo & Repository

Live Demo (Overview Page):  
https://nice-river-045c3a100.3.azurestaticapps.net/overview

Demo Video:  
https://www.youtube.com/watch?v=KQ2l7VS5r64

About

Developer productivity dashboard built with Azure, microservices, and modern DevOps

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages