Traffic Manager Dashboard

Angular TypeScript RxJS

A complete traffic monitoring and ticket management dashboard built with Angular

Live Demo GitHub


📋 Overview

This project is a monitoring dashboard built during advanced Angular studies. The app showcases modern Angular 18 concepts, including standalone components, signals, advanced lifecycle hooks, and reusable component architecture to build real-time monitoring interfaces.

✨ Key Features

  • Server Monitoring: Real-time status with automatic updates
  • Traffic Analysis: Traffic data visualization with dynamic charts
  • Ticket System: Full support ticket management
  • Modular Dashboard: Interface organized in independent widgets
  • Reusable Components: Architecture based on shared components

🚀 Tech Stack

Frontend

  • Angular 18.0.0 - Main framework with standalone components
  • TypeScript 5.4.2 - Strongly typed language
  • RxJS 7.8.0 - Reactive programming with observables
  • Angular Forms - Form management
  • Angular Signals - Signal-based reactivity system

Development Tooling

  • Angular CLI 18.0.0 - Command line tooling
  • Karma & Jasmine - Testing framework
  • TypeScript Compiler - Compilation and type checking

🏗️ Project Architecture

Component Structure

src/app/
├── app.component.*              # Root component
├── header/                      # App header
├── dashboard/                   # Main dashboard module
│   ├── dashboard-item/          # Wrapper component for widgets
│   ├── server-status/           # Server status monitoring
│   ├── traffic/                 # Traffic data visualization
│   └── tickets/                 # Ticket management system
│       ├── tickets.component.*  # Main ticket list
│       ├── ticket/              # Individual ticket component
│       ├── new-ticket/          # Ticket creation form
│       └── ticket.model.ts      # Ticket data model
└── shared/                      # Shared components
    ├── button/                  # Reusable button component
    └── control/                 # Form control component

Data Models

Ticket Interface

interface Ticket {
  id: string;
  title: string;
  request: string;
  status: 'open' | 'closed';
}

Traffic Data Interface

interface TrafficData {
  id: string;
  value: number;
}

🔧 Detailed Features

1. Server Monitoring

  • Real-Time Status: Automatic update every 5 seconds
  • Dynamic States: Online, Offline, and Unknown with configurable probabilities
  • Angular Signals: Signals for efficient reactivity
  • Lifecycle Management: Interval cleanup with DestroyRef

2. Traffic Analysis

  • Data Visualization: Dynamic bar chart
  • Simulated Data: Demo dataset with realistic values
  • Automatic Calculation: Dynamic max value for visual normalization
  • Responsive UI: Adapts to different screen sizes

3. Ticket System

  • Ticket Creation: Full form with validation
  • State Management: Dynamic ticket list
  • Status Change: Switch between open and closed
  • Event Handling: Component communication via outputs

4. Modular Architecture

  • Dashboard Items: Wrapper components for organization
  • Shared Components: Reusable Button and Control
  • Standalone Components: Modern architecture without NgModules
  • ViewChild and ViewChild.required: DOM and child component access

🛠️ Installation & Run

Prerequisites

  • Node.js (version 18 or higher)
  • npm or yarn
  • Angular CLI

Setup Steps

  1. Clone the repository

    git clone https://github.com/your-username/traffic-manager.git
    cd traffic-manager
    
  2. Install dependencies

    npm install
    
  3. Run the development server

    npm start
    
  4. Access the app

    http://localhost:4200
    

Available Scripts

# Development server
npm start

# Production build
npm run build

# Run tests
npm test

# Build with watch mode
npm run watch

📱 Demo

Main Flow

  1. Main Dashboard: View the three primary widgets
  2. Monitoring: Server status updates automatically
  3. Traffic: Real-time traffic chart
  4. Tickets: Create and manage support tickets

Screenshots

Add app screenshots here


🎯 Angular Concepts Demonstrated

Standalone Components

  • Independent Components: Using standalone components without NgModules
  • Direct Imports: Components imported directly in imports
  • Modern Architecture: Recommended approach from Angular 17+

Angular Signals

  • Modern Reactivity: Signals for reactive state
  • Effect API: Automatic reaction to state changes
  • Performance: Optimized change detection

Advanced Lifecycle Hooks

  • OnInit and AfterViewInit: Initialization hooks
  • DestroyRef: Modern cleanup management
  • ViewChild: DOM and child component access

Event Handling

  • Output API: New outputs API
  • EventEmitter: Component communication
  • Form Handling: Template-driven forms

🔍 Technical Analysis

Strengths

  • Modern Architecture: Standalone components and signals
  • Componentization: Small, focused components
  • Reusability: Well-structured shared components
  • Lifecycle Management: Proper resource cleanup
  • TypeScript: Strong typing and clear interfaces
  • Performance: Efficient reactivity with signals

Future Improvements

  • 🔄 Backend Integration: Connect to real monitoring APIs
  • 🔄 WebSocket: Real-time communication
  • 🔄 Unit Tests: Full coverage
  • 🔄 PWA: Convert to a Progressive Web App
  • 🔄 State Management: Add NgRx for complex state
  • 🔄 Charts Library: Integrate a professional chart library

📚 Learnings

This project helped consolidate knowledge in:

  • Modern Angular: Standalone components and signals
  • Lifecycle Hooks: Advanced lifecycle management
  • Frontend Architecture: Dashboard design patterns
  • Component Communication: Event handling and outputs
  • Performance: Optimization with signals and proper cleanup
  • Advanced TypeScript: Interfaces and complex typing

🎨 Design & UX

User Interface

  • Clean Design: Minimalist, professional interface
  • Organized Widgets: Responsive grid layout
  • Visual Feedback: Clear states for different situations
  • Consistent Components: Unified visual pattern

Responsiveness

  • Mobile First: Adaptive design for mobile devices
  • Grid Layout: Flexible component organization
  • Typography: Clear visual hierarchy

Built with ❤️ using Angular

Project created during advanced Angular studies, demonstrating modern concepts and frontend best practices.

Wesley Correia

Full Stack Engineer focused on automation, applied AI and production systems — from Java/Python backends to Angular/React frontends.

Quick Links

Social

© 2026 Wesley de Carvalho Augusto Correia.All rights reserved.