# Black Bean Forms — Product Roadmap

Contact Form 7 alternative built on **Black Bean Tables**. Each form provisions a dedicated entry table in MySQL.

## Phase 1 (v0.1.0) — MVP ✅

- Plugin bootstrap with `Requires Plugins: blackbean-tables`
- System board `bb_forms_system` for entry tables
- Form registry (WP option)
- Admin: All forms, Form builder, Entries inbox
- Field types: text, textarea, email, phone, number, url
- Shortcode `[blackbean_forms id="…"]`
- AJAX submit + fallback POST
- Admin email + optional auto-reply
- Honeypot + rate limit (10/hour/IP)
- Sample Contact form on activation

## Phase 2 (v0.2.0) — Beyond CF7 ✅

- Conditional show/hide fields
- Multi-step wizard forms
- reCAPTCHA v3 integration (per-form keys)
- Field types: select, checkbox, consent/GDPR, file upload
- Per-form webhooks (JSON + optional HMAC)
- Gutenberg block `blackbean/forms`
- Theme styling presets (default, compact, card)
- CSV export entries

## Phase 3 — Work OS

- Route submissions to CRM board / Kanban pipeline
- Automation triggers on submit
- Assignee + inbox notifications
- Portal for logged-in customers
- Analytics dashboard (conversion, spam rate)

## Phase 3 (v0.3.0) — Work OS ✅

- Route submissions to CRM board / Kanban pipeline
- Board automations trigger on routed row insert (via Tables engine)
- Default assignee + inbox notifications (Tables assignee notifier)
- Customer portal shortcode `[blackbean_forms_portal id="…"]`
- Analytics dashboard (views, submissions, conversion, spam rate)

## Architecture

```
blackbean-forms (product UX)
    → BB_Forms_Provisioner
        → BB_CT_Schema_Repository (entry table)
        → BB_CT_Board_Repository (system board wiring)
    → BB_Forms_Submission_Handler
        → BB_CT_Form_Validator
        → BB_CT_Row_Repository::insert() (entry)
        → BB_Forms_Board_Router → BB_CT_Row_Repository::insert() (CRM)
            → bb_tables_row_created → automations + inbox + webhooks
        → BB_Forms_Notifications (wp_mail)
        → BB_Forms_Analytics
```

## Shortcodes

```
[blackbean_forms id="contact"]
[blackbean_forms_portal id="contact"]
```

Optional attribute: `title="Custom heading"`
