Skip to content

Conversation

@sbafsk
Copy link
Collaborator

@sbafsk sbafsk commented Dec 1, 2025

Phase 2: Events Module

This PR implements the complete event management system with speakers, registrations, and capacity control.

🎯 Components Implemented

Entities:

  • Event entity (with types, status, location, pricing, capacity)
  • EventSpeaker entity (with ordering)
  • EventRegistration entity (with confirmation codes)
  • Enums: EventType, LocationType, EventStatus, RegistrationType, RegistrationStatus

API Endpoints:

Public:

  • GET /api/v1/events - List events (filters: type, upcoming, featured, search)
  • GET /api/v1/events/{id} - Get event details
  • POST /api/v1/events/{eventId}/register - Register for event

Authenticated:

  • GET /api/v1/events/registrations/my - My registrations
  • POST /api/v1/events/registrations/{id}/cancel - Cancel registration

Admin:

  • POST /api/v1/events - Create event
  • PUT /api/v1/events/{id} - Update event
  • DELETE /api/v1/events/{id} - Delete event
  • GET /api/v1/events/{eventId}/registrations - Event registrations

Features:

  • Capacity control and validation
  • Duplicate registration prevention
  • Multiple pricing tiers (member, non-member, student, international)
  • Unique confirmation codes
  • Guest and authenticated registrations
  • Event filtering and search
  • Registration cancellation

Database:

  • Flyway migration V3
  • 3 tables: events, event_speakers, event_registrations
  • Optimized indexes

📊 Files Changed

20 files added:

  • 3 entities
  • 6 DTOs (3 request, 3 response)
  • 3 repositories
  • 2 services
  • 2 controllers
  • 2 exceptions
  • 1 Flyway migration
  • 1 completion doc

✅ Checklist

  • Event CRUD
  • Speaker management
  • Registration system
  • Capacity validation
  • Price calculation
  • Filtering & search

Ready for review and merge to phase-1

Implement complete event management system with speakers, registrations, and capacity control.

## Components Implemented

### Entities
- Event entity with full event management (title, description, dates, location, pricing, capacity)
- EventSpeaker entity with speaker information and ordering
- EventRegistration entity with registration tracking and status
- Enums: EventType, LocationType, EventStatus, RegistrationType, RegistrationStatus

### API Endpoints
#### Public
- GET /api/v1/events - List published events (with filters: type, upcoming, featured, search)
- GET /api/v1/events/{id} - Get event details
- POST /api/v1/events/{eventId}/register - Register for event

#### Authenticated
- GET /api/v1/events/registrations/my - My registrations
- POST /api/v1/events/registrations/{id}/cancel - Cancel registration

#### Admin
- POST /api/v1/events - Create event
- PUT /api/v1/events/{id} - Update event
- DELETE /api/v1/events/{id} - Delete event
- GET /api/v1/events/admin/{id} - Get event (any status)
- GET /api/v1/events/{eventId}/registrations - Event registrations

### Services
- EventService with CRUD, filtering, and search capabilities
- EventRegistrationService with registration management, capacity validation, duplicate prevention

### Repository Methods
- EventRepository with advanced queries (by status, type, location, search, upcoming)
- EventSpeakerRepository with ordered speaker retrieval
- EventRegistrationRepository with registration tracking and validation

### Features
- Capacity control and validation
- Duplicate registration prevention
- Automatic price calculation by registration type
- Unique confirmation codes
- Registration cancellation with counter updates
- Multiple pricing tiers (member, non-member, student, international)
- Event states (DRAFT, PUBLISHED, CANCELLED, COMPLETED)

### Database
- Flyway migration V3 (events, event_speakers, event_registrations tables)
- Indexes for performance optimization
- Proper foreign key relationships

## Technical Details
- Support for both authenticated and guest registrations
- Public/private event visibility control
- Pagination support for event listings
- Confirmation code generation (8 characters)
- Registered count auto-increment/decrement

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
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.

2 participants