Convert backends to Firebase and combine projects
This commit is contained in:
358
RIT-EVENT-MANAGEMENT--main/EMS_DOCUMENTATION.md
Normal file
358
RIT-EVENT-MANAGEMENT--main/EMS_DOCUMENTATION.md
Normal file
@@ -0,0 +1,358 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user