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.
- Overview
- Architecture
- Features
- Technology Stack
- Project Structure
- Getting Started
- Environment Variables
- Deployment
- API Highlights
- Contributing
- License
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
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
- 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
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)
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
└── ...
- Node.js 18+, npm 9+ or yarn 1.22+
- Java 17+
- Docker & Docker Compose
git clone <repository-url>
cd PulseEvents- 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
docker-compose up --build- Frontend: http://localhost:3000
- API Gateway: http://localhost:8080
- Eureka Dashboard: http://localhost:8761
- Config Server: http://localhost:8888
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=devFrontend requires:
VITE_API_URL=http://localhost:8080- 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
docker-compose up -d- Frontend: http://localhost:3000
- API Gateway: http://localhost:8080
- Eureka: http://localhost:8761
- Config Server: http://localhost:8888
POST /auth/register— Register new userPOST /auth/login— Login, returns JWTPOST /auth/validate— Validate JWTPOST /auth/user-info— Get user info from JWT
POST /events— Create event (admin/organizer)GET /events— List all eventsGET /events/{id}— Event detailsPUT /events/{id}— Update eventDELETE /events/{id}— Delete event (admin)PATCH /events/{id}/cancel— Cancel eventPOST /events/{id}/attendees— Join eventDELETE /events/{id}/attendees— Leave eventGET /events/search— Search/filter events
POST /bookings— Book an eventGET /bookings/my-bookings— My bookingsGET /bookings/event/{eventId}— Bookings for event (organizer/admin)GET /bookings— All bookings (admin)DELETE /bookings/{id}— Cancel booking
Contributions are welcome! Please open issues and pull requests. For major changes, discuss them first.
This project is licensed under the MIT License.