# Rajalakshmi Institute of Technology (RIT) Events Hub — System Documentation Welcome to the comprehensive system documentation for the **RIT Events Hub**, a premium, high-fidelity academic event management, tracking, and auditing portal designed for Rajalakshmi Institute of Technology. This document provides a complete breakdown of the website's architecture, user roles, file structures, database schema, operational workflows, and features, accompanied by a detailed site map. --- ## 1. Overview & Core Mission The **RIT Events Hub** is an institutional web application designed to digitize and manage the entire lifecycle of college events. It replaces manual event scheduling, paper registrations, physical ticket checks, and fragmented certificate auditing with a unified, secure portal. ### Key Objectives: * **Decentralized Event Creation:** Enable faculty members to coordinate, schedule, and estimate budgets for departmental activities. * **Hierarchical Approvals:** Ensure events undergo appropriate institutional oversight through a HOD-to-Admin approval pipeline. * **Intelligent Resource Management:** Prevent venue conflicts and respect departmental/sectional seat quotas. * **Continuous Verification for Students:** Link student attendance, certificate uploads, and On-Duty (OD) approvals step-by-step. * **Security & Accessibility:** Provide separate, secure authentication models for internal students, external students, coordinators (faculty/HOD), and administrators. --- ## 2. Technology Stack & Integrations The platform is built using a modern, fast, and secure web development stack: | Layer | Technology | Description | | :--- | :--- | :--- | | **Frontend Framework** | React (v19), TypeScript, Vite | Multi-page single-page application (SPA) state-managed structure. | | **Styling & Icons** | Tailwind CSS (CDN), FontAwesome | Curated responsive styling using professional color palettes (Deep Blue `#004a99` and Academic Orange `#f97316`). | | **Backend & Auth** | Supabase (PostgreSQL, Storage, Auth) | Manages authentication, row-level security (RLS), document uploads, and database queries. | | **PDF Generation** | `jspdf` & `jspdf-autotable` | Compiles detailed, printable event proposals containing budget sheets, schedules, and resource details. | | **Layout Tools** | `html2canvas` | Used to capture ticket layouts for student downloads. | | **Fonts** | Google Fonts (Inter, Playfair Display) | Custom typography reflecting academic elegance. | --- ## 3. Database Schema The database relies on a PostgreSQL schema managed via Supabase. Below are the primary tables and relations: ### `Studentusers` (Internal Students) * `id` (UUID, Primary Key, references auth.users) * `name` (Text) * `email` (Text, Unique) * `reg_no` (Text, Unique) * `phone` (Text) * `department` (Text) * `year` (Text) * `section` (Text) * `college_name` (Text - Default: 'RAJALAKSHMI INSTITUTE OF TECHNOLOGY') * `updated_at` (Timestamp) ### `externalusers` (External Students) * `id` (UUID, Primary Key, references auth.users) * `name` (Text) * `email` (Text, Unique) * `reg_no` (Text) * `phone` (Text) * `department` (Text) * `year` (Text) * `section` (Text) * `college` (Text) * `college_location` (Text) * `gender` (Text) * `updated_at` (Timestamp) ### `Facultyusers` (Coordinators & HODs) * `id` (UUID, Primary Key, references auth.users) * `name` (Text) * `email` (Text, Unique) * `dept` (Text) * `role` (Text - e.g., 'Faculty', 'HOD', 'System Admin') * `phone` (Text) * `profile_photo` (Text - URL) * `updated_at` (Timestamp) ### `Adminusers` (Principal / Director / Administrators) * `id` (UUID, Primary Key, references auth.users) * `name` (Text) * `email` (Text, Unique) * `dept` (Text - 'Administration') * `updated_at` (Timestamp) ### `events` * `id` (UUID, Primary Key) * `title` (Text) * `location` (Text - Venue name) * `date` (Text - Standard format) * `category` (Text - 'TECHNICAL' \| 'NON-TECHNICAL' \| 'WORKSHOP' \| 'CENTRE-ACTIVITY') * `domain` (Text - references domains.name) * `pricing_type` (Text - 'FREE' \| 'PAID') * `coordinator` (Text - Coordinator Name) * `club` (Text) * `image` (Text - Supabase storage URL) * `status` (Text - 'Scheduled' \| 'Event Ongoing' \| 'Completed') * `max_participants` (Integer) * `registration_deadline` (Timestamp) * `duration_days` (Integer) * `event_summary` (Text) * `is_team_event` (Boolean) * `team_size_limit` (Integer) * `team_composition` (Text - 'MIXED' \| 'INTER_DEPT') * `participant_type` (Text - 'INTERNAL' \| 'EXTERNAL' \| 'BOTH') * `verification_status` (Text - 'PENDING' \| 'PENDING_HOD' \| 'PENDING_ADMIN' \| 'APPROVED' \| 'REJECTED') * `refreshment_expense` (Numeric) * `transportation_expense` (Numeric) * `session_coverage_fee` (Numeric) * `total_expense` (Numeric) * `conducting_dept` (Text) * `created_by` (UUID, references auth.users) * `request_by_faculty` (Timestamp) * `request_by_hod` (Timestamp) ### `event_schedule` (Session/Batch Slots) * `id` (UUID, Primary Key) * `event_id` (UUID, references events.id) * `day_idx` (Integer) * `batch_idx` (Integer) * `date` (Text) * `start_time` (Text) * `end_time` (Text) ### `resource_persons` (Guest Details) * `id` (UUID, Primary Key) * `event_id` (UUID, references events.id) * `day_idx` (Integer) * `batch_idx` (Integer) * `schedule_id` (UUID, references event_schedule.id) * `type` (Text - 'INTERNAL' \| 'EXTERNAL') * `name` (Text) * `dept` (Text) * `college_name` (Text) * `phone` (Text) * `email` (Text) ### `event_dept_limits` (Departmental Seat Allocations) * `id` (UUID, Primary Key) * `event_id` (UUID, references events.id) * `department` (Text) * `max_seats` (Integer) * `section_limits` (JSONB - Maps sections (A, B, C...) to integer limits) ### `registrations` (Student Bookings) * `id` (Text, Primary Key - Structured as `${userId}_${eventId}`) * `user_id` (UUID, references auth.users) * `event_id` (UUID, references events.id) * `user_email` (Text) * `user_name` (Text) * `reg_no` (Text) * `phone` (Text) * `gender` (Text) * `dept` (Text) * `section` (Text) * `year` (Text) * `college` (Text) * `payment_status` (Text - 'PENDING' \| 'COMPLETED') * `registered_at` (Timestamp) * `team_code` (Text) * `team_name` (Text) * `is_team_leader` (Boolean) * `certification_url` (Text) * `certification_status` (Text - 'PENDING' \| 'APPROVED' \| 'REJECTED') * `od_url` (Text) * `od` (Boolean - OD approval) ### `announcements` (Notice Board) * `id` (UUID, Primary Key) * `title` (Text) * `message` (Text) * `type` (Text - 'DELAY' \| 'INFO' \| 'URGENT' \| 'ENDED' \| 'ONGOING') * `event_id` (UUID, references events.id) * `timestamp` (Timestamp) * `expires_at` (Timestamp) ### `special_events` (Symposiums & External Links) * `id` (UUID, Primary Key) * `title` (Text) * `description` (Text) * `link` (Text) * `created_by` (UUID) * `is_active` (Boolean) * `verification_status` (Text - 'PENDING' \| 'APPROVED' \| 'REJECTED') ### `domains` * `id` (UUID, Primary Key) * `name` (Text, Unique) * `category` (Text) * `image` (Text) * `status` (Text - 'PENDING' \| 'APPROVED' \| 'REJECTED') * `description` (Text) --- ## 4. Operational Workflows & Key Logic ### A. Core Blockage (Preventing Registration Overhead) To maintain academic integrity, a student **cannot register for any new events** if they have an unfinalized event from the past. * **Condition:** If a student is registered for an event that has completed (`status === 'Completed'`), they must upload their certificate and obtain coordinator approval (`certification_status === 'APPROVED'`) and OD status before the system allows them to click "Register" on any future catalog events. ### B. Overlap Prevention (Intelligent Venue Booking) During event creation, coordinates are validated against active bookings: * **Conflict Condition:** When a coordinator selects a venue and date, the system queries existing approved/pending events. If another event occupies the same location, and the date ranges overlap based on the `durationDays`, that venue will be flagged as "Booked" or "Under Verification" in the dropdown, disabling selection. ### C. Quota-Constrained Bookings (Sectional & Departmental Caps) The event organizer can set constraints for RIT students: 1. **Department Limits:** Limits registration to `X` seats per department. 2. **Section Limits:** Further restricts seats down to individual sections (e.g., CSE section `A` gets 10 seats, section `B` gets 5 seats). 3. **Validation:** When a student attempts registration, the system evaluates their profile (department, section) and checks the respective quota counts in the `registrations` table. If the quota is full, booking is blocked. ### D. Team play Alliance (Team Registrations) * For team events, the first student registers and clicks "Form Team", which inserts a random 6-character alphanumeric code (`team_code`) and designates them as `is_team_leader`. * Subsequent students register for the event, click "Join Team", and input the code. The system verifies the team is not full (respecting `teamSizeLimit`) and matches `INTER_DEPT` composition requirements before assigning the `team_code` to their registration. ### E. Proposal PDF Compile Coordinators and Admin can generate a standardized PDF proposal containing: 1. General overview (departments, clubs, metadata). 2. Logistical details (location, dates, capacity, formats). 3. Day-by-day itineraries mapped to guest resource persons and timings. 4. Departmental seat allocation tables. 5. Financial projections (Refreshment + Transportation + Session Fees = Total projected budget). 6. Signature/Verification box showing HOD & Admin approval timestamps. --- ## 5. Portal Flow & Visual Site Map ### A. Navigational Site Map Structure ``` [WELCOME GATEWAY] │ ├── STUDENT PORTAL ────► [STUDENT AUTH (Login / Sign Up)] │ │ │ ├── HOME DASHBOARD (Notices, Banner, Stats) │ ├── EVENTS CATALOG (Details, Booking, Team Play) │ ├── REGISTRATIONS (QR Tickets, Track Progress) │ ├── STATUS TRACKER (Detailed Lifecycle Step Visualizer) │ └── PROFILE VIEW (Update Info, Uploaded Credentials) │ ├── FACULTY PORTAL ────► [COORDINATOR AUTH (Faculty / HOD)] │ │ │ ├── OVERVIEW (Metrics & Quick Gateways) │ ├── GENERATE EVENTS (Normal, Special, Domains) │ ├── CREATIONS REGISTRY (Manage Owned Events, Edit/Delete) │ ├── STATUS TRACKER (Verify Certificates, Audit ODs) │ ├── EVENT STATUS CONTROL (Announcements, Status Updates) │ ├── ATTENDANCE CONSOLE (Mark Student Attendance) │ ├── PARTICIPANTS console (Download Rosters) │ ├── PROFILE / LOG OUT │ └── HOD VERIFICATION (HOD only - Review Departmental Proposals) │ └── ADMIN PORTAL ──────► [ADMIN AUTH (Principal / Director / System Admin)] │ ├── OVERVIEW (System Metrics) ├── VERIFICATION QUEUE (Standard Events, Special Events, Domains) ├── USER MANAGEMENT CONSOLE (Update Profiles, Change Roles) ├── VENUE TRACKER CALENDAR (Visual Schedule & Collision Map) ├── STATUS TRACKER (Audit all college certifications) ├── GLOBAL NOTICES (Institutional notices) └── PROFILE / LOG OUT ``` ### B. High-Fidelity Mermaid Routing Diagram ```mermaid graph TD %% Base Gateways Welcome[Welcome Screen] -->|Select STUDENT| StudentAuth[Student Authentication] Welcome -->|Select COORDINATOR| FacultyAuth[Faculty / HOD Authentication] Welcome -->|Select ADMIN| AdminAuth[System Admin Authentication] %% Student Pathways StudentAuth -->|Authenticated| StudentDash[Student Dashboard] StudentDash --> SHome[Home Dashboard] StudentDash --> SEvents[Events Catalog] StudentDash --> SRegs[Registrations & QR Tickets] StudentDash --> STrack[Event Status Tracker] StudentDash --> SProfile[Student Profile] SEvents -->|Register & Form/Join Team| STrack SRegs -->|Verify Status / Upload Certificate| STrack %% Faculty Pathways FacultyAuth -->|Select Access Level| FacultyLvl{Access Level} FacultyLvl -->|Faculty| FacultyOverview[Faculty Dashboard] FacultyLvl -->|HOD| HODOverview[Faculty Dashboard + HOD Verification] FacultyOverview --> FHome[Overview & Statistics] FacultyOverview --> FCreate[Create Event Form] FacultyOverview --> FCreations[Manage Creations] FacultyOverview --> FTracker[Status Tracker - Certificate Audit] FacultyOverview --> FStatus[Event Status & Notices] FacultyOverview --> FAttendance[Attendance Console] FacultyOverview --> FParticipants[Participants Console] FacultyOverview --> FProfile[Faculty Profile] HODOverview --> HVerify[HOD Verification Panel] HVerify -->|Accept Department Request| FTracker HVerify -->|Reject Request| FCreations %% Admin Pathways AdminAuth --> AdminOverview[Admin Hub] AdminOverview --> AHome[System Overview] AdminOverview --> AVerifyQueue[Verification Queue - Events/Domains/Special] AdminOverview --> AUsers[User Management Console] AdminOverview --> AVenue[Venue Tracker Calendar] AdminOverview --> ATracker[Status Tracker] AdminOverview --> ANotices[Global Announcements] AdminOverview --> AProfile[Admin Profile] %% Cross-Links FCreations -->|Submit Proposal| HVerify HVerify -->|Send to Admin Queue| AVerifyQueue AVerifyQueue -->|Approve Event| SEvents ``` --- ## 6. Directory Layout & Components Guide ### File & Component Inventory * `App.tsx`: Main routing and authentication portal manager. Resolves session state, verifies metadata credentials, performs portal security checks, and loads global states. * `supabase.ts`: Supabase client configuration, administrative client helper, and helper functions for uploading media (images, certificates) directly to Supabase storage. * `types.ts`: TypeScript interfaces defining `Event`, `AppState`, `UserRole`, `StudentRequest`, `Ticket`, `ResourcePerson`, `EventSchedule`, `Announcement`, and `UserProfile`. * `constants.tsx`: Lists static categories, default college domain mappings, clubs, and default showcase events. * `utils/pdfGenerator.ts`: Handles compiling and exporting the official document proposals for verified events using `jspdf`. #### Components Directory (`/components/`): 1. `WelcomeScreen.tsx`: Entrance portal page displaying entry gates for students, faculty coordinators, and admins. 2. `LoginForm.tsx`: sliding dual-panel login and sign up form handling internal/external student data collection and role checks. 3. `Dashboard.tsx`: Base container routing student pages. 4. `HomeDashboard.tsx`: Displays active announcements, stats, special events, and links to catalogs. 5. `Hero.tsx`: Dynamic slide search and welcome banner for students. 6. `UpcomingEventsSlider.tsx`: Auto-scrolling showcase slider displaying upcoming events. 7. `AboutHubSection.tsx`: Summary presentation card describing the Events Hub platform. 8. `StatsSection.tsx`: Shows real-time totals of events, participants, and clubs. 9. `AboutSection.tsx`: Institutional overview details, college details, and guidelines. 10. `ContactSection.tsx`: Map coordinates, support addresses, and telephone details for college portals. 11. `EventList.tsx`: Searchable list displaying approved events by domain filter and category. 12. `EventCard.tsx`: Display card for events containing metadata triggers, register commands, and status links. 13. `RegistrationsView.tsx`: Displays registered ticket vouchers. Generates ticket QR code cards capturing registration details, allowing downloading ticket PDFs. 14. `StatusTrackerView.tsx`: visual step progress checker showing the student their certificate review, attendance logs, and OD approvals. 15. `ProfileView.tsx`: Form for students to edit profile settings and view academic transcripts. 16. `AdminLandingPage.tsx`: Base dashboard routing all Coordinator actions. 17. `CreateEventForm.tsx`: Multi-step event proposal compiler managing budgets, itineraries, and quotas. 18. `CreateSpecialEventsView.tsx`: Allows coordinators to publish external program links. 19. `CreateDomainView.tsx`: Form to submit new technical/non-technical domains for college audit. 20. `AdminStatusTrackerView.tsx`: Review board for coordinators/admins to check student certificate uploads, verify details, and approve OD statuses. 21. `AdminEventStatusView.tsx`: Controls notifications, notice updates, and events status transitions. 22. `FacultyParticipantsView.tsx`: Table listing students registered for an event with search/filter. 23. `FacultyAttendanceView.tsx`: Logs session-by-session student attendance check-ins. 24. `FacultyProfileView.tsx`: Base profile for faculty. 25. `FacultyDashboard.tsx`: Console routing Admin actions. 26. `UserManagementView.tsx`: Table displaying all registered users. Admins can edit profile metadata, manually add students, or alter roles. 27. `TicketVerificationView.tsx`: Camera/code scanner allowing organizers to scan student ticket QR codes and update status in real-time. 28. `Footer.tsx`: Institutional styled footer. 29. `PortalAnimation.tsx`: Page transitions and loading animation overlays.