Skip to content

AadiXD200/sceneu-uoft-events

Repository files navigation

SceneU — UofT Campus Events Platform

A full-stack web application for discovering and managing events at the University of Toronto. Students browse and RSVP to events; clubs post and manage them. Built with a Supabase backend and an AI-powered event import feature.

Features

For students

  • Browse and search campus events with date and category filters
  • RSVP and bookmark events
  • Personal dashboard showing upcoming RSVPs and saved events
  • Profile and settings management

For clubs

  • Club dashboard to create, edit, and manage posted events
  • Smart Event Upload — paste raw text or upload an event flyer/image; GPT-4o-mini extracts structured event data (title, date, location, category) which you can review and confirm before posting
  • Event analytics and attendee tracking

Platform

  • Auth (sign up / sign in) powered by Supabase Auth
  • Campus map view
  • Featured events banner on landing page
  • Dark mode by default

Tech Stack

Layer Technology
Frontend React 18, TypeScript, Vite
Styling Tailwind CSS, shadcn/ui
Backend / DB Supabase (PostgreSQL + Row Level Security)
Auth Supabase Auth
AI OpenAI GPT-4o-mini via Supabase Edge Functions (Deno)
State / Data TanStack Query, React Hook Form, Zod

Project Structure

src/
├── components/        # Shared UI components (Header, EventCard, CampusMap, etc.)
│   ├── auth/          # AuthModal, UserButton
│   └── ui/            # shadcn/ui primitives
├── hooks/             # useAuth, useProfile, use-toast
├── integrations/
│   └── supabase/      # Generated client + DB types
├── pages/             # Route-level components
│   ├── Index.tsx              # Landing page
│   ├── ExploreEventsPageNew.tsx
│   ├── EventDetail.tsx
│   ├── ClubDashboardNew.tsx
│   ├── IndividualDashboard.tsx
│   └── ...
supabase/
├── functions/
│   └── ai-event-parser/   # Edge function: text/image → GPT-4o-mini → structured events
└── migrations/            # SQL schema migrations

Getting Started

Prerequisites

  • Node.js 18+
  • A Supabase project (free tier works)
  • OpenAI API key (for AI event parsing)

Setup

# 1. Clone
git clone https://github.com/AadiXD200/sceneu-uoft-events.git
cd sceneu-uoft-events

# 2. Install dependencies
npm install

# 3. Configure environment — copy the example and fill in your values
cp .env.example .env

# 4. Apply database migrations
# Run the SQL files in supabase/migrations/ against your Supabase project

# 5. Deploy the AI edge function
supabase functions deploy ai-event-parser
supabase secrets set OPENAI_API_KEY=sk-...

# 6. Start dev server
npm run dev

AI Event Import

Clubs can create events from unstructured content in two ways:

  1. Paste text — drop in an event description, email, or Instagram caption
  2. Upload an image — drag in a flyer or poster (PNG/JPG)

The edge function sends content to GPT-4o-mini which returns a structured JSON array of events. Clubs review and edit the parsed results before confirming, which writes them to the database.

About

UofT campus event discovery platform — club dashboards, RSVP/bookmarks, AI event import from flyers

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors