Complete technical specification, system architecture, tech stack, database schema, API design, security, compliance, and launch roadmap for India's next-generation event commerce platform.
INDTIX is Oye Imagine Private Limited's flagship B2C2B event commerce platform — purpose-built to dominate India's ₹12,000 Cr live events industry by 2027. We serve six distinct stakeholders through purpose-built portals, powered by AI, secured at enterprise grade, and built for the youth of India.
Democratise live event access for 500M+ Indians by eliminating friction from discovery to on-ground redemption, while giving every organiser and venue a world-class management platform.
Original, youth-forward, and trust-first. Not a clone of District or BookMyShow — INDTIX sets new standards with AI recommendations, deep seat mapping, NFC wristbands, and GST-accurate commerce.
| Portal | Primary Users | Core Functions | Auth Level | Status |
|---|---|---|---|---|
| Fan / Customer | General public, event-goers | Discovery, booking, seat selection, add-ons, tickets, profile | Email / OTP / Social | Live |
| Organiser | Event promoters, agencies | Event creation (with approval), ticket builder, seat map, analytics, settlements | KYC-verified only | Live |
| Venue Manager | Venue owners, managers | Venue listing, floor plan, availability, booking management, docs | KYC-verified only | Live |
| Event Manager | On-day ops team, producers | Run sheet, tasks, live check-in, wristband control, incidents, POS | Invited by organiser | Live |
| Super Admin / ERP | Oye Imagine team | All approvals, finance, CMS, BI, user management, security, config | Root / MFA required | Live |
| On-Ground Ops / POS | Gate staff, F&B cashiers | QR scanner, NFC scan, POS sales, LED band control, live stats | Event-scoped token | Live |
-- USERS TABLE
CREATE TABLE users (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
email TEXT UNIQUE NOT NULL,
phone TEXT UNIQUE,
full_name TEXT NOT NULL,
avatar_url TEXT,
role TEXT DEFAULT 'fan', -- fan | organiser | venue | event_manager | admin | ops
kyc_status TEXT DEFAULT 'pending', -- pending | submitted | verified | rejected
gst_number TEXT,
pan_number TEXT,
created_at TIMESTAMPTZ DEFAULT NOW(),
last_login TIMESTAMPTZ,
is_active BOOLEAN DEFAULT TRUE,
mfa_enabled BOOLEAN DEFAULT FALSE
);
-- EVENTS TABLE
CREATE TABLE events (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
organiser_id UUID REFERENCES users(id),
venue_id UUID REFERENCES venues(id),
title TEXT NOT NULL,
slug TEXT UNIQUE NOT NULL,
description TEXT,
category TEXT NOT NULL, -- music | comedy | sports | theatre | conference | etc.
subcategory TEXT,
event_date TIMESTAMPTZ NOT NULL,
end_date TIMESTAMPTZ,
city TEXT NOT NULL,
status TEXT DEFAULT 'draft', -- draft | pending_approval | approved | live | cancelled | completed
max_capacity INTEGER DEFAULT 1000,
ticket_cap_per_user INTEGER DEFAULT 10, -- default 10, overrideable
age_restriction TEXT DEFAULT 'all_ages',
banner_url TEXT,
gst_applicable BOOLEAN DEFAULT TRUE,
is_featured BOOLEAN DEFAULT FALSE,
created_at TIMESTAMPTZ DEFAULT NOW(),
approved_at TIMESTAMPTZ,
approved_by UUID REFERENCES users(id)
);
-- TICKET TYPES TABLE
CREATE TABLE ticket_types (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
event_id UUID REFERENCES events(id),
name TEXT NOT NULL, -- GA | Premium | VIP | etc.
description TEXT,
price DECIMAL(10,2) NOT NULL,
quantity INTEGER NOT NULL,
sold_count INTEGER DEFAULT 0,
sort_order INTEGER DEFAULT 0,
sale_start TIMESTAMPTZ,
sale_end TIMESTAMPTZ,
min_qty INTEGER DEFAULT 1,
max_qty INTEGER DEFAULT 10
);
-- BOOKINGS TABLE
CREATE TABLE bookings (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
booking_ref TEXT UNIQUE NOT NULL, -- BK + timestamp
user_id UUID REFERENCES users(id),
event_id UUID REFERENCES events(id),
status TEXT DEFAULT 'pending', -- pending | confirmed | cancelled | refunded
subtotal DECIMAL(10,2),
convenience_fee DECIMAL(10,2) DEFAULT 20,
gst_amount DECIMAL(10,2),
total_amount DECIMAL(10,2),
payment_method TEXT, -- upi | card | netbanking | wallet | emi
payment_gateway_id TEXT,
payment_status TEXT DEFAULT 'pending', -- pending | paid | failed | refunded
qr_code_data TEXT,
nfc_uid TEXT,
checkin_time TIMESTAMPTZ,
checkin_gate TEXT,
created_at TIMESTAMPTZ DEFAULT NOW(),
gst_invoice_no TEXT
);
-- VENUES TABLE
CREATE TABLE venues (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
owner_id UUID REFERENCES users(id),
name TEXT NOT NULL,
venue_type TEXT, -- indoor | outdoor | theatre | stadium
city TEXT NOT NULL,
address TEXT NOT NULL,
lat DECIMAL(10,8),
lng DECIMAL(11,8),
capacity INTEGER,
parking INTEGER,
status TEXT DEFAULT 'pending_approval',
gstin TEXT,
fire_noc_expiry DATE,
liquor_license BOOLEAN DEFAULT FALSE,
created_at TIMESTAMPTZ DEFAULT NOW()
);
All APIs use https://api.indtix.com/v1 as base URL. Authentication via Bearer JWT token.
| Method | Endpoint | Auth | Description | — | — | — | `).join('')}
|---|
—
© 2025 Oye Imagine Private Limited · CONFIDENTIAL · GSTIN: 27AABCO1234A1Z5
INDTIX Architecture Blueprint v1.0 · March 2025 · All rights reserved