# Meter Opportunities

Government contracting opportunities plugin for WordPress. Aggregates opportunities from SAM.gov, DIBBS, and expiring contracts into a unified searchable interface with visual analytics.

## Features

- **Three data sources:**
  - SAM.gov opportunities via official API
  - DIBBS (DLA Internet Bid Board System) via scraper
  - Expiring contracts from meter-reports data

- **Visual heatmap interface:** Calendar-style heatmap showing opportunity volume by agency over time

- **Agency following:** Users can follow specific agencies and receive daily email digests

- **Elasticsearch integration:** Fast searching and filtering across all opportunities

- **Freemium model:** Free users see visualizations, paid users access full opportunity details

## Installation

1. Upload the `meter-opportunities` folder to `/wp-content/plugins/`
2. Activate the plugin through the WordPress admin
3. Configure settings in **Opportunities > Settings**

## Configuration

### Required Settings

1. **SAM.gov API Key:**
   - Get your API key from [SAM.gov](https://sam.gov/)
   - Enter in Settings > Data Sources > SAM.gov

2. **Elasticsearch Connection:**
   - The plugin will attempt to use settings from meter-search if available
   - Or configure manually in Settings > Elasticsearch

3. **DIBBS Credentials (optional):**
   - DIBBS username and password
   - Required for scraping DLA opportunities

### Cron Jobs

The plugin schedules the following cron jobs on activation:

- `meter_opportunities_fetch_sam` - Daily at 2am (fetch SAM.gov opportunities)
- `meter_opportunities_scrape_dibbs` - Daily at 3am (scrape DIBBS)
- `meter_opportunities_update_expiring` - Daily at 4am (update expiring contracts)
- `meter_opportunities_send_digests` - Daily at 6am (send email digests)
- `meter_opportunities_cleanup` - Weekly on Sunday at 1am (remove expired opportunities)

## Shortcodes

### Opportunities Heatmap
```
[meter_opportunities_heatmap days="30" limit="20"]
```

### Opportunities List
```
[meter_opportunities_list agency="DEPARTMENT OF DEFENSE" limit="50"]
```

### Search Form
```
[meter_opportunities_search]
```

## Integration with Other Plugins

### meter-signups
The plugin checks for active licenses via the `meter_signups` plugin. Paid users get:
- Full opportunity details
- Agency following
- Daily email digests
- Advanced filtering

### meter-search
Reuses Elasticsearch connection settings and can query vendor data for cross-referencing.

### meter-reports
Pulls expiring contract data from the awards database.

## File Structure

```
meter-opportunities/
├── admin/
│   ├── class-admin.php          # Admin interface
│   ├── pages/
│   │   ├── page-dashboard.php   # Main admin page
│   │   ├── page-sources.php     # Data source management
│   │   └── page-settings.php    # Settings page
│   ├── css/
│   └── js/
├── includes/
│   ├── class-opportunities.php  # Main plugin class
│   ├── class-loader.php         # Hook loader
│   ├── class-activator.php      # Activation tasks
│   ├── class-deactivator.php    # Deactivation tasks
│   ├── class-email-digest.php   # Email notifications
│   ├── data/
│   │   ├── class-sam-fetcher.php         # SAM.gov API
│   │   ├── class-dibbs-scraper.php       # DIBBS scraper
│   │   └── class-expiring-contracts.php  # Expiring contracts
│   └── search/
│       ├── class-elasticsearch-client.php # ES client
│       └── class-index-manager.php        # Index management
├── public/
│   ├── class-public.php         # Public interface
│   ├── partials/
│   │   ├── heatmap.php          # Heatmap visualization
│   │   ├── opportunities-list.php # Opportunities list
│   │   └── search-form.php       # Search form
│   ├── css/
│   └── js/
└── meter-opportunities.php      # Plugin bootstrap
```

## Development

### TODO

- [ ] Implement DIBBS scraper (requires understanding DIBBS HTML structure)
- [ ] Create heatmap visualization template
- [ ] Add AJAX handlers for filtering
- [ ] Implement agency follow/unfollow functionality
- [ ] Add freemium access control hooks
- [ ] Create admin dashboard with stats
- [ ] Add settings pages for API keys and configuration
- [ ] Implement opportunity detail pages
- [ ] Add export functionality (CSV, PDF)

## License

GPL-2.0+
