Enhanced Rock Weathering Metropolitan Assessment Tool
A comprehensive Spring Boot application for evaluating ERW project viability across global metropolitan areas using research-based 20-parameter assessment.
๐ Live Demo: https://erw-city-viability-1.onrender.com/
This platform provides scientific assessment of Enhanced Rock Weathering (ERW) potential for metropolitan areas and their agricultural hinterlands worldwide. Built with Spring Boot 3.3.2 and Java 21, it features an interactive web interface, comprehensive scoring algorithms, and RESTful API for ERW project evaluation.
Key Capabilities:
- 45 Pre-analyzed Metropolitan Areas across 21 countries and 6 continents
- 20-Parameter Assessment Model based on 2025 industry research
- Interactive Web Interface with global mapping and detailed analysis
- RESTful API for programmatic access and integration
- Cost & Environmental Analysis with COโ calculations
๐ Live Platform: https://erw-city-viability-1.onrender.com
Backend:
- Framework: Spring Boot 3.3.2 (Java 21)
- Database: PostgreSQL with JPA/Hibernate
- Validation: Jakarta Validation with comprehensive constraints
- Security: Input validation, SQL injection prevention, resource limits
Frontend:
- Interface: Modern HTML5/CSS3/JavaScript
- Mapping: Leaflet.js 1.9.4 for interactive maps
- Visualization: Chart.js for data presentation
- Styling: Responsive design with glass-morphism effects
- Java 21 (OpenJDK or Oracle)
- Docker Desktop (for PostgreSQL)
- Git (for cloning)
# 1. Clone repository
git clone https://github.com/rpushkar9/erw-city-viability.git
cd erw-city-viability
# 2. Start PostgreSQL database
docker compose up -d
# 3. Run application
./mvnw spring-boot:run
# 4. Access web interface
# http://localhost:8080# If you have PostgreSQL installed locally
export DB_URL=jdbc:postgresql://localhost:5432/erwdb
export DB_USER=your_username
export DB_PASS=your_password
./mvnw spring-boot:run- Global dashboard with 45 metropolitan areas
- Sortable by ERW score, name, or region
- Filterable by country/region
- Statistical overview with averages and distribution
- Real-time metropolitan area visualization
- Color-coded by ERW potential (High: 0.7-1.0, Medium: 0.4-0.69, Low: 0.0-0.39)
- Click for detailed analysis panels
- Responsive design for all devices
- 20-parameter assessment model:
Basic Parameters (8):
- Geographical coordinates (latitude/longitude)
- Annual rainfall (mm)
- Soil pH (0-14 scale)
- Average temperature (ยฐC)
- Road access distance (km)
- Basalt transport distance (km)
- Basalt availability index (0-1)
- Infrastructure quality index (0-1)
Economic Parameters (4):
- Agricultural land scale (hectares, up to 20M)
- Population density (people/kmยฒ)
- Energy cost ($/kWh)
- Agricultural labor cost ($/hour)
Advanced Parameters (8) - Based on 2025 Research:
- Annual rainfall variability (mm std deviation)
- Soil organic carbon percentage (%)
- Elevation (meters)
- Regulatory stability index (0-1)
- Soil moisture percentage (10-90%)
- Carbon market accessibility (0-1)
- Soil cation exchange capacity (meq/100g)
- Monitoring capability index (0-1)
- ERW Viability Score (0.0-1.0 scale)
- Cost Analysis ($/ton basalt with breakdown)
- COโ Impact (emissions vs. removal calculations)
- Sustainability Grade (A+ to F rating)
- Implementation Recommendations
# Local Development
http://localhost:8080/api
# Live Demo
https://erw-city-viability-1.onrender.com/api
GET /api/sitesQuery Parameters:
region(optional) - Filter by region (e.g., "California-USA")sort(optional) - Sort by:score,name,id(default:score)dir(optional) - Direction:asc,desc(default:desc)page(optional) - Page number (default:0)size(optional) - Page size 1-100 (default:20)
Examples:
# Local development
curl "http://localhost:8080/api/sites?region=California-USA&sort=score&dir=desc"
# Live demo
curl "https://erw-city-viability-1.onrender.com/api/sites?region=California-USA&sort=score&dir=desc"Response:
{
"page": 0,
"size": 20,
"totalCount": 45,
"sites": [
{
"id": 1,
"name": "Des Moines",
"region": "Iowa-USA",
"latitude": 41.5868,
"longitude": -93.6250,
"score": 0.94
}
]
}POST /api/sitescore
Content-Type: application/jsonRequest Body:
{
"latitude": 41.5868,
"longitude": -93.6250,
"rainfallMm": 1200,
"soilPh": 6.8,
"avgTemperatureC": 10.5,
"distanceToRoadKm": 2.0,
"basaltTransportDistanceKm": 150,
"basaltAvailabilityIndex": 0.8,
"infrastructureQualityIndex": 0.85,
"agriculturalLandHectares": 1500000,
"populationDensityPerKm2": 150,
"energyCostPerKWh": 0.12,
"laborCostPerHour": 18.5,
"annualRainfallVariability": 200,
"soilOrganicCarbonPercent": 3.5,
"elevationMeters": 400,
"regulatoryStabilityIndex": 0.9,
"soilMoisturePercent": 45,
"carbonMarketAccessibility": 0.85,
"soilCecMeqPer100g": 15,
"monitoringCapabilityIndex": 0.8
}Response:
{
"score": 0.94,
"grade": "A+",
"costPerTon": 125.50,
"co2RemovalKgPerTon": 333,
"co2EmissionsKgPerTon": 45,
"netCo2BenefitKgPerTon": 288,
"breakdown": {
"environmental": 0.92,
"logistics": 0.88,
"economic": 0.85,
"advanced": 0.89
}
}GET /api/healthGET /api/info45 Metropolitan Areas across 21 Countries:
North America (14):
- ๐บ๐ธ USA: Des Moines, Fresno, Kansas City, Lincoln, Fargo, Stockton, Bakersfield, Grand Island, Minot
- ๐จ๐ฆ Canada: Winnipeg, Calgary, Saskatoon, Regina, Lethbridge
Asia (9):
- ๐ฎ๐ณ India: Bangalore, Hyderabad, Ludhiana, Nashik, Mysore
- ๐จ๐ณ China: Jinan, Beijing Rural
- ๐ฏ๐ต Japan: Sendai
- ๐ฐ๐ท South Korea: Suwon
Europe (6):
- ๐ซ๐ท France: Toulouse, Toulouse Rural
- ๐ช๐ธ Spain: Lleida
- ๐บ๐ฆ Ukraine: Kiev
- ๐ฉ๐ช Germany: Munich Rural
- ๐ท๐บ Russia: Krasnodar, Novosibirsk Rural
South America (6):
- ๐ง๐ท Brazil: Sรฃo Paulo Interior, Piracicaba, Londrina
- ๐ฆ๐ท Argentina: Cรณrdoba, Mendoza, Rosario
Africa (4):
- ๐ฐ๐ช Kenya: Nairobi
- ๐ฟ๐ฆ South Africa: Johannesburg Rural
- ๐ฒ๐ฆ Morocco: Casablanca Rural
- ๐ณ๐ฌ Nigeria: Kano
Oceania (3):
- ๐ฆ๐บ Australia: Brisbane, Perth
- ๐ณ๐ฟ New Zealand: Palmerston North
Asia-Europe Bridge (1):
- ๐น๐ท Turkey: Ankara Rural
Southeast Asia (1):
- ๐น๐ญ Thailand: Bangkok Rural
src/
โโโ main/
โ โโโ java/com/example/erw/
โ โ โโโ Application.java # Main application
โ โ โโโ config/DatabaseConfig.java # DB configuration
โ โ โโโ controller/
โ โ โ โโโ HomeController.java # Service info & health
โ โ โ โโโ SiteController.java # Main API endpoints
โ โ โโโ dto/ # Data Transfer Objects
โ โ โ โโโ PagedSiteResponse.java
โ โ โ โโโ SiteScoreRequest.java # 20-parameter input
โ โ โ โโโ SiteScoreResponse.java
โ โ โโโ model/Site.java # JPA entity
โ โ โโโ repository/SiteRepository.java
โ โ โโโ service/
โ โ โ โโโ SiteScoringService.java
โ โ โ โโโ impl/SiteScoringServiceImpl.java # Core algorithm
โ โ โโโ exception/GlobalExceptionHandler.java
โ โโโ resources/
โ โโโ static/ # Web interface
โ โ โโโ index.html # Single-page application
โ โ โโโ css/styles.css # Responsive styling
โ โ โโโ js/app.js # Interactive features
โ โโโ application.yml # Configuration
โ โโโ data.sql # 45 metropolitan areas
โโโ test/java/ # Unit tests
./mvnw test# Build JAR
./mvnw clean package
# Build Docker image (requires Dockerfile)
docker build -t erw-city-viability .PORT- Server port (default: 8080)DATABASE_URL- PostgreSQL JDBC URLDB_USER- Database username (if not in URL)DB_PASS- Database password (if not in URL)
server:
port: ${PORT:8080}
spring:
datasource:
# URL configured via DatabaseConfig.java
hikari:
connection-timeout: 60000
maximum-pool-size: 5
jpa:
hibernate:
ddl-auto: update
show-sql: false
sql:
init:
mode: always
continue-on-error: true- Set
DATABASE_URLenvironment variable - Application automatically configures database connection
- Uses embedded Tomcat (no external server needed)
- Health check available at
/api/health
# Using docker-compose
docker compose up -d
# Or manually
docker run -d --name postgres -e POSTGRES_DB=erwdb -p 5432:5432 postgres:15-alpine
docker run -d --name erw-app -p 8080:8080 -e DATABASE_URL=jdbc:postgresql://host:5432/erwdb erw-city-viability- Response Time: <200ms for scoring calculations
- Concurrent Users: Supports 100+ simultaneous users
- Memory Usage: ~512MB typical Spring Boot footprint
- Storage: <100MB including static assets
- Database: 45 metropolitan areas, expandable design
- API Rate Limiting: Input validation and pagination prevent abuse
- Security: SQL injection prevention, input sanitization
Contact Information:
- Developer: Pushkar Rimmalapudi
- Email: rpushkar@uw.edu
- GitHub: @rpushkar9
Development Guidelines:
- Follow Spring Boot best practices
- Maintain comprehensive input validation
- Include unit tests for new features
- Update API documentation for changes
- Ensure responsive web design compatibility
This project is open source and available under standard terms for research and educational purposes.
๐ ERW City Viability Analysis Platform - Advancing Enhanced Rock Weathering through data-driven metropolitan assessment and global research collaboration.