Skip to content

uoft-webring/webring

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

511 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

UofT Webring

A webring for University of Toronto students to showcase their personal websites and connect with each other. Members' sites are linked in a ring — each portfolio points to the next, creating a community-driven network of student work.

uoftwebring.com

Features

  • Interactive 3D Ring — A Three.js visualization of the webring on the homepage
  • Student Directory — Browse all members and their portfolios
  • Profile Pages — Each member gets a page at /u/{slug} with their info, tags, and links
  • Ring Navigation — Visit any member's site and navigate to the next/previous member in the ring
  • Profile Customization — Set your tagline, avatar, skills/tags, program, and graduation year
  • UofT-only — Sign up requires a utoronto.ca email address

Tech Stack

Layer Technology
Framework Next.js 15 (App Router, Turbopack)
Language TypeScript
Styling Tailwind CSS 4
Database Supabase (Postgres + Auth + RLS)
3D Three.js, React Three Fiber
Storage AWS S3 + CloudFront
Validation Zod
Analytics PostHog
Hosting Vercel

Getting Started

# Install dependencies
npm install

# Start the dev server
npm run dev

# Run tests
npm test

You'll also need a local Supabase instance — see the Supabase quickstart for setup instructions.

Environment Variables

Copy .env.example (or ask a maintainer) to .env.local and fill in your Supabase and AWS credentials.

Project Structure

app/                    # Next.js App Router pages and API routes
  ├── auth/             # Authentication (OTP confirm, callback)
  ├── dashboard/        # User dashboard (edit profile, join, verify)
  ├── directory/        # Member directory
  ├── u/[slug]/         # Individual member pages
  └── actions.ts        # Server actions for profile queries
components/             # React components
  ├── Ring/             # 3D webring visualization
  ├── homeComponents/   # Landing page sections
  └── ui/               # Shared UI primitives (shadcn)
hooks/                  # Custom React hooks
providers/              # Context providers (auth, analytics)
utils/                  # Validation schemas, Supabase clients, helpers
__tests__/              # Unit tests (Vitest)

Testing

Tests use Vitest and cover validation schemas, URL safety checks, and utility functions.

npm test              # Single run
npm run test:watch    # Watch mode

Contributing

See CONTRIBUTING.md for development workflow, commit conventions, and PR guidelines.

License

This project is maintained by UofT students. See the repository for license details.

About

UofT's Webring

Topics

Resources

License

Contributing

Security policy

Stars

6 stars

Watchers

1 watching

Forks

Contributors