The home for competitive debate. Discover upcoming debate tournaments from around the world with a modern, intuitive interface.
Live at: debatecomps.com
DebateComps is a curated tournament discovery platform for the global debate community. Whether you're a debater looking for your next competition, an adjudicator searching for judging opportunities, or an organizer promoting your tournament, DebateComps makes it easy to find and share debate competitions.
Data is sourced directly from the Global Debating Spreadsheet, ensuring tournaments are current and community-managed.
- π Global Tournament Directory - Browse tournaments from around the world
- π Dual View Modes - Switch between grid and calendar views
- π Advanced Filtering - Filter by location (online/in-person), format, team cap, and more
- π Live Data - Auto-updates from the Global Debating Spreadsheet
- πΎ Save Tournaments - Bookmark tournaments you're interested in
- π Dark Mode - Complete dark mode support with theme persistence
- β‘ Smart Caching - 1-hour server caching for optimal performance
- π± Mobile Responsive - Fully responsive design for all devices
- π Manual Refresh - One-click refresh to bypass cache when needed
- Google Sheets Integration - Tournament data lives in the Global Debating Spreadsheet
- API Fetch - The app fetches data via Google Sheets API (
/api/tournaments) - Smart Caching - Responses are cached for 1 hour to reduce API calls
- Display - Data is rendered in grid or calendar format with filters applied
To add a tournament to DebateComps:
-
Open the Global Debating Spreadsheet
-
Find the appropriate year tab (dynamically fetches current and next year)
-
Fill in tournament information following the existing format:
- Competition Name
- Online/In Person
- Format (e.g., BP, AP)
- Date
- Timezone
- Registration Link
- Judge Rule
- Fees
- Profit Status
- Team Cap
- Info Link
-
Click the refresh button on DebateComps to see your tournament immediately (or wait up to 1 hour)
- Default: Data is cached for 1 hour on the server
- Manual Refresh: Click the refresh icon to bypass cache and fetch latest data immediately
- Stale-While-Revalidate: After 1 hour, the cache refreshes in the background for seamless updates
- Framework: Next.js 15 with React 19
- Styling: Tailwind CSS 4
- UI Components: Radix UI
- Calendar: React Big Calendar
- Icons: Lucide React
- Data Source: Google Sheets API
- Analytics: Vercel Analytics
- Node.js 18+
- npm or yarn
# Clone the repository
git clone https://github.com/yourusername/debatecomps.git
cd debatecomps
# Install dependencies
npm install
# Set up environment variables
cp .env.example .env.local
# Add your SHEETS_API_KEY to .env.local# Start development server with Turbopack
npm run dev
# Open http://localhost:3000 in your browsernpm run build
npm start# Lint and format code
npm run lint
npm run formatsrc/
βββ app/
β βββ page.tsx # Home page with grid/calendar views
β βββ about/page.tsx # About page
β βββ saved/page.tsx # Saved tournaments page
β βββ api/tournaments/route.ts # Google Sheets API integration
β βββ layout.tsx # Root layout with theme provider
β βββ globals.css # Global styles and theme
βββ components/
β βββ custom/
β β βββ site-header.tsx # Header with logo and nav
β β βββ footer.tsx # Footer
β β βββ search-filter-bar.tsx # Search and filter controls
β β βββ event-card.tsx # Tournament card component
β β βββ calendar-view.tsx # Calendar view component
β β βββ theme-toggle.tsx # Dark mode toggle
β βββ ui/ # Radix UI component wrappers
βββ lib/
β βββ theme-provider.tsx # Dark mode context and logic
β βββ utils.ts # Utility functions
β βββ ... # Other utilities
βββ types/
βββ tournament.ts # TypeScript types
SHEETS_API_KEY=your_google_sheets_api_key
DebateComps is built by and for the debate community. Contributions are welcome!
- Found a bug? Open an issue
- Have a feature idea? Start a discussion
- Want to improve the code? Submit a pull request
Browse tournaments in a card-based grid with essential information at a glance. Click any tournament card to see full details.
Visualize tournaments on a calendar. Available in month, week, day, and agenda views. Color-coded by type (online/in-person).
- Search by tournament name or location
- Filter by format (BP, AP, etc.)
- Filter by type (online/in-person)
- Filter by team capacity range
Bookmark tournaments for later. Your saved tournaments are stored locally in your browser.
Toggle between light and dark themes. Your preference is saved automatically.
- Smart Caching: 1-hour server-side caching reduces API calls
- Optimized Images: Next.js Image optimization for logo and assets
- Vercel Deployment: Global CDN for fast content delivery
- Code Splitting: Automatic code splitting for optimal page loads
- Chrome/Edge (latest)
- Firefox (latest)
- Safari (latest)
- Mobile browsers (iOS Safari, Chrome Mobile)
This project is open source and available under the MIT License.
- Creators: Alex Zhu, Aditya Keerthi, Barton Lu
- Data Management: Senkai Hsia and Claire Beamer (Global Debating Spreadsheet)
- Community: The global debate community for tournament data and feedback
For questions, issues, or suggestions:
- Open an issue on GitHub
- Contact the team through probablyalex.com
- Reach out on social media
Made with β€οΈ for the debate community