Skip to content

Latest commit

 

History

History
55 lines (43 loc) · 2.77 KB

File metadata and controls

55 lines (43 loc) · 2.77 KB

EventHive

1. Overview

EventHive is a comprehensive full-stack web application designed to facilitate the discovery, organization, and management of events. It connects event organizers with attendees, providing a seamless experience for creating events, booking tickets, and managing attendance.

2. Scope

The application will serve three primary types of users:

  • Attendees: Can browse, search, and book tickets for events.
  • Organizers: Can create, update, and manage their events and view sales stats.
  • Admins: Manage users, approve events (optional), and oversee platform activity.

The backend will be the core of the system, handling authentication, business logic for bookings, and data consistency, built with TypeScript and Express.

3. Key Features

User Management

  • Secure User & Organizer Sign-up/Login (JWT Auth).
  • Profile Management.
  • RBAC (Role-Based Access Control): Middleware to secure easy-to-miss endpoints.

Event Management (Organizers)

  • CRUD Operations: Create, Read, Update, Delete events.
  • Ticket Management: specific types (VIP, General), quantity limits.
  • Dashboard: View attendees list and revenue.

Booking & Ticketing (Attendees)

  • Event Discovery: Search by category, date, or location.
  • Booking Flow: Reserve tickets, handle concurrency (preventing overbooking).
  • My Tickets: View booking history and QR code (simulated).

System Features

  • Reviews: Attendees can rate events after they end.

4. Technology Stack

  • Backend: Node.js, Express, TypeScript (Strict typing for robustness).
  • Database: MongoDB (Flexible schema for events).
  • Frontend: React.
  • Architecture: Layered Architecture (Controller-Service-Repository).

5. Software Engineering Practices & OOP Focus

Key OOP Concepts Implementation:

  1. Encapsulation:
    • BaseController class handles common responses (success/error).
    • Services (e.g., EventService, BookingService) hide business logic from Controllers.
  2. Inheritance:
    • BaseUser -> Organizer, Attendee, Admin. All share basic properties but have different implementations of getPermissions().
    • BaseEvent -> OnlineEvent (has meetingLink), VenueEvent (has address, mapLocation). They implement abstract methods like getDetails().
  3. Abstraction:
    • IPaymentGateway interface (e.g., MockStripe, MockPayPal) to process payments without coupling to a specific provider.
    • Ticket interface defining common fields (price, label, type) with specific concrete classes.

Design Patterns

  • Factory Pattern: To create Ticket objects (VIP vs Regular) based on user selection.
  • Singleton Pattern: For the Database Connection instance.