Skip to content

msftsean/rms-demo-esri

Repository files navigation

RMS Demo ESRI Project

Build Status Security Rating Coverage License

This is a demonstration project showcasing Records Management System (RMS) integration with ESRI ArcGIS technologies, featuring enterprise-grade DevOps practices and security controls.

🎯 Project Overview

The RMS Demo ESRI project demonstrates:

  • πŸ—ΊοΈ GIS Integration: Seamless integration with ESRI ArcGIS for geospatial data visualization
  • πŸ”’ Security First: Implementation of GitHub Advanced Security (GHAS) features
  • πŸš€ DevOps Excellence: Comprehensive CI/CD pipelines with Azure DevOps and GitHub Actions
  • πŸ“Š Data Management: Efficient handling of records with geographic context
  • 🏒 Enterprise Ready: Production-grade architecture and security practices

πŸ—οΈ Architecture

graph TB
  subgraph Client
    A[Frontend - React/TypeScript]
  end
  subgraph Platform
    B[API - .NET 8 / ASP.NET Core]
    D[(PostgreSQL + PostGIS)]
    E[(Redis)]
    F[ESRI ArcGIS]
  end
  A --> B
  B --> D
  B --> E
  B --> F

  subgraph CI/CD
    G[GitHub Actions]
  end

  subgraph Kubernetes (Local)
    K8S[(k3d/k3s)]
    I2[Traefik Ingress]
  end
  G --> K8S
  K8S --> I2
Loading

✨ Features

πŸ—ΊοΈ GIS Capabilities

  • Interactive mapping with ESRI JavaScript API
  • Spatial data visualization and analysis
  • Real-time geospatial queries
  • Multi-layer map support
  • Mobile-responsive design

πŸ” Security Features

  • CodeQL Analysis: Automated static code analysis
  • Secret Scanning: Prevention of credential leaks
  • Dependency Scanning: Vulnerability detection in dependencies
  • Container Scanning: Docker image security assessment
  • OAuth 2.0: Secure authentication and authorization
  • RBAC: Role-based access control

πŸš€ DevOps Integration

  • CI/CD: GitHub Actions for security, build, test, and image scanning
  • Kubernetes Manifests: Kustomize base for local k3s
  • Automated Testing: Unit tests included
  • Environment: Local (k3d/k3s with Traefik)
  • Monitoring: Application Insights and health checks

πŸ› οΈ Technology Stack

Component Technology Purpose
Frontend React + TypeScript User interface
Backend API .NET 8 + ASP.NET Core REST API services
Database PostgreSQL + PostGIS Spatial data storage
Cache Redis Performance optimization
GIS Platform ESRI ArcGIS Mapping and spatial analysis
Authentication OAuth 2.0 + JWT Security
Containerization Docker Image build and local dev
Orchestration Kubernetes + Kustomize Deployment & config
Local Cluster k3d (k3s) + Traefik Local cluster & ingress
CI/CD GitHub Actions Automation (build/test/security)
Monitoring Application Insights Observability

πŸš€ Getting Started

Prerequisites

πŸ”‘ Environment Setup

  1. Clone the repository
git clone https://github.com/msftsean/rms-demo-esri.git
cd rms-demo-esri
  1. Configure environment variables
cp .env.example .env
# Edit .env with your configuration
  1. Required Environment Variables
# Database
ConnectionStrings__DefaultConnection=Server=localhost;Database=rmsdemodb;User Id=rmsuser;Password=yourpassword;

# ESRI Configuration
ArcGIS__ApiKey=your_arcgis_api_key
ArcGIS__ClientId=your_client_id

# OAuth Configuration  
OAuth__ClientId=your_oauth_client_id
OAuth__ClientSecret=your_oauth_client_secret
OAuth__Authority=https://your-auth-provider

# External Services
Redis__ConnectionString=localhost:6379

🐳 Docker Development

# Start all services
docker-compose up -d

# View logs
docker-compose logs -f rms-demo

# Stop services
docker-compose down

πŸ’» Local Development

# Restore dependencies
dotnet restore

# Start database
docker-compose up postgres redis -d

# Run migrations
dotnet ef database update

# Start API
dotnet run --project src/RmsDemo

# Start frontend (in separate terminal)
cd frontend
npm install
npm start

πŸ§ͺ Testing

Running Tests

# Unit tests
dotnet test

# Integration tests
dotnet test --filter Category=Integration

# Security tests
dotnet test --filter Category=Security

# Load tests
dotnet run --project tests/LoadTests

Test Coverage

# Generate coverage report
dotnet test --collect:"XPlat Code Coverage"
reportgenerator -reports:"**/coverage.cobertura.xml" -targetdir:"coveragereport"

πŸ”’ Security

This project implements comprehensive security measures:

GitHub Advanced Security (GHAS)

  • πŸ” CodeQL: Automated security analysis
  • πŸ” Secret Scanning: Credential leak prevention
  • πŸ“¦ Dependency Review: Vulnerability assessment
  • 🚨 Security Advisories: Private vulnerability disclosure

Security Policies

Compliance

  • SOC 2 Type II ready architecture
  • GDPR compliant data handling
  • OWASP Top 10 protection measures
  • NIST Cybersecurity Framework alignment

πŸ“Š DevOps Comparison

Feature GitHub Azure DevOps
Source Control Git (native) Git + TFVC
CI/CD GitHub Actions Azure Pipelines
Project Management Issues + Projects Boards + Backlogs
Security GHAS + Dependabot MSDO + Defender
Artifacts Packages Azure Artifacts
Environments Environments Release Management

🌐 Deployment

Local Kubernetes (k3d)

See SETUP_GUIDE.md for full steps. Quickstart:

# Create local cluster with Traefik LB on :8080
k3d cluster create rms-demo --agents 1 --port 8080:80@loadbalancer

# Build and import image into k3d
docker build -t rms-demo:local .
k3d image import rms-demo:local -c rms-demo

# Use cluster context and apply manifests
kubectl config use-context k3d-rms-demo
kubectl apply -k k8s

Access:

GitHub Actions Deployment

Automated deployment triggered by:

  • Push to main branch β†’ Production
  • Push to develop branch β†’ Staging
  • Pull requests β†’ Review environments

Azure DevOps Deployment

Integration with Azure DevOps for enterprise scenarios:

  • Multi-stage pipelines
  • Approval gates
  • Release management
  • Work item tracking

πŸ“ˆ Monitoring & Observability

  • Application Insights: Performance monitoring
  • Log Analytics: Centralized logging
  • Azure Monitor: Infrastructure monitoring
  • Grafana Dashboards: Custom visualizations
  • Health Checks: Service availability monitoring

🀝 Contributing

We welcome contributions! Please see our Contributing Guide for details.

Development Workflow

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit changes (git commit -m 'Add amazing feature')
  4. Push to branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Code Standards

πŸ“š Documentation

🎯 Demo Scenarios

This project supports various demonstration scenarios:

πŸ”’ Security Demo

  • GHAS features in action
  • Vulnerability detection and remediation
  • Secure development practices

πŸš€ DevOps Demo

  • GitHub vs Azure DevOps workflows
  • Automated deployment pipelines
  • Infrastructure as Code

πŸ—ΊοΈ GIS Demo

  • ESRI ArcGIS integration
  • Spatial data visualization
  • Geographic search and analysis

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments

  • ESRI for ArcGIS platform and documentation
  • Microsoft for Azure services and development tools
  • GitHub for Advanced Security features and Actions
  • Open Source Community for the amazing tools and libraries

πŸ“ž Support


Built with ❀️ for enterprise developers and security professionals

About

RMS Demo ESRI project for Azure DevOps integration

Resources

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published