docs: initialize umzugsliste
WordPress plugin for Siegel Umzüge moving list form. Creates PROJECT.md with requirements and constraints.
This commit is contained in:
77
.planning/PROJECT.md
Normal file
77
.planning/PROJECT.md
Normal file
@@ -0,0 +1,77 @@
|
||||
# Umzugsliste
|
||||
|
||||
## What This Is
|
||||
|
||||
A WordPress plugin providing a digital moving list form for Siegel Umzüge. Customers calculate the volume of their move by entering inventory items room-by-room, then request quotes for moving services. This plugin migrates the legacy standalone `liste.php` script into a secure, integrated WordPress solution.
|
||||
|
||||
## Core Value
|
||||
|
||||
Email format identical to legacy — office staff workflow depends on the exact HTML table structure.
|
||||
|
||||
## Requirements
|
||||
|
||||
### Validated
|
||||
|
||||
(None yet — ship to validate)
|
||||
|
||||
### Active
|
||||
|
||||
- [ ] Plugin infrastructure with CPT `umzugsliste_entry` for storing all submissions
|
||||
- [ ] Settings page with receiver email, captcha config (reCAPTCHA v2/v3/hCaptcha), thank you URL
|
||||
- [ ] Shortcode `[umzugsliste]` renders form matching legacy structure
|
||||
- [ ] Volume calculations (cbm) matching legacy logic exactly
|
||||
- [ ] Captcha integration with all three providers
|
||||
- [ ] Legacy HTML table email format generation
|
||||
- [ ] i18n support (German primary, English secondary)
|
||||
- [ ] Form submission saves to CPT before email (data safety)
|
||||
- [ ] Inline form validation (not JS alerts)
|
||||
|
||||
### Out of Scope
|
||||
|
||||
- PDF generation — email HTML is the only output format
|
||||
- Customer accounts — simple form submission, no login
|
||||
- Furniture list admin editing — future feature (extract as-is for v1)
|
||||
- Frontend redesign — keep existing form look, wrap it properly
|
||||
|
||||
## Context
|
||||
|
||||
**Legacy Code Location:** `/Users/vmiller/Local Sites/siegel-liste/app/public/liste/`
|
||||
- `liste.php` — Main form with email sending (PHPMailer/SMTP)
|
||||
- `liste_ENG.php` — English version
|
||||
- `functions.inc.php` — Email HTML generators, date selectors
|
||||
- `css/` — Foundation CSS + custom.css
|
||||
- `js/` — Foundation JS
|
||||
|
||||
**Legacy Structure:**
|
||||
- 7 room sections: Wohnzimmer, Schlafzimmer, Arbeitszimmer, Bad, Küche/Esszimmer, Kinderzimmer, Keller
|
||||
- Each furniture item: quantity (v prefix), cbm value (q prefix), montage option (m prefix)
|
||||
- Additional work sections: Montage, Schrank, Elektriker, Dübelarbeiten, Packarbeiten, Anfahrt
|
||||
- Sonstiges free text section
|
||||
|
||||
**Environment:**
|
||||
- Local by WP Engine for development
|
||||
- WordPress site uses Salient theme
|
||||
- Plugin directory: `wp-content/plugins/umzugsliste/`
|
||||
|
||||
## Constraints
|
||||
|
||||
- **Theme**: Must integrate with Salient theme
|
||||
- **Language**: German primary, English secondary
|
||||
- **Email Format**: Must match legacy HTML table structure exactly
|
||||
- **Email Delivery**: Use wp_mail() with SMTP plugin support
|
||||
- **Encoding**: UTF-8 (convert from legacy ISO-8859-1)
|
||||
- **Access**: Editors and above can view CPT entries
|
||||
- **Admin UI**: Top-level menu (Umzugsliste with Entries + Settings)
|
||||
|
||||
## Key Decisions
|
||||
|
||||
| Decision | Rationale | Outcome |
|
||||
|----------|-----------|---------|
|
||||
| Extract furniture data as static config | Matches legacy, editing is future feature | — Pending |
|
||||
| Support all 3 captcha providers | Flexibility for admin preference | — Pending |
|
||||
| Use wp_mail() not PHPMailer directly | WordPress integration, SMTP plugins work | — Pending |
|
||||
| Inline validation not JS alerts | Modern UX improvement over legacy | — Pending |
|
||||
| Redirect to configurable thank you URL | Better UX than inline confirmation | — Pending |
|
||||
|
||||
---
|
||||
*Last updated: 2026-01-16 after initialization*
|
||||
26
.planning/config.json
Normal file
26
.planning/config.json
Normal file
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"mode": "yolo",
|
||||
"depth": "standard",
|
||||
"parallelization": {
|
||||
"enabled": true,
|
||||
"plan_level": true,
|
||||
"task_level": false,
|
||||
"skip_checkpoints": true,
|
||||
"max_concurrent_agents": 3,
|
||||
"min_plans_for_parallel": 2
|
||||
},
|
||||
"gates": {
|
||||
"confirm_project": false,
|
||||
"confirm_phases": false,
|
||||
"confirm_roadmap": false,
|
||||
"confirm_breakdown": false,
|
||||
"confirm_plan": false,
|
||||
"execute_next_plan": false,
|
||||
"issues_review": false,
|
||||
"confirm_transition": false
|
||||
},
|
||||
"safety": {
|
||||
"always_confirm_destructive": true,
|
||||
"always_confirm_external_services": true
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user