Skip to content

shaishab316/eventivate

Repository files navigation

image

Comprehensive Event Management Platform

Node.js TypeScript PostgreSQL Redis Docker Stripe Socket.io

From booking request to payout — fully automated.


Overview

Eventivate is a production-grade event management platform that connects artists, agents, venues, and organizers in one unified system. It handles the full event lifecycle — booking negotiations, ticket sales, real-time messaging, and automated Stripe payouts — across four distinct user roles.


Architecture

src/
├── modules/<feature>/
│   ├── <feature>.validation.ts     # Zod input schemas
│   ├── <feature>.interface.ts      # TypeScript types
│   ├── <feature>.service.ts        # Business logic & DB queries
│   ├── <feature>.controller.ts     # catchAsync request handlers
│   └── <feature>.route.ts          # Express router + middleware chain
│
├── middlewares/
│   ├── auth.middleware.ts           # JWT verification + RBAC
│   ├── capture.ts                   # Multer file upload handler
│   └── purifyRequest.ts            # Input sanitization
│
├── jobs/
│   ├── email.queue.ts               # OTP and password reset emails
│   ├── fileDelete.queue.ts          # Async media cleanup
│   ├── stripeConnect.queue.ts       # Stripe Connect onboarding
│   ├── withdrawal.queue.ts          # Payout processing
│   └── ticketExpiry.queue.ts        # Unpaid reservation cleanup
│
└── utils/
    ├── catchAsync.ts
    ├── ServerError.ts
    └── redis.client.ts

Every module follows a strict 5-layer pattern: validation → interface → service → controller → route


Features

Core

  • 👥 Multi-role system — Artist, Agent, Venue, Organizer with scoped permissions
  • 🎭 Full event lifecycle — Draft → Published → Completed → Timeout
  • 💼 Offer-based booking system with date conflict detection
  • 💳 Stripe Checkout + Stripe Connect with automated commission splits
  • 🎟️ Concurrency-safe ticket reservation with 5-minute hold and QR code generation
  • 💬 Real-time private messaging via Socket.IO
  • 📊 Per-role analytics dashboards — revenue, bookings, and monthly trends

Technical

  • ⚡ Bull queue for async jobs — emails, payouts, file cleanup, ticket expiry
  • 🔒 JWT access + refresh token rotation
  • 🛡️ Zod validation on all inputs
  • 🔐 bcrypt password hashing + OTP account verification
  • 🐳 Fully containerized with Docker Compose
  • 🚀 GitHub Actions CI/CD pipeline

Tech Stack

Layer Technology
Runtime Node.js 20+, TypeScript (strict)
Framework Express.js
Database PostgreSQL + Prisma ORM
Cache Redis
Real-time Socket.IO
Queue Bull
Payments Stripe Checkout, Stripe Connect
Validation Zod
Auth JWT (access + refresh rotation), bcrypt
Containerization Docker + Docker Compose
CI/CD GitHub Actions

Quick Start

# Clone the repository
git clone https://github.com/shaishab316/eventivate.git
cd eventivate

# Install dependencies
npm install

# Configure environment
npm run seed-env

# Run migrations
npx prisma migrate dev

# Start development server
npm run dev

Docker

docker-compose up --build

Services: API 3000, PostgreSQL 5432, Redis 6379.


Author

Shaishab Chandra Shil
Self-taught Backend Developer · Dhaka, Bangladesh

GitHub LinkedIn


Built with persistence, raw documentation, and zero tutorials. 🔥

About

Eventivate is a production-grade event management platform that connects artists, agents, venues, and organizers in one unified system.

Topics

Resources

License

Security policy

Stars

Watchers

Forks

Contributors