Discover how rural any location in the United States is using comprehensive data analysis.
Rurality.app provides a comprehensive Rural Index Score for any location in the United States by analyzing multiple data sources and factors that define rural vs. urban characteristics. Whether you're a researcher, policy maker, real estate professional, or just curious about your hometown, Rurality.app gives you data-driven insights into the rural nature of any place.
- Search any city, county, or ZIP code in the US
- GPS-powered current location detection
- Real-time geocoding with OpenStreetMap
Our methodology builds on the USDA Rural-Urban Continuum Codes (the federal gold standard) enhanced with real-time data:
- USDA Classification (50%) - Official federal rurality codes
- Population Density (25%) - People per square mile from US Census
- Distance to Metro Areas (15%) - Calculated proximity to cities of various sizes
- Broadband Access (10%) - Internet availability when data is available
See detailed methodology with data sources and citations.
- 5-year historical rurality trends
- Identify changing rural/urban patterns
- Export trend data for research
- Real-time location mapping
- Rurality heat map overlays
- Multiple data layer views
- Compare up to 5 locations side-by-side
- Detailed metric breakdowns
- Export comparison reports
- Responsive design for all devices
- Touch-optimized interface
- Offline capability (coming soon)
- Node.js 16+ and npm
- Modern web browser
# Clone the repository
git clone https://github.com/cwimpy/rurality-app.git
cd rurality-app
# Install dependencies
npm install
# Start development server
npm startOpen http://localhost:3000 to view it in your browser.
Create a .env file for enhanced functionality:
# US Census Bureau API Key (optional - increases rate limits)
REACT_APP_CENSUS_API_KEY=your_census_api_key
# Mapbox API Key (for advanced mapping features)
REACT_APP_MAPBOX_TOKEN=your_mapbox_token
# Google Places API (for enhanced geocoding)
REACT_APP_GOOGLE_PLACES_KEY=your_google_places_key- React 18 - Modern UI framework
- Tailwind CSS - Utility-first styling
- Lucide React - Beautiful icons
- OpenStreetMap - Free mapping service
- USDA Economic Research Service - Rural-Urban Continuum Codes (2013)
- US Census Bureau API - Population and demographic data (2022)
- US Census Bureau - Metropolitan Statistical Areas (2020)
- FCC Broadband Data Collection - County-level coverage at β₯100/20 Mbps (J25 filing, June 2025)
- OpenStreetMap Nominatim - Free geocoding service
All sources are cited in METHODOLOGY.md
- Vercel - Serverless deployment platform
- GitHub Actions - Automated CI/CD
The Rural Index Score (0-100) uses a hybrid approach that prioritizes official federal classifications:
Rural Index = (USDA RUCC Γ 0.50) +
(Population Density Γ 0.25) +
(Distance to Metros Γ 0.15) +
(Broadband Access Γ 0.10)*
* When broadband data unavailable, weight redistributes to other factors
Why this approach?
- USDA RUCC is the federal government's official rurality measure, developed by researchers and used for policy
- We enhance it with granular, real-time data for more detailed insights
- All data sources are cited, all calculations are transparent
- No placeholder or fabricated data
- 80-100: Very Rural πΎ
- 60-79: Rural ποΈ
- 40-59: Mixed ποΈ
- 20-39: Suburban π‘
- 0-19: Urban ποΈ
See METHODOLOGY.md for complete details, data sources, and academic citations.
# Start development server
npm start
# Build for production
npm run build
# Run tests
npm test
# Lint code
npm run lint
# Format code
npm run formatrurality-app/
βββ public/ # Static assets
βββ src/
β βββ components/ # Reusable UI components
β βββ data/ # USDA codes, metro data
β βββ services/ # API and calculation services
β βββ utils/ # API utilities, rate limiting, caching
β βββ App.js # Main application component
βββ METHODOLOGY.md # Detailed methodology documentation
βββ DEPLOYMENT.md # Deployment guide
βββ PRODUCTION_READINESS.md # Production checklist
// GET /api/rurality?location={location}
const response = await fetch('/api/rurality?location=Yellowstone County, MT');
const data = await response.json();
// Response format
{
"location": "Yellowstone County, MT",
"coordinates": { "lat": 45.7833, "lng": -108.5007 },
"ruralityScore": 72,
"classification": "Rural",
"metrics": {
"populationDensity": { "value": 37.2, "score": 85 },
"distanceToUrban": { "value": 45, "score": 78 },
// ... additional metrics
},
"lastUpdated": "2024-01-15T10:30:00Z"
}We welcome contributions! Please see our Contributing Guide for details.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Additional data source integration
- Mobile app development (React Native)
- Advanced mapping features
- Data visualization improvements
- API rate limiting and caching
- Accessibility improvements
- Basic UI and design
- Location search functionality
- Mock rurality calculations
- Local development setup
- USDA Rural-Urban Continuum Codes integration
- US Census Bureau API integration
- Evidence-based calculation methodology
- Complete RUCC database (all 3,142 counties)
- FCC broadband integration (BDC, β₯100/20 Mbps, county-level)
- Historical trend data collection
- User accounts and saved locations
- Advanced mapping with Mapbox
- PDF report generation
- API rate limiting and caching
- Mobile app development
- Performance optimization
- Advanced analytics
- Enterprise features
- White-label solutions
This project is licensed under the MIT License - see the LICENSE file for details.
- US Census Bureau for providing comprehensive demographic data
- USDA Economic Research Service for rural-urban classification codes
- OpenStreetMap contributors for mapping data
- React and Tailwind CSS communities for excellent tools
- Website: rurality.app
- Issues: GitHub Issues
- Email: cwimpy@mac.com
Built with β€οΈ for rural communities and researchers everywhere.