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.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.
Who Is UniEvents For?
UniEvents serves three distinct user personas, each with a scoped set of responsibilities and dashboard access.| Persona | Role in System | Dashboard |
|---|---|---|
| Super Admin | Manages 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 User | Browses public events, registers, uploads payment proof, and receives a scannable QR ticket | / (public app) |
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.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_pendiente → confirmado.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.