Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

90 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ₯ Melbourne University Ultimate Frisbee Club

GitHub Stars Forks Contributors Next.js TypeScript Tailwind CSS MongoDB Vercel MIT License

A modern, open-source web platform for ultimate frisbee clubs. Built for the Melbourne University Ultimate communityβ€”ready for your team!


🌍 Live Demo

Try it now: https://melb-uni-ultimate.vercel.app (Or deploy your own in minutes!)


✨ Why Star This Project?

  • Beautiful, modern UI with Tailwind, shadcn/ui, and Lucide icons
  • All-in-one club management: events, announcements, roster, alumni, tournaments, and more
  • Admin dashboard for easy content and user management
  • Feature-based architecture with clean, maintainable code organization
  • Open source, MIT licensed – ready for your club or team!
  • Easy deploy to Vercel (or your own server)
  • Active development & welcoming to contributors
  • Trusted by the Melbourne University Ultimate community

🎬 Demo

Home Page Admin Dashboard Events Calendar Video Management
Home Admin Events Video features coming soon!

πŸ† Who's Using This?

  • Melbourne University Ultimate Frisbee Club
  • Your club here! [Open a PR to add yours!]

πŸš€ Features

🏠 Public Pages

  • Home: Club intro, quick links, and highlights
  • About: Club history, values, and leadership
  • Announcements: News, updates, and important info
  • Events: Practice, tournament, and social event calendar
  • Videos: Training videos, game highlights, and educational content
  • Roster: Public team roster with gender/role badges and filters
  • Alumni: Connect with past members
  • Contact: Easy contact form for inquiries

πŸ”’ Member & Admin Features

  • Profile: Secure member profiles
  • Admin Dashboard: Manage announcements, events, videos, players, alumni, and tournaments in one place
  • Video Management: Upload, edit, and organize YouTube videos with role-based access control
  • CRUD: Create, edit, and delete content with confirmation dialogs and notifications
  • Role-based access: NextAuth.js with admin/member/public roles
  • Modern UI/UX: Responsive, accessible, and mobile-friendly

πŸ› οΈ Tech Stack

  • Next.js 15 (App Router, SSR, API routes)
  • TypeScript (strict types everywhere)
  • Tailwind CSS + shadcn/ui (customizable, beautiful components)
  • MongoDB + Mongoose (robust data models)
  • NextAuth.js (secure authentication)
  • Lucide React (iconography)
  • Jest (unit tests)
  • ESLint, Prettier, Husky (code quality)

⚑ Quick Start

git clone https://github.com/your-username/melb-uni-ultimate.git
cd melb-uni-ultimate
npm install
cp docs/env.template .env.local # or set up your own env vars
npm run dev
  • Visit http://localhost:3000
  • Sign up as a new user, or log in as admin (see docs/DEPLOYMENT_READY.md for admin setup)

πŸ—‚οΈ Project Structure

melb-uni-ultimate/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ app/                    # Next.js App Router
β”‚   β”‚   β”œβ”€β”€ (admin)/           # Admin pages (dashboard, update-role)
β”‚   β”‚   β”œβ”€β”€ (auth)/            # Authentication pages (login, signup, unauthorized)
β”‚   β”‚   β”œβ”€β”€ (dev)/             # Development pages (debug-session)
β”‚   β”‚   β”œβ”€β”€ (protected)/       # Protected member pages (profile)
β”‚   β”‚   β”œβ”€β”€ (public)/          # Public pages (about, announcements, events, videos, etc.)
β”‚   β”‚   β”œβ”€β”€ api/               # API routes
β”‚   β”‚   β”‚   β”œβ”€β”€ (admin)/       # Admin API routes (dashboard, debug, seed)
β”‚   β”‚   β”‚   β”œβ”€β”€ (auth)/        # Auth API routes (refresh, signup, update-role)
β”‚   β”‚   β”‚   β”œβ”€β”€ (protected)/   # Protected API routes (players, tournaments, user)
β”‚   β”‚   β”‚   β”œβ”€β”€ (public)/      # Public API routes (alumni, announcements, events, roster, videos)
β”‚   β”‚   β”‚   └── auth/          # NextAuth.js routes
β”‚   β”‚   β”œβ”€β”€ layout.tsx         # Root layout
β”‚   β”‚   β”œβ”€β”€ page.tsx           # Home page
β”‚   β”‚   └── providers.tsx      # App providers
β”‚   β”œβ”€β”€ features/              # Feature-based components and logic
β”‚   β”‚   β”œβ”€β”€ about/             # About page components
β”‚   β”‚   β”œβ”€β”€ admin/             # Admin dashboard components
β”‚   β”‚   β”œβ”€β”€ alumni/            # Alumni management components
β”‚   β”‚   β”œβ”€β”€ announcements/     # Announcements components
β”‚   β”‚   β”œβ”€β”€ events/            # Events components
β”‚   β”‚   β”œβ”€β”€ roster/            # Roster management components
β”‚   β”‚   β”œβ”€β”€ tournaments/       # Tournament management components
β”‚   β”‚   └── videos/            # Video management components
β”‚   β”œβ”€β”€ shared/                # Shared utilities and components
β”‚   β”‚   β”œβ”€β”€ components/        # Reusable UI components
β”‚   β”‚   β”œβ”€β”€ context/           # React contexts
β”‚   β”‚   β”œβ”€β”€ data/              # Static data
β”‚   β”‚   β”œβ”€β”€ hooks/             # Custom React hooks
β”‚   β”‚   β”œβ”€β”€ lib/               # Database, auth, and utility libraries
β”‚   β”‚   └── types/             # TypeScript type definitions
β”‚   β”œβ”€β”€ styles/                # Global styles
β”‚   └── middleware.ts          # Next.js middleware
β”œβ”€β”€ public/                    # Static assets
β”œβ”€β”€ docs/                      # Documentation and deployment guides
└── package.json               # Dependencies and scripts

πŸ—οΈ Architecture Highlights

  • Feature-based organization: Each feature (alumni, events, videos, etc.) has its own directory with components, hooks, and utilities
  • Route groups: Next.js route groups () organize pages by access level without affecting URLs
  • API organization: API routes grouped by access level for better security and organization
  • Shared resources: Common components, hooks, and utilities in shared/ directory
  • Type safety: Comprehensive TypeScript types for all data models and components

πŸŽ₯ Video Management System

  • YouTube Integration: Seamlessly embed and manage YouTube videos
  • Role-based Access: Control video visibility (public, user, admin)
  • Smart URL Parsing: Automatically extract YouTube IDs from URLs
  • Preview System: Instant video previews in admin interface
  • Search & Filtering: Find videos by title, description, or tags
  • Mobile Responsive: Optimized viewing experience on all devices
  • Dashboard Integration: Manage videos alongside other content in admin tabs

πŸ›‘οΈ Authentication & Roles

  • Public: Anyone can view public pages
  • Member: Authenticated users get access to protected features
  • Admin: Full access to dashboard and management tools

πŸ—οΈ Deployment

Vercel (Recommended)

  • Push to GitHub
  • Connect repo to Vercel
  • Set environment variables (see template)
  • Deploy!

Manual

npm run build
npm start

πŸ€” Why Ultimate Frisbee?

Ultimate Frisbee is a fast-growing, inclusive sport that builds teamwork, spirit, and fitness. This project aims to empower clubs and communities worldwide with modern toolsβ€”join us and help grow the sport!


πŸ§‘β€πŸ’» Contributing

We welcome contributions! To get started:

  1. Fork this repo
  2. Create a feature branch (git checkout -b feature/your-feature)
  3. Commit and push your changes
  4. Open a Pull Request

Please read docs/DEPLOYMENT_READY.md for workflow and code standards.

Development Workflow

  • Feature branches: All development happens on feature branches
  • Merge to develop: Features are merged into the develop branch first
  • Merge to main: After testing, develop is merged into main for production
  • Backup strategy: Main branch backups are created before major merges

πŸ’¬ Community & Support


πŸ™‹ FAQ

Q: Can I use this for my own club? A: Yes! It's open source and easy to customize.

Q: Is it free? A: 100% MIT licensed.

Q: How do I get admin access? A: See docs/DEPLOYMENT_READY.md.

Q: What's the new src/ directory structure? A: We've reorganized the codebase for better maintainability with feature-based architecture and clear separation of concerns.


πŸ™ Sponsors & Backers

Sponsor this project and help us grow Ultimate! Become a sponsor


πŸ“„ License

MIT License. See LICENSE.


⭐️ Star This Project!

If you like this project, please star it on GitHub and share it with your club or team. Your support helps us grow the Ultimate community!


Go Ultimate! πŸ₯

About

A modern web application for the Melbourne University Ultimate Frisbee Club, built with Next.js 15, TypeScript, and Tailwind CSS. This platform serves as the official website for club management, member communication, and community engagement.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages