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.
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
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
| 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 |
# 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 devdocker-compose up --buildServices: API 3000, PostgreSQL 5432, Redis 6379.
Shaishab Chandra Shil
Self-taught Backend Developer · Dhaka, Bangladesh
Built with persistence, raw documentation, and zero tutorials. 🔥
