Skip to content

Rifat-R/tickowt-preview

Repository files navigation

Tickowt - Event Management & Ticketing Platform (Snapshot as of October 2025)

Tickowt, a full-featured web application designed to streamline event management and ticket sales. It provides a robust platform for university societies and other organisations to create, manage, and analyse their events, while offering a seamless and secure ticket purchasing experience for attendees.

tickowt.mp4

Key Features

  • Full Event Lifecycle Management: Organisers can create, update, and manage events through a dedicated dashboard.
  • Secure Online Ticket Sales: Integration with Stripe for secure and reliable payment processing for paid events, plus support for free events.
  • Organiser Dashboard: A central hub for organisers to view event analytics, track ticket sales, and monitor attendee check-ins.
  • Robust Authentication: Supports both traditional email/password registration and social authentication (Google) using django-allauth.
  • Asynchronous Task Handling: Uses Celery and Redis to manage background tasks like sending ticket confirmation emails, handling expired events, ticket checkout sessions and more, ensuring a non-blocking user experience.
  • Modern Frontend Interactivity: HTMX for efficient partial page updates from the server and Alpine.js for lightweight client-side interactivity. I chose this stack to ensure a smooth user experience without the overhead of a full SPA framework like i.e. React.
  • Responsive Design: Tailwind CSS for the CSS framework and DaisyUI for the component library, the UI is fully responsive and works seamlessly across desktops and mobile devices.
  • QR Code Ticketing & Scanning: Each ticket generates a unique QR code. Organisers can use a built-in scanner on the platform to validate tickets and check in attendees in real-time.

Architecture & Technology Stack

Tickowt is built with a modern, scalable architecture that leverages the power of Django for the backend while incorporating modern frontend techniques for a dynamic user experience.

Backend

  • Framework: Django 5
  • Asynchronous Tasks: Celery with Redis as the message broker. Used for sending confirmation emails and other background processes.
  • Authentication: django-allauth for handling local and social (Google) authentication flows.
  • Deployment: The application is configured for production deployment using Gunicorn and hosted on a VPS using docker.
  • Error Monitoring: Integrated with Sentry for real-time error tracking and performance monitoring.

Frontend

  • Templating: Standard Django templates, supercharged with modern libraries.
  • Interactivity:
    • HTMX: For handling AJAX requests and smooth partial-page updates directly from the backend, minimising the need for complex client-side JavaScript.
    • Alpine.js: For lightweight, declarative client-side logic and UI interactions.
  • Styling: Tailwind CSS and DaisyUI for a utility-first, responsive design.
  • Asset Bundling: Webpack for compiling and bundling frontend assets.

Database

  • Database: PostgreSQL (via psycopg2), a robust and scalable open-source relational database.
  • S3 Storage: Using DigitalOcean Spaces (S3-compatible) for storing event images.

Payments

  • Payment Gateway: Stripe is used for all payment processing, including handling credit card payments and processing webhooks for events like successful payments.

Diagrams

Currently WIP!

1. System Architecture Diagram

WIP!

2. Request Flow for Ticket Purchase (Sequence Diagram)

WIP!

How it currently works

  • The sequence of interactions when a user clicks "Buy Ticket".
  • Browser: Makes a request to the Django backend.
  • Django View: Creates a Stripe Checkout Session.
  • Stripe API: Django redirects the user to Stripe.
  • Browser: User completes payment on Stripe's page.
  • Stripe Webhook: Stripe sends a checkout.session.completed event to your webhook endpoint.
  • Django Webhook View: Handles the webhook, validates the event, and creates the Order and Attendee records.
  • Celery: The view dispatches a task to Celery to send a confirmation email.
  • Celery Worker: Picks up the task and sends the email with the QR code ticket.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors