A scalable, interactive dashboard for exploring plant biodiversity data with real-time visualizations, conservation insights, network analysis, and API integration capabilities.
- Interactive Tree Map: Visualize tree distribution across different states and cities
- Summary Statistics: Get quick insights with summary cards showing key metrics
- Data Filtering: Filter data by state and city for focused analysis
- Responsive Design: Works seamlessly across desktop and mobile devices
- Real-time Updates: Dynamic updates based on user selections
- Biodiversity Statistics: Track total species, families, hotspots, and threatened species
- Interactive Controls: Filter by plant family and conservation status
- Global Hotspots Map: Explore biodiversity hotspots worldwide with interactive mapping
- Conservation Charts: Visualize plant families and conservation status distributions
- Species Details: Detailed information about plant families and characteristics
- Data Export: Download biodiversity datasets in CSV format
- Enhanced Styling: Beautiful cards with animations and responsive design
- Interactive Network Maps: Explore relationships between species, hotspots, and conservation statuses
- Multiple Visualization Types: Choose between network, density, and cluster density visualizations
- Customizable Display: Adjust node sizes, distances, and color schemes
- Pattern Discovery: Identify important connections and clusters in biodiversity data
- VOSviewer Integration: Powered by advanced network visualization technology
- See more details: VOSviewer Integration Documentation
- Interactive Visualizations: Dynamic charts and maps powered by Plotly
- Real-time Data Processing: Efficient data handling and updates
- Modern UI/UX: Clean, intuitive interface design
- Cross-platform Compatibility: Works on Windows, macOS, and Linux
- Conservation Insights: IUCN conservation status tracking and analysis
- Biodiversity Hotspots: Global hotspot mapping and metrics
- Species Explorer: Detailed plant family and species information
- Configurable Architecture: Easy customization through
config.py - REST API: Full API access for data integration
- Multiple Export Formats: CSV, JSON, Excel export capabilities
- Environment-based Configuration: Development, production, and testing configs
- Modular Design: Easy to extend and integrate into other projects
- Automated Data Updates: Scheduled data fetching from multiple sources
- Data Validation: Built-in data quality checks
- Multiple Data Sources: GBIF, conservation databases, research datasets
- Flexible Data Loading: Support for various file formats and patterns
- Python 3.8+
- pip package manager
-
Clone the repository
git clone <repository-url> cd us-tree-dashboard
-
Install dependencies
pip install -r requirements.txt
-
Update datasets (optional)
python data_updater.py
-
Run the dashboard
python app.py
-
Access the dashboard
- Dashboard: http://localhost:8050
- API (if enabled): http://localhost:8050/api/v1
The dashboard is highly configurable through the config.py file:
from config import config
# App settings
config.APP_NAME = "PlantsWorld"
config.APP_TITLE = "πΏ PlantsWorld Dashboard"
config.DEBUG = True
config.PORT = 8050# Server configuration
export DEBUG=True
export HOST=0.0.0.0
export PORT=8050
# API configuration
export API_ENABLED=True
export CORS_ENABLED=True
# Data configuration
export AUTO_UPDATE=False
export UPDATE_INTERVAL_HOURS=24
export MAX_RECORDS=10000Add new datasets by updating DATASETS_CONFIG in config.py:
DATASETS_CONFIG = {
'my_dataset': {
'filename_pattern': 'my_data_*.csv',
'display_name': 'My Dataset',
'description': 'Description of my dataset'
}
}When API is enabled, the following endpoints are available:
GET /api/v1/healthGET /api/v1/datasetsGET /api/v1/datasets/{dataset_key}?page=1&per_page=100GET /api/v1/datasets/{dataset_key}/export?format=csvGET /api/v1/search?q=search_term&dataset=dataset_keyGET /api/v1/statsThe dashboard integrates data from multiple sources:
- GBIF (Global Biodiversity Information Facility): Species occurrence data
- IUCN Red List: Conservation status information
- Biodiversity Hotspots: Conservation priority areas
- Plant Families Database: Taxonomic information
us-tree-dashboard/
βββ app.py # Main dashboard application
βββ config.py # Configuration management
βββ api.py # REST API implementation
βββ data_updater.py # Data fetching and updating
βββ requirements.txt # Python dependencies
βββ data/ # Data storage directory
βββ logs/ # Application logs
βββ tests/ # Test suite
- New Visualizations: Add to the
create_layout()method inapp.py - New Data Sources: Update
data_updater.pyandconfig.py - New API Endpoints: Extend the
api.pymodule - Custom Styling: Modify the CSS in the layout components
# Run tests
pytest tests/
# Run with coverage
pytest --cov=. tests/# Build image
docker build -t plantsworld .
# Run container
docker run -p 8050:8050 plantsworld# Using Gunicorn
gunicorn --bind 0.0.0.0:8050 app:server
# With environment variables
export FLASK_ENV=production
export DEBUG=False
gunicorn --bind 0.0.0.0:8050 app:server- Development:
config.DevelopmentConfig - Production:
config.ProductionConfig - Testing:
config.TestingConfig
from app import app, server
# Use the Dash app
if __name__ == '__main__':
app.run_server()from api import create_api_app
api_app = create_api_app()
api_app.run()from app import PlantsWorldDashboard
from config import config
# Create dashboard instance
dashboard = PlantsWorldDashboard()
data = dashboard.load_datasets()- Data Caching: Datasets are cached in memory
- Pagination: API endpoints support pagination
- Lazy Loading: Data loaded on demand
- Configurable Limits: Maximum records per dataset
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests
- Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.
This dashboard is designed to support conservation efforts and environmental research. By providing easy access to biodiversity data, we aim to contribute to the protection of our planet's plant life.
For questions, issues, or contributions:
- Create an issue on GitHub
- Check the documentation
- Review the configuration options
Made with π for our planet's biodiversity