Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/Edfermachado/proyectoSistemas/llms.txt

Use this file to discover all available pages before exploring further.

UniEvents is a multi-tenant SaaS platform built for universities that need to manage events across multiple faculties from a single, unified system. Each faculty operates as an isolated tenant with its own administrators, event spaces, and published events, while a global super administrator maintains full oversight of the entire platform. Students and external attendees can browse public events, register with a QR-coded ticket, and complete payment flows — all without leaving the platform.

Who Is UniEvents For?

UniEvents serves three distinct user personas, each with a scoped set of responsibilities and dashboard access.
PersonaRole in SystemDashboard
Super AdminManages the entire platform: universities, tenants (faculties), categories, and global settings/admin
Faculty Admin (tenant_admin / event_manager)Creates and manages events, spaces, attendees, and payment verification within their faculty/faculty-admin
End UserBrowses public events, registers, uploads payment proof, and receives a scannable QR ticket/ (public app)
An additional Access Control role (access_control) exists for staff who only need to scan QR codes at event entrances — they have a restricted view inside the faculty dashboard.

Multi-Tenant Hierarchy

UniEvents organizes data in a three-level hierarchy that keeps each faculty’s events, spaces, and users fully isolated from one another.
University (e.g. "Universidad Central de Tecnología")
└── Tenant / Faculty (e.g. "Facultad de Ingeniería")
    ├── Spaces      (e.g. "Auditorio Principal Tech")
    ├── Events      (e.g. "Expo de Ingeniería 2026")
    │   └── Attendees → QR Tickets → Scan Logs
    └── Users       (tenant_admin, event_manager, access_control)
A university can have many tenants (faculties). A tenant owns its own spaces, events, and staff users. The super admin is the only user with a null tenantId, giving them cross-tenant visibility.

Key Capabilities

Multi-Tenant Event Publishing

Faculty admins create and manage events with title, description, date, duration, capacity, price, visibility, and IP-protection settings — all scoped to their tenant.

QR Ticket System

Each registered attendee receives a unique UUID ticket token rendered as a QR code. Staff scan tickets at the entrance and scan attempts are logged in real time via the scan_logs table.

Payment Verification

Paid events support a manual payment flow: attendees upload a payment screenshot, admins review and verify it, and the registration status advances from pago_pendienteconfirmado.

Space Conflict Detection

The EventsService automatically checks for scheduling conflicts before creating or updating an event, ensuring no two events can be booked in the same space at overlapping times.

Role-Based Access Control

JWT session cookies carry the user’s role and tenantId. Middleware and server-side guards enforce access to each dashboard route based on the authenticated session.

Supabase Storage Integration

Event cover images and payment screenshots are uploaded to Supabase Storage (buckets events and payments), processed by sharp to WebP format, with an automatic local filesystem fallback when Supabase is not configured.

Event Request System

Attendees and organizers can submit structured requests against an event — including academic support, sponsorship, press coverage, and broadcast rights — stored as typed JSONB metadata.

Seed & Demo Data

A first-class seed script (pnpm seed) provisions two universities, three faculties, demo spaces, eight sample events, and five ready-to-use test accounts so you can explore every role immediately after setup.

Technology Stack

UniEvents is built on a modern, fully-typed TypeScript stack:
  • Next.js 16 (App Router) — server components, server actions, and API routes
  • Drizzle ORM — type-safe SQL queries and schema-as-code migrations against PostgreSQL
  • PostgreSQL — primary relational database (default: local Supabase Postgres on port 54322)
  • Supabase Storage — managed object storage for images and file uploads
  • jose — JWT signing and verification for HTTP-only session cookies
  • bcryptjs — password hashing
  • sharp — server-side image resizing and WebP conversion
  • Zod — runtime schema validation for all form inputs and API payloads
  • qrcode.react — client-side QR code rendering for attendee tickets
  • html5-qrcode — browser-based QR code scanner for the access-control role
  • Tailwind CSS v4 — utility-first styling

Explore Further

Quickstart

Clone the repo, configure environment variables, run migrations and seed data, and have a running local instance in under 10 minutes.

Architecture

Deep-dive into the multi-tenant data model, database schema, service layer pattern, App Router structure, authentication, and storage.

Build docs developers (and LLMs) love