This is a demonstration project showcasing Records Management System (RMS) integration with ESRI ArcGIS technologies, featuring enterprise-grade DevOps practices and security controls.
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
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
- Interactive mapping with ESRI JavaScript API
- Spatial data visualization and analysis
- Real-time geospatial queries
- Multi-layer map support
- Mobile-responsive design
- 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
- 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
| 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 |
- Clone the repository
git clone https://github.com/msftsean/rms-demo-esri.git
cd rms-demo-esri- Configure environment variables
cp .env.example .env
# Edit .env with your configuration- 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# Start all services
docker-compose up -d
# View logs
docker-compose logs -f rms-demo
# Stop services
docker-compose down# 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# 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# Generate coverage report
dotnet test --collect:"XPlat Code Coverage"
reportgenerator -reports:"**/coverage.cobertura.xml" -targetdir:"coveragereport"This project implements comprehensive security measures:
- π CodeQL: Automated security analysis
- π Secret Scanning: Credential leak prevention
- π¦ Dependency Review: Vulnerability assessment
- π¨ Security Advisories: Private vulnerability disclosure
- Security Policy - Vulnerability reporting process
- Code of Conduct - Community guidelines
- Contributing Guidelines - Development standards
- SOC 2 Type II ready architecture
- GDPR compliant data handling
- OWASP Top 10 protection measures
- NIST Cybersecurity Framework alignment
| 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 |
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 k8sAccess:
- Health: http://localhost:8080/health
- Swagger: http://localhost:8080/swagger
Automated deployment triggered by:
- Push to
mainbranch β Production - Push to
developbranch β Staging - Pull requests β Review environments
Integration with Azure DevOps for enterprise scenarios:
- Multi-stage pipelines
- Approval gates
- Release management
- Work item tracking
- Application Insights: Performance monitoring
- Log Analytics: Centralized logging
- Azure Monitor: Infrastructure monitoring
- Grafana Dashboards: Custom visualizations
- Health Checks: Service availability monitoring
We welcome contributions! Please see our Contributing Guide for details.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit changes (
git commit -m 'Add amazing feature') - Push to branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow .NET coding conventions
- Write comprehensive tests
- Update documentation
- Pass all security scans
- API Documentation - REST API reference
- Architecture Guide - System design
- Security Guide - Security implementation
- Deployment Guide - Deployment procedures
- ESRI Integration - GIS implementation
This project supports various demonstration scenarios:
- GHAS features in action
- Vulnerability detection and remediation
- Secure development practices
- GitHub vs Azure DevOps workflows
- Automated deployment pipelines
- Infrastructure as Code
- ESRI ArcGIS integration
- Spatial data visualization
- Geographic search and analysis
This project is licensed under the MIT License - see the LICENSE file for details.
- 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
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Security: Security Policy
- Email: [email protected]
Built with β€οΈ for enterprise developers and security professionals