# Sprint G010 — RSVP Engine

## Context

Project: INVEETAIRE Digital Invitation Platform

Architecture:

Couple Panel (CMS)
        ↓
Invitation Configuration
        ↓
InvitationRenderer
        ↓
Public Invitation

Previous completed sprints:

✅ G004 Media Engine
✅ G005 Image Processing Engine
✅ G006 Guest Engine
✅ G007 Music Engine
✅ G008 QR Attendance Engine
✅ G009 Couple Panel Integration & Content Binding

This sprint introduces the complete RSVP Engine.

---

# Objective

Implement a complete RSVP system that allows invited guests to confirm attendance while allowing Couple Panel to monitor responses.

Guest identity is determined exclusively by the invitation token.

No login system.

No payment.

No external integration.

---

# Core Principles

Guest token is the source of identity.

One guest = one RSVP record.

RSVP belongs to Guest.

Public Invitation only submits data.

Couple Panel manages configuration and views results.

---

# Scope

## 1. RSVP Settings (Couple Panel)

Verify and complete existing settings if already available.

Support:

- Enable RSVP
- RSVP Deadline
- Allow Guest Edit Before Deadline
- Maximum Guest Count (default from Guest record)
- Enable Notes

Do NOT redesign existing CMS.

Reuse current configuration if available.

---

## 2. Public Invitation

Display RSVP section only if enabled.

Guest can choose:

○ Attending

○ Not Attending

If Attending:

Display attendance quantity selector.

Minimum:

1

Maximum:

Guest.maximum_attendance

Example:

John Doe

Maximum Attendance = 4

Dropdown:

1
2
3
4

---

## 3. Guest Notes

Optional.

Only displayed if Couple enables notes.

Example:

"Will arrive after ceremony."

Maximum:

500 characters.

---

## 4. Validation

Prevent invalid submissions.

Examples:

- Attendance exceeds allowed quantity
- RSVP after deadline
- Invalid guest token
- Invitation not published

Display friendly validation messages.

---

## 5. Update Existing RSVP

If Couple allows editing before deadline:

Existing RSVP should be loaded.

Guest may edit:

- Status
- Quantity
- Notes

Otherwise:

Display submitted status as read-only.

---

## 6. Couple Panel Dashboard

Display RSVP summary.

Cards:

Total Guests

Pending RSVP

Attending

Not Attending

Expected Attendance

---

Provide table:

Guest

Status

Attendance Count

Notes

Last Updated

Support:

- Search
- Filter by Status
- Sort by Name

---

## 7. Business Rules

Guest may only RSVP using their invitation token.

Guest cannot RSVP for another invitation.

Maximum attendance cannot exceed Guest configuration.

RSVP deadline is enforced.

Published invitation required.

---

## 8. Renderer

InvitationRenderer must expose RSVP configuration cleanly.

Views must remain presentation-only.

No business logic inside templates.

---

## 9. Database

Reuse existing tables if possible.

Create new table only if RSVP persistence does not yet exist.

Keep schema minimal.

Suggested fields:

- guest_id
- invitation_id
- status
- attendance_count
- notes
- responded_at
- updated_at

Avoid duplicate data.

---

## 10. Backward Compatibility

Existing invitations without RSVP enabled must continue working normally.

No breaking changes.

---

# Deliverables

Complete RSVP workflow.

Guest can:

- Submit RSVP
- Update RSVP (if allowed)

Couple can:

- View all responses
- Filter responses
- Monitor attendance totals

Renderer fully integrated.

Validation completed.

---

# Testing Checklist

- RSVP section hidden when disabled
- RSVP visible when enabled
- Guest token validation works
- Deadline enforcement works
- Maximum attendance enforced
- Guest notes saved correctly
- Edit before deadline works
- Read-only after deadline works
- Dashboard totals accurate
- Existing invitations unaffected

---

# Expected Result

After Sprint G010:

INVEETAIRE provides a complete RSVP workflow tightly integrated with Guest Engine and Couple Panel.

Guest attendance is securely linked to invitation tokens.

Couple Panel becomes the authoritative dashboard for attendance management.

The implementation must prioritize simplicity, maintainability, and consistency with the existing architecture.