Skip to content

Conversation

@stefan-burke
Copy link
Member

Summary

This PR adds an optional description field to events, allowing event organizers to provide additional context about their events. Descriptions are displayed on both single and multi-ticket pages and support HTML content.

Key Changes

  • Database: Added encrypted description column to events table with empty string default
  • Type System: Updated Event and EventInput types to include optional description field
  • Encryption: Implemented encryptNonEmpty and decryptNonEmpty helpers to handle empty string descriptions without unnecessary encryption overhead
  • Admin UI: Added description field to event creation/editing forms with 128-character limit validation
  • Public Pages: Display descriptions on ticket pages (both single and multi-ticket views) with HTML support
  • Admin Dashboard: Added description column to events table view
  • Tests: Comprehensive test coverage for description storage, validation, and rendering

Implementation Details

  • Description field is optional and defaults to empty string
  • Empty descriptions are not encrypted/decrypted to optimize storage and performance
  • HTML is allowed in descriptions and rendered using the existing Raw component
  • Description validation enforces a 128-character maximum length
  • Multi-ticket event rows display descriptions with consistent styling
  • Descriptions are conditionally rendered only when non-empty to avoid unnecessary markup
  • Database migration safely adds the column with backward compatibility

https://claude.ai/code/session_01Wh952i2hSuVeAz9gFRGm6d

… allowed)

- Add description field to Event type, EventInput, and DB schema with encryption
- Add DB migration for description column
- Show description on admin dashboard table
- Show description on /ticket/ page with smaller font and vertical margins
- Show description beneath each event in multi-ticket booking pages
- Add 128-character validation on description field
- Excluded from webhooks, CSV exports, and payment metadata

https://claude.ai/code/session_01Wh952i2hSuVeAz9gFRGm6d
…rkaround

The migration now encrypts empty strings for existing rows, so the
description column uses standard col.encrypted semantics like every
other encrypted field.

https://claude.ai/code/session_01Wh952i2hSuVeAz9gFRGm6d
@stefan-burke stefan-burke added this pull request to the merge queue Feb 2, 2026
Merged via the queue into main with commit b19d72b Feb 2, 2026
2 checks passed
@stefan-burke stefan-burke deleted the claude/add-event-description-R0nkg branch February 2, 2026 03:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants