Skip to content

Latest commit

 

History

History
233 lines (187 loc) · 6.49 KB

File metadata and controls

233 lines (187 loc) · 6.49 KB

PulseEvents

A modern, full-stack event management platform built with a microservices architecture. PulseEvents enables users to browse, book, and manage events with a robust, scalable, and secure system.


Table of Contents


Overview

PulseEvents is a microservices-based event management system featuring:

  • Frontend: Modern React/TypeScript SPA with Tailwind CSS
  • API Gateway: Central entry point for all backend APIs
  • Authentication Service: Secure user registration, login, and JWT-based authentication
  • Event Service: Comprehensive event CRUD, search, and attendee management
  • Booking Service: Event booking and user booking management
  • Config Server: Centralized configuration for all services
  • Discovery Server: Eureka-based service discovery

Architecture

sequenceDiagram
    participant User
    participant Frontend
    participant API Gateway
    participant Auth Service
    participant Event Service
    participant Booking Service
    participant Config Server
    participant Discovery Server
    User->>Frontend: Uses web UI
    Frontend->>API Gateway: REST API calls
    API Gateway->>Auth Service: /auth/*
    API Gateway->>Event Service: /events/*
    API Gateway->>Booking Service: /bookings/*
    API Gateway->>Discovery Server: Service lookup
    All Services->>Config Server: Load config
    All Services->>Discovery Server: Register/discover

Features

  • User Authentication: Secure registration, login, JWT tokens, role-based access
  • Event Management: Create, update, delete, search, and filter events
  • Booking System: Book events, view/cancel bookings, admin/organizer controls
  • Admin Panel: Manage events and users (admin role)
  • Responsive UI: Light/dark mode, mobile-friendly, i18n (English/Arabic)
  • Microservices: Each service is independently deployable and scalable
  • API Gateway: Unified entry point, CORS, security, and routing
  • Centralized Config: Dynamic config via Spring Cloud Config
  • Service Discovery: Eureka for dynamic service registration
  • Dockerized: Full Docker and Docker Compose support

Technology Stack

Frontend:

  • React 18, TypeScript, Vite, Tailwind CSS, React Router, i18next, Axios

Backend:

  • Java 17, Spring Boot 3, Spring Cloud, Spring Data JPA, PostgreSQL, Maven
  • Microservices: Authentication, Event, Booking, API Gateway, Config Server, Discovery Server

DevOps:

  • Docker, Docker Compose, Flyway (DB migrations), Nginx (frontend)

Project Structure

PulseEvents/
├── frontend/                # React SPA (Vite, Tailwind)
├── backend/
│   ├── api-gateway-service/
│   ├── authentication-service/
│   ├── booking-service/
│   ├── event-service/
│   ├── config-server-service/
│   └── discovery-server-service/
├── scripts/                 # Deployment and DB scripts
├── docker-compose.yml       # Multi-service orchestration
└── ...

Getting Started

Prerequisites

  • Node.js 18+, npm 9+ or yarn 1.22+
  • Java 17+
  • Docker & Docker Compose

1. Clone the Repository

git clone <repository-url>
cd PulseEvents

2. Local Development (Recommended)

  • Start infrastructure:
    docker-compose up -d postgres config-server discovery-server
  • Start backend services (in separate terminals):
    cd backend/authentication-service && ./mvnw spring-boot:run
    cd backend/event-service && ./mvnw spring-boot:run
    cd backend/booking-service && ./mvnw spring-boot:run
    cd backend/api-gateway-service && ./mvnw spring-boot:run
  • Start frontend:
    cd frontend
    npm install
    npm run dev
    # or
    yarn install
    yarn dev
  • Access the app at http://localhost:5173

3. Full Stack with Docker Compose

docker-compose up --build

Environment Variables

Copy backend/env.template to .env and fill in values:

# Common
EUREKA_URI=http://localhost:8761/eureka/
DB_HOST=localhost
DB_PORT=5432
DB_USERNAME=postgres
DB_PASSWORD=your_password
EVENT_DB_NAME=eventdb
BOOKING_DB_NAME=bookingdb
AUTH_DB_NAME=auth_db
JWT_SECRET=your-very-long-random-secret
SPRING_PROFILES_ACTIVE=dev

Frontend requires:

VITE_API_URL=http://localhost:8080

Deployment

  • Docker Compose: Orchestrates all services and database
  • Flyway: Handles DB migrations automatically on service startup
  • Production: Use Docker images from Docker Hub or build your own

Quick Start

docker-compose up -d

Access Points


API Highlights

Authentication Service

  • POST /auth/register — Register new user
  • POST /auth/login — Login, returns JWT
  • POST /auth/validate — Validate JWT
  • POST /auth/user-info — Get user info from JWT

Event Service

  • POST /events — Create event (admin/organizer)
  • GET /events — List all events
  • GET /events/{id} — Event details
  • PUT /events/{id} — Update event
  • DELETE /events/{id} — Delete event (admin)
  • PATCH /events/{id}/cancel — Cancel event
  • POST /events/{id}/attendees — Join event
  • DELETE /events/{id}/attendees — Leave event
  • GET /events/search — Search/filter events

Booking Service

  • POST /bookings — Book an event
  • GET /bookings/my-bookings — My bookings
  • GET /bookings/event/{eventId} — Bookings for event (organizer/admin)
  • GET /bookings — All bookings (admin)
  • DELETE /bookings/{id} — Cancel booking

Contributing

Contributions are welcome! Please open issues and pull requests. For major changes, discuss them first.


License

This project is licensed under the MIT License.